mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2025-01-18 23:46:28 +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 com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import gnu.trove.TIntCollection;
|
import gnu.trove.TIntCollection;
|
||||||
|
import gnu.trove.map.hash.THashMap;
|
||||||
import gnu.trove.set.hash.TIntHashSet;
|
import gnu.trove.set.hash.TIntHashSet;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -97,87 +98,116 @@ public class ClothingValidationManager {
|
|||||||
String[] newLookParts = look.split(Pattern.quote("."));
|
String[] newLookParts = look.split(Pattern.quote("."));
|
||||||
ArrayList<String> lookParts = new ArrayList<>();
|
ArrayList<String> lookParts = new ArrayList<>();
|
||||||
|
|
||||||
|
THashMap<String, String[]> parts = new THashMap<>();
|
||||||
|
|
||||||
|
// add mandatory settypes
|
||||||
for(String lookpart : newLookParts) {
|
for(String lookpart : newLookParts) {
|
||||||
if(lookpart.contains("-")) {
|
if (lookpart.contains("-")) {
|
||||||
try {
|
String[] data = lookpart.split(Pattern.quote("-"));
|
||||||
String[] data = lookpart.split(Pattern.quote("-"));
|
FiguredataSettype settype = FIGUREDATA.settypes.get(data[0]);
|
||||||
if (data.length > 1) {
|
if(settype != null) {
|
||||||
FiguredataSettype settype = FIGUREDATA.settypes.get(data[0]);
|
parts.put(data[0], data);
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
return String.join(".", lookParts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ public class FiguredataPalette {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public FiguredataPaletteColor getFirstNonHCColor() {
|
public FiguredataPaletteColor getFirstNonHCColor() {
|
||||||
for(FiguredataPaletteColor color : this.colors.descendingMap().values()) {
|
for(FiguredataPaletteColor color : this.colors.values()) {
|
||||||
if(!color.club && color.selectable)
|
if(!color.club && color.selectable)
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user