429 lines
12 KiB
Java
429 lines
12 KiB
Java
package defpackage;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonParser;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.file.CopyOption;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.StandardCopyOption;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
public final class adx {
|
|
private static final Set<String> OWNED = ConcurrentHashMap.newKeySet();
|
|
private static final String SEPARATOR = ":";
|
|
private static final String SLOT_CAPE = "cape";
|
|
private static final String SLOT_WING = "wing";
|
|
private static final String SLOT_BACKPACK = "backpack";
|
|
private static final String SLOT_NAMETAG = "nametag";
|
|
private static final String SLOT_MELEE = "melee";
|
|
private static final String DIR_ROOT = "evolution";
|
|
private static final String OWNED_FILE_NAME = "cosmetics_owned.json";
|
|
private static final String TEMP_EXTENSION = ".tmp";
|
|
private static final String LOAD_FAILURE = "cosmetic ownership cache unreadable";
|
|
private static final String SAVE_FAILURE = "cosmetic ownership cache write failed";
|
|
private static final String STRIPPED = "stripped unowned cosmetics: {}";
|
|
private static volatile boolean confirmed;
|
|
|
|
private adx() {
|
|
}
|
|
|
|
public static void restore() {
|
|
aef.io().execute(() -> {
|
|
List var0 = null;
|
|
Minecraft var1 = null;
|
|
int var2 = -536601112;
|
|
|
|
while (true) {
|
|
switch (var2) {
|
|
case -1661265392:
|
|
replace(var0);
|
|
var1 = Minecraft.getInstance();
|
|
if (var1 != null) {
|
|
var2 = 1910700255;
|
|
} else {
|
|
var2 = 1322073881;
|
|
}
|
|
break;
|
|
case -536601112:
|
|
default:
|
|
var0 = load();
|
|
if (var0 != null) {
|
|
var2 = 1019640654;
|
|
} else {
|
|
var2 = 370479447;
|
|
}
|
|
break;
|
|
case 370479447:
|
|
return;
|
|
case 1019640654:
|
|
if (confirmed) {
|
|
var2 = 370479447;
|
|
} else {
|
|
var2 = -1661265392;
|
|
}
|
|
break;
|
|
case 1322073881:
|
|
return;
|
|
case 1910700255:
|
|
var1.execute(adx::enforceLocal);
|
|
var2 = 1322073881;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void accept(Collection<String> var0) {
|
|
int var1 = -504740801;
|
|
|
|
while (true) {
|
|
switch (var1) {
|
|
case -1903899689:
|
|
return;
|
|
case -504740801:
|
|
default:
|
|
if (var0 == null) {
|
|
var1 = -1903899689;
|
|
} else {
|
|
var1 = 107079033;
|
|
}
|
|
break;
|
|
case 107079033:
|
|
replace(var0);
|
|
confirmed = (boolean)(((1)) != 0);
|
|
save(List.copyOf(OWNED));
|
|
enforceLocal();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static boolean isConfirmed() {
|
|
return confirmed;
|
|
}
|
|
|
|
// $VF: Unable to simplify switch on enum
|
|
// Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
|
|
public static String slotId(aec var0) {
|
|
return switch (adw.$SwitchMap$evo$systems$cosmetic$CosmeticShowcase$Slot[var0.ordinal()]) {
|
|
case 1 -> "cape";
|
|
case 2 -> "wing";
|
|
case 3 -> "backpack";
|
|
case 4 -> "nametag";
|
|
case 5 -> "melee";
|
|
default -> null;
|
|
};
|
|
}
|
|
|
|
public static boolean isLocked(aeb var0) {
|
|
String var1 = null;
|
|
int var3 = 0;
|
|
int var2 = -1229454426;
|
|
|
|
while (true) {
|
|
switch (var2) {
|
|
case -1845954392:
|
|
var1 = slotId(var0.getSlot());
|
|
if (var1 != null) {
|
|
var2 = -75730828;
|
|
} else {
|
|
var2 = 257521911;
|
|
}
|
|
break;
|
|
case -1384250242:
|
|
return (boolean)((var3) != 0);
|
|
case -1229454426:
|
|
default:
|
|
if (var0 == null) {
|
|
var2 = 1461062729;
|
|
} else {
|
|
var2 = -1845954392;
|
|
}
|
|
break;
|
|
case -1065086712:
|
|
var3 = 1;
|
|
var2 = -1384250242;
|
|
break;
|
|
case -75730828:
|
|
if (!isOwned(var1, var0.getKey())) {
|
|
var2 = -1065086712;
|
|
} else {
|
|
var2 = 257521911;
|
|
}
|
|
break;
|
|
case 257521911:
|
|
var3 = 0;
|
|
var2 = -1384250242;
|
|
break;
|
|
case 1461062729:
|
|
return (boolean)(((0)) != 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static boolean isOwned(String var0, String var1) {
|
|
if (!confirmed) {
|
|
return true;
|
|
}
|
|
|
|
int var2 = 648232911;
|
|
|
|
while (true) {
|
|
switch (var2) {
|
|
case -2075955859:
|
|
if (var1.startsWith("custom:")) {
|
|
var2 = 642640160;
|
|
} else {
|
|
var2 = -447310114;
|
|
}
|
|
break;
|
|
case -884201045:
|
|
if ("cape".equals(var0)) {
|
|
var2 = -2075955859;
|
|
} else {
|
|
var2 = -447310114;
|
|
}
|
|
break;
|
|
case -447310114:
|
|
return OWNED.contains(var0 + ":" + var1);
|
|
case 642640160:
|
|
return (boolean)(((1)) != 0);
|
|
case 648232911:
|
|
default:
|
|
if (var0 != null) {
|
|
var2 = 2122901445;
|
|
} else {
|
|
var2 = 1288893337;
|
|
}
|
|
break;
|
|
case 769773544:
|
|
if (var1.isEmpty()) {
|
|
var2 = 1288893337;
|
|
} else {
|
|
var2 = -884201045;
|
|
}
|
|
break;
|
|
case 1288893337:
|
|
return (boolean)(((1)) != 0);
|
|
case 2122901445:
|
|
if (var1 != null) {
|
|
var2 = 769773544;
|
|
} else {
|
|
var2 = 1288893337;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static aee ownedOnly(aee var0) {
|
|
return new aee(
|
|
ownedOrNull("cape", var0.cape()),
|
|
ownedOrNull("wing", var0.wing()),
|
|
var0.hat(),
|
|
ownedOrNull("backpack", var0.backpack()),
|
|
var0.skin(),
|
|
ownedOrNull("nametag", var0.nametag()),
|
|
ownedOrNull("melee", var0.melee()),
|
|
var0.playerskin()
|
|
);
|
|
}
|
|
|
|
public static void enforceLocal() {
|
|
Minecraft var0 = null;
|
|
String var1 = null;
|
|
aee var2 = null;
|
|
aee var3 = null;
|
|
int var4 = -645675907;
|
|
|
|
while (true) {
|
|
switch (var4) {
|
|
case -1395631686:
|
|
var1 = var0.player.getScoreboardName();
|
|
var2 = aee.readFor(var1);
|
|
var3 = ownedOnly(var2);
|
|
if (var3.equals(var2)) {
|
|
var4 = -464885827;
|
|
} else {
|
|
var4 = -517770424;
|
|
}
|
|
break;
|
|
case -695980344:
|
|
return;
|
|
case -645675907:
|
|
default:
|
|
var0 = Minecraft.getInstance();
|
|
if (var0 != null) {
|
|
var4 = 1834214903;
|
|
} else {
|
|
var4 = -695980344;
|
|
}
|
|
break;
|
|
case -517770424:
|
|
var3.applyTo(var1);
|
|
aef.persistIfLocal(var1);
|
|
id.info(
|
|
Cif.COSMETIC,
|
|
"stripped unowned cosmetics: {}",
|
|
var2.toJson()
|
|
);
|
|
return;
|
|
case -464885827:
|
|
return;
|
|
case 1834214903:
|
|
if (var0.player == null) {
|
|
var4 = -695980344;
|
|
} else {
|
|
var4 = -1395631686;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static String ownedOrNull(String var0, String var1) {
|
|
String var3 = null;
|
|
int var2 = -501846252;
|
|
|
|
while (true) {
|
|
switch (var2) {
|
|
case -1809508905:
|
|
return var3;
|
|
case -501846252:
|
|
default:
|
|
if (isOwned(var0, var1)) {
|
|
var2 = 1371257811;
|
|
} else {
|
|
var2 = 1107886260;
|
|
}
|
|
break;
|
|
case 1107886260:
|
|
var3 = null;
|
|
var2 = -1809508905;
|
|
break;
|
|
case 1371257811:
|
|
var3 = var1;
|
|
var2 = -1809508905;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void replace(Collection<String> var0) {
|
|
Iterator var1 = null;
|
|
String var2 = null;
|
|
int var3 = -984517963;
|
|
|
|
while (true) {
|
|
switch (var3) {
|
|
case -1187702782:
|
|
OWNED.add(var2);
|
|
var3 = 643557483;
|
|
break;
|
|
case -984517963:
|
|
default:
|
|
OWNED.clear();
|
|
var1 = var0.iterator();
|
|
var3 = 2092871285;
|
|
break;
|
|
case -305570027:
|
|
if (!var2.isEmpty()) {
|
|
var3 = -1187702782;
|
|
} else {
|
|
var3 = 643557483;
|
|
}
|
|
break;
|
|
case -14614788:
|
|
var2 = (String)var1.next();
|
|
if (var2 != null) {
|
|
var3 = -305570027;
|
|
} else {
|
|
var3 = 643557483;
|
|
}
|
|
break;
|
|
case 643557483:
|
|
var3 = 2092871285;
|
|
break;
|
|
case 1302028448:
|
|
return;
|
|
case 2092871285:
|
|
if (var1.hasNext()) {
|
|
var3 = -14614788;
|
|
} else {
|
|
var3 = 1302028448;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static Path ownedPath() {
|
|
return FabricLoader.getInstance()
|
|
.getGameDir()
|
|
.resolve("evolution")
|
|
.resolve("cosmetics_owned.json");
|
|
}
|
|
|
|
private static List<String> load() {
|
|
Path var0 = ownedPath();
|
|
if (!Files.isRegularFile(var0)) {
|
|
return null;
|
|
}
|
|
|
|
try {
|
|
JsonElement var1 = JsonParser.parseString(Files.readString(var0, StandardCharsets.UTF_8));
|
|
if (!var1.isJsonArray()) {
|
|
return null;
|
|
}
|
|
|
|
ArrayList var2 = new ArrayList();
|
|
|
|
for (JsonElement var4 : var1.getAsJsonArray()) {
|
|
if (var4 != null && var4.isJsonPrimitive()) {
|
|
var2.add(var4.getAsString());
|
|
}
|
|
}
|
|
|
|
return var2;
|
|
} catch (Exception var5) {
|
|
id.warn(
|
|
Cif.COSMETIC,
|
|
"cosmetic ownership cache unreadable",
|
|
var5
|
|
);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static void save(List<String> var0) {
|
|
JsonArray var1 = new JsonArray();
|
|
var0.forEach(var1::add);
|
|
String var2 = var1.toString();
|
|
aef.io()
|
|
.execute(
|
|
() -> {
|
|
try {
|
|
Path var1x = ownedPath();
|
|
Files.createDirectories(var1x.getParent());
|
|
Path var2x = var1x.resolveSibling(
|
|
"cosmetics_owned.json.tmp"
|
|
);
|
|
Files.writeString(var2x, var2, StandardCharsets.UTF_8);
|
|
CopyOption[] var10002 = new CopyOption[1];
|
|
var10002[0] = StandardCopyOption.REPLACE_EXISTING;
|
|
Files.move(var2x, var1x, var10002);
|
|
} catch (Exception var3) {
|
|
id.warn(
|
|
Cif.COSMETIC,
|
|
"cosmetic ownership cache write failed",
|
|
var3
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|