package defpackage; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashSet; import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; public class an implements SimpleSynchronousResourceReloadListener { public Identifier getFabricId() { return Identifier.fromNamespaceAndPath( "holdmyitems", "lua_animation_loader" ); } private String preprocessScript(String var1) { if (var1 != null && !var1.isEmpty()) { Pattern var2 = Pattern.compile( "global\\.(\\w+)\\s*=\\s*([^;]+)\\s*;" ); Pattern var3 = Pattern.compile("\\$\\{(\\w+)\\}"); HashSet var4 = new HashSet(); StringBuilder var5 = new StringBuilder(); boolean var6 = FabricLoader.getInstance() .isModLoaded("respackopts"); String[] var7 = var1.split("\\r?\\n"); int var8 = var7.length; for (int var9 = 0; var9 < var8; var9++) { String var10 = var7[var9]; if (!var6) { Matcher var11 = var3.matcher(var10); StringBuffer var12 = new StringBuffer(); while (var11.find()) { var11.appendReplacement(var12, "0"); } var11.appendTail(var12); var10 = var12.toString(); } Matcher var18 = var2.matcher(var10); StringBuffer var19 = new StringBuffer(); int var13; for (var13 = 0; var18.find(); var13 = (-635426822 | 635426823) + (-635426822 & 635426823)) { String var14 = var18.group((-1722895039 ^ 1722895040) + ((-1722895039 & 1722895040) << 1)); String var15 = var18.group(2).trim(); var4.add(var14); var18.appendReplacement(var19, "local " + var14 + " = registry:getOrDefault('" + var14 + "', " + var15 + ")"); } var18.appendTail(var19); if (var13 != 0) { var5.append(var19.toString()); } else { var5.append(var10); } var5.append("\n"); } if (!var4.isEmpty()) { var5.append("\n-- PERSIST VARIABLES\n"); for (String var17 : (Iterable)var4) { var5.append("registry:put('") .append(var17) .append("', ") .append(var17) .append(")\n"); } } return var5.toString(); } else { return var1; } } public void onResourceManagerReload(ResourceManager var1) { af.renderAsBlock.clear(); af.translateItem.clear(); af.registry.clear(); af.useDuration.clear(); af.applyBlockRotation.clear(); this.loadSingle(var1, "holdmyitems/hand_pose.lua", var0 -> { try { am.handScriptCache = new aj(var0); } catch (IOException var2) { throw new RuntimeException(var2); } }); this.loadSingle(var1, "holdmyitems/item_pose.lua", var0 -> { try { am.itemScriptCache = new aj(var0); } catch (IOException var2) { throw new RuntimeException(var2); } }); this.loadSingle(var1, "holdmyitems/hand_relative_pose.lua", var0 -> { try { am.handRelativeScriptCache = new aj(var0); } catch (IOException var2) { throw new RuntimeException(var2); } }); this.loadSingle(var1, "holdmyitems/item_model.lua", var0 -> { try { am.itemModelCache = new al(var0); } catch (IOException var2) { throw new RuntimeException(var2); } }); am.handAddonsCache = this.loadMultiple(var1, "holdmyitems/hand_addon.lua"); am.handRelativeAddonsCache = this.loadMultiple(var1, "holdmyitems/hand_relative_addon.lua"); am.itemAddonsCache = this.loadMultiple(var1, "holdmyitems/item_addon.lua"); am.itemModelAddonsCache = this.loadMultipleModel(var1, "holdmyitems/item_model_addon.lua"); } private void loadSingle(ResourceManager var1, String var2, Consumer var3) { Identifier var4 = Identifier.fromNamespaceAndPath("minecraft", var2); try { Resource var5 = (Resource)var1.getResource(var4).orElse(null); if (var5 == null) { var3.accept(""); return; } try (InputStream var6 = var5.open()) { String var7 = new String(var6.readAllBytes(), StandardCharsets.UTF_8); var7 = this.preprocessScript(var7); var3.accept(var7); } } catch (Exception var11) { var3.accept(""); var11.printStackTrace(); } } private ArrayList loadMultiple(ResourceManager var1, String var2) { Identifier var3 = Identifier.fromNamespaceAndPath("minecraft", var2); ArrayList var4 = new ArrayList(); try { for (Resource var6 : var1.getResourceStack(var3)) { try (InputStream var7 = var6.open()) { String var8 = new String(var7.readAllBytes(), StandardCharsets.UTF_8); var8 = this.preprocessScript(var8); var4.add(new aj(var8)); } } } catch (Exception var12) { var12.printStackTrace(); } return var4; } private ArrayList loadMultipleModel(ResourceManager var1, String var2) { Identifier var3 = Identifier.fromNamespaceAndPath("minecraft", var2); ArrayList var4 = new ArrayList(); try { for (Resource var6 : var1.getResourceStack(var3)) { try (InputStream var7 = var6.open()) { String var8 = new String(var7.readAllBytes(), StandardCharsets.UTF_8); var8 = this.preprocessScript(var8); var4.add(new al(var8)); } } } catch (Exception var12) { var12.printStackTrace(); } return var4; } }