mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2025-01-18 15:36:27 +01:00
parent
e817431176
commit
96ecbfa8c2
@ -2,6 +2,7 @@ package com.eu.habbo.habbohotel.users.clothingvalidation;
|
||||
|
||||
import com.eu.habbo.habbohotel.users.Habbo;
|
||||
import gnu.trove.TIntCollection;
|
||||
import gnu.trove.map.hash.THashMap;
|
||||
import gnu.trove.set.hash.TIntHashSet;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -97,87 +98,116 @@ public class ClothingValidationManager {
|
||||
String[] newLookParts = look.split(Pattern.quote("."));
|
||||
ArrayList<String> lookParts = new ArrayList<>();
|
||||
|
||||
THashMap<String, String[]> parts = new THashMap<>();
|
||||
|
||||
// add mandatory settypes
|
||||
for(String lookpart : newLookParts) {
|
||||
if(lookpart.contains("-")) {
|
||||
try {
|
||||
String[] data = lookpart.split(Pattern.quote("-"));
|
||||
if (data.length > 1) {
|
||||
FiguredataSettype settype = FIGUREDATA.settypes.get(data[0]);
|
||||
if (settype == null) {
|
||||
throw new Exception("Set type " + data[0] + " does not exist");
|
||||
}
|
||||
|
||||
FiguredataPalette palette = FIGUREDATA.palettes.get(settype.paletteId);
|
||||
if (palette == null) {
|
||||
throw new Exception("Palette " + settype.paletteId + " does not exist");
|
||||
}
|
||||
|
||||
int setId;
|
||||
FiguredataSettypeSet set;
|
||||
|
||||
setId = Integer.parseInt(data[1]);
|
||||
set = settype.getSet(setId);
|
||||
if (set == null)
|
||||
throw new Exception("Set " + setId + " does not exist in SetType");
|
||||
|
||||
if ((set.club && !isHC) || !set.selectable || (set.sellable && !ownedClothing.contains(set.id))) {
|
||||
if(gender.equalsIgnoreCase("M") && !isHC && !settype.mandatoryMale0)
|
||||
continue;
|
||||
|
||||
if(gender.equalsIgnoreCase("F") && !isHC && !settype.mandatoryFemale0)
|
||||
continue;
|
||||
|
||||
if(gender.equalsIgnoreCase("M") && isHC && !settype.mandatoryMale1)
|
||||
continue;
|
||||
|
||||
if(gender.equalsIgnoreCase("F") && isHC && !settype.mandatoryFemale1)
|
||||
continue;
|
||||
|
||||
set = settype.getFirstNonHCSetForGender(gender);
|
||||
setId = set.id;
|
||||
}
|
||||
|
||||
ArrayList<String> dataParts = new ArrayList<>();
|
||||
|
||||
int color1 = -1;
|
||||
int color2 = -1;
|
||||
|
||||
if (data.length > 2 && set.colorable) {
|
||||
color1 = Integer.parseInt(data[2]);
|
||||
FiguredataPaletteColor color = palette.getColor(color1);
|
||||
if (color == null || (color.club && !isHC)) {
|
||||
color1 = palette.getFirstNonHCColor().id;
|
||||
}
|
||||
}
|
||||
|
||||
if (data.length > 3 && set.colorable) {
|
||||
color2 = Integer.parseInt(data[3]);
|
||||
FiguredataPaletteColor color = palette.getColor(color2);
|
||||
if (color == null || (color.club && !isHC)) {
|
||||
color2 = palette.getFirstNonHCColor().id;
|
||||
}
|
||||
}
|
||||
|
||||
dataParts.add(settype.type);
|
||||
dataParts.add("" + setId);
|
||||
|
||||
if (color1 > -1) {
|
||||
dataParts.add("" + color1);
|
||||
}
|
||||
|
||||
if (color2 > -1) {
|
||||
dataParts.add("" + color2);
|
||||
}
|
||||
|
||||
lookParts.add(String.join("-", dataParts));
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
//habbo.alert(e.getMessage());
|
||||
if (lookpart.contains("-")) {
|
||||
String[] data = lookpart.split(Pattern.quote("-"));
|
||||
FiguredataSettype settype = FIGUREDATA.settypes.get(data[0]);
|
||||
if(settype != null) {
|
||||
parts.put(data[0], data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FIGUREDATA.settypes.entrySet().stream().filter(x -> !parts.containsKey(x.getKey())).forEach(x ->
|
||||
{
|
||||
FiguredataSettype settype = x.getValue();
|
||||
|
||||
if(gender.equalsIgnoreCase("M") && !isHC && !settype.mandatoryMale0)
|
||||
return;
|
||||
|
||||
if(gender.equalsIgnoreCase("F") && !isHC && !settype.mandatoryFemale0)
|
||||
return;
|
||||
|
||||
if(gender.equalsIgnoreCase("M") && isHC && !settype.mandatoryMale1)
|
||||
return;
|
||||
|
||||
if(gender.equalsIgnoreCase("F") && isHC && !settype.mandatoryFemale1)
|
||||
return;
|
||||
|
||||
parts.put(x.getKey(), new String[] { x.getKey() });
|
||||
});
|
||||
|
||||
|
||||
parts.forEach((key, data) -> {
|
||||
try {
|
||||
if (data.length >= 1) {
|
||||
FiguredataSettype settype = FIGUREDATA.settypes.get(data[0]);
|
||||
if (settype == null) {
|
||||
//throw new Exception("Set type " + data[0] + " does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
FiguredataPalette palette = FIGUREDATA.palettes.get(settype.paletteId);
|
||||
if (palette == null) {
|
||||
throw new Exception("Palette " + settype.paletteId + " does not exist");
|
||||
}
|
||||
|
||||
int setId;
|
||||
FiguredataSettypeSet set;
|
||||
|
||||
setId = Integer.parseInt(data.length >= 2 ? data[1] : "-1");
|
||||
set = settype.getSet(setId);
|
||||
|
||||
if (set == null || (set.club && !isHC) || !set.selectable || (set.sellable && !ownedClothing.contains(set.id)) || (!set.gender.equalsIgnoreCase("U") && !set.gender.equalsIgnoreCase(gender))) {
|
||||
if (gender.equalsIgnoreCase("M") && !isHC && !settype.mandatoryMale0)
|
||||
return;
|
||||
|
||||
if (gender.equalsIgnoreCase("F") && !isHC && !settype.mandatoryFemale0)
|
||||
return;
|
||||
|
||||
if (gender.equalsIgnoreCase("M") && isHC && !settype.mandatoryMale1)
|
||||
return;
|
||||
|
||||
if (gender.equalsIgnoreCase("F") && isHC && !settype.mandatoryFemale1)
|
||||
return;
|
||||
|
||||
set = settype.getFirstNonHCSetForGender(gender);
|
||||
setId = set.id;
|
||||
}
|
||||
|
||||
ArrayList<String> dataParts = new ArrayList<>();
|
||||
|
||||
int color1 = -1;
|
||||
int color2 = -1;
|
||||
|
||||
if (set.colorable) {
|
||||
color1 = data.length >= 3 ? Integer.parseInt(data[2]) : -1;
|
||||
FiguredataPaletteColor color = palette.getColor(color1);
|
||||
if (color == null || (color.club && !isHC)) {
|
||||
color1 = palette.getFirstNonHCColor().id;
|
||||
}
|
||||
}
|
||||
|
||||
if (data.length >= 4 && set.colorable) {
|
||||
color2 = Integer.parseInt(data[3]);
|
||||
FiguredataPaletteColor color = palette.getColor(color2);
|
||||
if (color == null || (color.club && !isHC)) {
|
||||
color2 = palette.getFirstNonHCColor().id;
|
||||
}
|
||||
}
|
||||
|
||||
dataParts.add(settype.type);
|
||||
dataParts.add("" + setId);
|
||||
|
||||
if (color1 > -1) {
|
||||
dataParts.add("" + color1);
|
||||
}
|
||||
|
||||
if (color2 > -1) {
|
||||
dataParts.add("" + color2);
|
||||
}
|
||||
|
||||
lookParts.add(String.join("-", dataParts));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//habbo.alert(e.getMessage());
|
||||
LOGGER.error("Error in clothing validation", e);
|
||||
}
|
||||
});
|
||||
|
||||
return String.join(".", lookParts);
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ public class FiguredataPalette {
|
||||
}
|
||||
|
||||
public FiguredataPaletteColor getFirstNonHCColor() {
|
||||
for(FiguredataPaletteColor color : this.colors.descendingMap().values()) {
|
||||
for(FiguredataPaletteColor color : this.colors.values()) {
|
||||
if(!color.club && color.selectable)
|
||||
return color;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user