diff --git a/common/src/main/java/net/mehvahdjukaar/every_compat/EveryCompat.java b/common/src/main/java/net/mehvahdjukaar/every_compat/EveryCompat.java index 9671c2846..3e0e4b4af 100644 --- a/common/src/main/java/net/mehvahdjukaar/every_compat/EveryCompat.java +++ b/common/src/main/java/net/mehvahdjukaar/every_compat/EveryCompat.java @@ -39,6 +39,7 @@ public abstract class EveryCompat { private static final List COMPAT_MODS = new ArrayList<>(); // all mod that EC directly or indirectly depends on private static final Set DEPENDENCIES = new HashSet<>(); + private static final Set ADDON_IDS = new HashSet<>(); //these are the names of the block types we add wooden variants for private static final Map, Set> TYPES_TO_CHILD_KEYS = new Object2ObjectOpenHashMap<>(); @@ -93,6 +94,7 @@ public static void addModule(CompatModule module) { for (var t : module.getAffectedTypes()) { addDynamicRegistrationFor(t); } + ADDON_IDS.add(module.getMyNamespace()); } } @@ -189,6 +191,10 @@ protected static void registerEntities(Registrator> event) { forAllModules(m -> m.registerEntities(event)); } + public static boolean isMyIdOrAddon(String namespace) { + return ADDON_IDS.contains(namespace); + } + public record CompatMod(String modId, List woodsFrom, List blocksFrom) { } diff --git a/common/src/main/java/net/mehvahdjukaar/every_compat/api/AbstractSimpleEntrySet.java b/common/src/main/java/net/mehvahdjukaar/every_compat/api/AbstractSimpleEntrySet.java index df23acaca..434f346e2 100644 --- a/common/src/main/java/net/mehvahdjukaar/every_compat/api/AbstractSimpleEntrySet.java +++ b/common/src/main/java/net/mehvahdjukaar/every_compat/api/AbstractSimpleEntrySet.java @@ -373,15 +373,16 @@ public void generateTextures(SimpleModule module, DynClientResourcesGenerator ha ResourceLocation oldTextureId = re.getKey(); String oldPath = oldTextureId.getPath(); - String newId = BlockTypeResTransformer.replaceTypeNoNamespace(oldPath, w, + String newPath = BlockTypeResTransformer.replaceTypeNoNamespace(oldPath, w, blockId, baseType.get().getTypeName()); + String newId = new ResourceLocation(blockId.getNamespace(), newPath).toString(); boolean isOnAtlas = true; for (var info : infoPerTextures.get(oldTextureId)) { if (info != null) { if (info.keepNamespace()) { - newId = oldTextureId.withPath(newId).toString(); + newId = oldTextureId.withPath(newPath).toString(); } isOnAtlas = info.onAtlas(); } @@ -389,7 +390,7 @@ public void generateTextures(SimpleModule module, DynClientResourcesGenerator ha Respriter respriter = re.getValue(); Supplier textureSupplier = () -> respriter.recolorWithAnimation(finalTargetPalette, finalAnimation); - textureSupplier = addTexturePostProcessing(w, newId, manager, textureSupplier); + textureSupplier = postProcessTexture(w, newId, manager, textureSupplier); handler.addTextureIfNotPresent(manager, newId, textureSupplier, isOnAtlas); } @@ -407,8 +408,8 @@ public void generateTextures(SimpleModule module, DynClientResourcesGenerator ha } //post process some textures. - public Supplier addTexturePostProcessing(T wood, String newId, ResourceManager manager, - Supplier textureSupplier) { + public Supplier postProcessTexture(T wood, String newId, ResourceManager manager, + Supplier textureSupplier) { if (wood.getClass() == WoodType.class) { var changed = SpriteHelper.maybePostProcessWoodTexture((WoodType) wood, newId, manager, textureSupplier); if (changed != null) { diff --git a/common/src/main/java/net/mehvahdjukaar/every_compat/dynamicpack/ClientDynamicResourcesHandler.java b/common/src/main/java/net/mehvahdjukaar/every_compat/dynamicpack/ClientDynamicResourcesHandler.java index d46c8a4d3..d1305be87 100644 --- a/common/src/main/java/net/mehvahdjukaar/every_compat/dynamicpack/ClientDynamicResourcesHandler.java +++ b/common/src/main/java/net/mehvahdjukaar/every_compat/dynamicpack/ClientDynamicResourcesHandler.java @@ -52,12 +52,12 @@ public void regenerateDynamicAssets(ResourceManager manager) { m.addDynamicClientResources(this, manager); } catch (Exception e) { getLogger().error("Failed to generate client dynamic assets for module {}:", m, e); - if(PlatHelper.isDev()) throw e; + if (PlatHelper.isDev()) throw e; } }); ExtraTextureGenerator.generateExtraTextures(this, manager); - + } } diff --git a/common/src/main/java/net/mehvahdjukaar/every_compat/mixins/LootTablesHackMixin.java b/common/src/main/java/net/mehvahdjukaar/every_compat/mixins/LootTablesHackMixin.java index 04d8a2398..f8f1c7bdd 100644 --- a/common/src/main/java/net/mehvahdjukaar/every_compat/mixins/LootTablesHackMixin.java +++ b/common/src/main/java/net/mehvahdjukaar/every_compat/mixins/LootTablesHackMixin.java @@ -24,15 +24,16 @@ @Mixin(BlockBehaviour.class) public abstract class LootTablesHackMixin { - @Shadow public abstract Item asItem(); + @Shadow + public abstract Item asItem(); @Inject(method = "getDrops", cancellable = true, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/storage/loot/LootTable;getRandomItems(Lnet/minecraft/world/level/storage/loot/LootParams;)Lit/unimi/dsi/fastutil/objects/ObjectArrayList;" ), locals = LocalCapture.CAPTURE_FAILEXCEPTION) public void addSimpleFastECdrops(BlockState state, LootParams.Builder builder, CallbackInfoReturnable> cir, ResourceLocation resId, LootParams lootParams, ServerLevel serverLevel, LootTable lootTable) { - if(lootTable == LootTable.EMPTY && Utils.getID(state.getBlock()).getNamespace().equals(EveryCompat.MOD_ID)){ - if(SimpleEntrySet.isSimpleDrop(state.getBlock())){ + if (lootTable == LootTable.EMPTY && EveryCompat.isMyIdOrAddon(Utils.getID(state.getBlock()).getNamespace())) { + if (SimpleEntrySet.isSimpleDrop(state.getBlock())) { cir.setReturnValue(ECPlatStuff.modifyLoot(resId, List.of(this.asItem().getDefaultInstance()), lootParams)); }