diff --git a/README.md b/README.md index b4128ce..c459fab 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ all arrows show their true selves ## Supporting Mod in Texturepacks -Adding support for this mod in your own Texturepack can easily be done by overwriting the textures in the `real_arrow_tip` namespace see [Textures](src/main/resources/assets/real_arrow_tip/textures) +Adding support for this mod in your own Texturepack can easily be done by overwriting the entries in the `real_arrow_tip` namespace see [Texturepack](src/main/resources/assets/real_arrow_tip) ## Supporting more Arrows This mod adds a new `real_arrow_tip:charge_type` for the crossbow and bow item. It sets the item identifier of the currently used arrow as its value, making it possible to support any arrow. -The texture pack needs to include the required arrow textures (see this mod’s resource pack for examples) and update `minecraft/items/bow.json` and `minecraft/items/crossbow.json` to reference the new textures. +The texture pack needs to include the required arrow textures (see this mod’s resource pack for examples) and update `real_arrow_tip/items/bow.json` and `real_arrow_tip/items/crossbow.json` to reference the new textures. To create these `.json` files, you can use `item-model-generator.py.` Simply add the new arrows, and the `.json` files will be generated. diff --git a/gradle.properties b/gradle.properties index 2d36106..cb84a1a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ minecraft_version=1.21.9 yarn_mappings=1.21.9+build.1 loader_version=0.17.2 # Mod Properties -mod_version=0.2.0+mc1.21.9 +mod_version=0.3.0+mc1.21.9 maven_group=tobinio archives_base_name=real-arrow-tip # Dependencies diff --git a/src/main/java/tobinio/realarrowtip/RealArrowTip.java b/src/main/java/tobinio/realarrowtip/RealArrowTip.java index f6b3679..ccf3495 100644 --- a/src/main/java/tobinio/realarrowtip/RealArrowTip.java +++ b/src/main/java/tobinio/realarrowtip/RealArrowTip.java @@ -14,7 +14,7 @@ import tobinio.realarrowtip.model.ChargeTypeProperty; import tobinio.realarrowtip.model.TintSource; public class RealArrowTip implements ClientModInitializer { - public static String modID = "real_arrow_tip"; + public static String MOD_ID = "real_arrow_tip"; public static final Logger LOGGER = LoggerFactory.getLogger("Real Arrow Tip"); @@ -25,7 +25,7 @@ public class RealArrowTip implements ClientModInitializer { } public static Identifier id(String path) { - return Identifier.of(modID, path); + return Identifier.of(MOD_ID, path); } public static int getColorFromStack(ItemStack stack) { diff --git a/src/main/java/tobinio/realarrowtip/mixin/ItemAssetsLoaderMixin.java b/src/main/java/tobinio/realarrowtip/mixin/ItemAssetsLoaderMixin.java new file mode 100644 index 0000000..5a8b5f3 --- /dev/null +++ b/src/main/java/tobinio/realarrowtip/mixin/ItemAssetsLoaderMixin.java @@ -0,0 +1,31 @@ +package tobinio.realarrowtip.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import net.minecraft.client.item.ItemAssetsLoader; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.resource.Resource; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import tobinio.realarrowtip.RealArrowTip; + +/** + * Created: 05.10.25 + * + * @author Tobias Frischmann + */ +@Mixin (ItemAssetsLoader.class) +public class ItemAssetsLoaderMixin { + + @Inject(method = "method_65926", at= @At (value = "INVOKE", target = "Lnet/minecraft/resource/Resource;getReader()Ljava/io/BufferedReader;")) + private static void real_arrow_tip$useOwnItemModels(Identifier itemId, Resource resource, + DynamicRegistryManager.Immutable immutable, CallbackInfoReturnable cir, + @Local(ordinal = 1) LocalRef identifier) { + if (identifier.get().getNamespace().equals(RealArrowTip.MOD_ID)) { + identifier.set(Identifier.of(identifier.get().getPath())); + } + } +} diff --git a/src/main/resources/assets/minecraft/items/bow.json b/src/main/resources/assets/real_arrow_tip/items/bow.json similarity index 100% rename from src/main/resources/assets/minecraft/items/bow.json rename to src/main/resources/assets/real_arrow_tip/items/bow.json diff --git a/src/main/resources/assets/minecraft/items/crossbow.json b/src/main/resources/assets/real_arrow_tip/items/crossbow.json similarity index 100% rename from src/main/resources/assets/minecraft/items/crossbow.json rename to src/main/resources/assets/real_arrow_tip/items/crossbow.json diff --git a/src/main/resources/real-arrow-tip.accesswidener b/src/main/resources/real-arrow-tip.accesswidener index e9a251a..41e3bc4 100644 --- a/src/main/resources/real-arrow-tip.accesswidener +++ b/src/main/resources/real-arrow-tip.accesswidener @@ -1,2 +1,3 @@ accessWidener v2 named +accessible class net/minecraft/client/item/ItemAssetsLoader$Definition accessible method net/minecraft/entity/mob/AbstractSkeletonEntity createArrowProjectile (Lnet/minecraft/item/ItemStack;FLnet/minecraft/item/ItemStack;)Lnet/minecraft/entity/projectile/PersistentProjectileEntity; \ No newline at end of file diff --git a/src/main/resources/real-arrow-tip.mixins.json b/src/main/resources/real-arrow-tip.mixins.json index 9f288e6..2233906 100644 --- a/src/main/resources/real-arrow-tip.mixins.json +++ b/src/main/resources/real-arrow-tip.mixins.json @@ -6,6 +6,7 @@ "client": [ "ArrowEntityRendererMixin", "ArrowEntityRenderingStateMixin", + "ItemAssetsLoaderMixin", "ProjectileEntityRendererMixin" ], "injectors": {