diff --git a/gradle.properties b/gradle.properties index fffdb86..fecb4d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.20.5 - yarn_mappings=1.20.5+build.1 - loader_version=0.15.10 + minecraft_version=1.21 + yarn_mappings=1.21+build.1 + loader_version=0.15.11 # Mod Properties - mod_version = 0.1.0+mc1.20.5 + mod_version = 0.1.0+mc1.21.0 maven_group = tobinio archives_base_name = real-arrow-tip # Dependencies # check this on https://modmuss50.me/fabric.html - fabric_version=0.97.6+1.20.5 + fabric_version=0.100.1+1.21 diff --git a/src/main/java/tobinio/realarrowtip/ModelPredicateProvider.java b/src/main/java/tobinio/realarrowtip/ModelPredicateProvider.java index d5f3bd6..736a3b8 100644 --- a/src/main/java/tobinio/realarrowtip/ModelPredicateProvider.java +++ b/src/main/java/tobinio/realarrowtip/ModelPredicateProvider.java @@ -3,8 +3,6 @@ package tobinio.realarrowtip; import net.minecraft.client.item.ModelPredicateProviderRegistry; import net.minecraft.component.DataComponentTypes; import net.minecraft.entity.mob.AbstractSkeletonEntity; -import net.minecraft.entity.mob.StrayEntity; -import net.minecraft.item.BowItem; import net.minecraft.item.CrossbowItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -23,20 +21,20 @@ public class ModelPredicateProvider { } private static void initializeBow() { - ModelPredicateProviderRegistry.register(Items.BOW, new Identifier("spectral"), (stack, world, entity, seed) -> { + ModelPredicateProviderRegistry.register(Items.BOW, Identifier.ofVanilla("spectral"), (stack, world, entity, seed) -> { if (entity == null || !entity.isUsingItem() || entity.getActiveItem() != stack) return 0; return entity.getProjectileType(stack).isOf(Items.SPECTRAL_ARROW) ? 1 : 0; }); - ModelPredicateProviderRegistry.register(Items.BOW, new Identifier("tipped"), (stack, world, entity, seed) -> { + ModelPredicateProviderRegistry.register(Items.BOW, Identifier.ofVanilla("tipped"), (stack, world, entity, seed) -> { if (entity == null || !entity.isUsingItem() || entity.getActiveItem() != stack) return 0; ItemStack projectile = entity.getProjectileType(stack); if (entity instanceof AbstractSkeletonEntity skeleton) { - projectile = skeleton.createArrowProjectile(projectile, 0).getItemStack(); + projectile = skeleton.createArrowProjectile(projectile, 0, stack).getItemStack(); } if (projectile.isOf(Items.TIPPED_ARROW) || projectile.get(DataComponentTypes.POTION_CONTENTS) != null) { @@ -49,13 +47,13 @@ public class ModelPredicateProvider { } private static void initializeCrossbow() { - ModelPredicateProviderRegistry.register(Items.CROSSBOW, new Identifier("spectral"), (stack, world, entity, seed) -> { + ModelPredicateProviderRegistry.register(Items.CROSSBOW, Identifier.ofVanilla("spectral"), (stack, world, entity, seed) -> { if (!CrossbowItem.isCharged(stack) || entity == null) return 0; return entity.getProjectileType(stack).isOf(Items.SPECTRAL_ARROW) ? 1 : 0; }); - ModelPredicateProviderRegistry.register(Items.CROSSBOW, new Identifier("tipped"), (stack, world, entity, seed) -> { + ModelPredicateProviderRegistry.register(Items.CROSSBOW, Identifier.ofVanilla("tipped"), (stack, world, entity, seed) -> { if (!CrossbowItem.isCharged(stack) || entity == null) return 0; if (entity.getProjectileType(stack).isOf(Items.TIPPED_ARROW)) { diff --git a/src/main/java/tobinio/realarrowtip/RealArrowTip.java b/src/main/java/tobinio/realarrowtip/RealArrowTip.java index bc866a1..a841bf4 100644 --- a/src/main/java/tobinio/realarrowtip/RealArrowTip.java +++ b/src/main/java/tobinio/realarrowtip/RealArrowTip.java @@ -1,6 +1,7 @@ package tobinio.realarrowtip; import net.fabricmc.api.ModInitializer; +import net.minecraft.util.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,4 +14,9 @@ public class RealArrowTip implements ModInitializer { public void onInitialize() { ModelPredicateProvider.initialize(); } + + public static Identifier id(String path) { + return Identifier.of(modID, path); + } + } diff --git a/src/main/java/tobinio/realarrowtip/mixin/ItemColorsMixin.java b/src/main/java/tobinio/realarrowtip/mixin/ItemColorsMixin.java index 2932bf6..2826d5b 100644 --- a/src/main/java/tobinio/realarrowtip/mixin/ItemColorsMixin.java +++ b/src/main/java/tobinio/realarrowtip/mixin/ItemColorsMixin.java @@ -38,7 +38,7 @@ public abstract class ItemColorsMixin { ItemStack projectile = livingEntity.getProjectileType(stack); if (livingEntity instanceof AbstractSkeletonEntity skeleton) { - projectile = skeleton.createArrowProjectile(projectile, 0).getItemStack(); + projectile = skeleton.createArrowProjectile(projectile, 0, stack).getItemStack(); } PotionContentsComponent potion = projectile.get(DataComponentTypes.POTION_CONTENTS); diff --git a/src/main/java/tobinio/realarrowtip/mixin/ProjectileEntityRendererMixin.java b/src/main/java/tobinio/realarrowtip/mixin/ProjectileEntityRendererMixin.java index 354d641..5037dd5 100644 --- a/src/main/java/tobinio/realarrowtip/mixin/ProjectileEntityRendererMixin.java +++ b/src/main/java/tobinio/realarrowtip/mixin/ProjectileEntityRendererMixin.java @@ -23,6 +23,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import tobinio.realarrowtip.RealArrowTip; +import static tobinio.realarrowtip.RealArrowTip.id; + @Mixin (ProjectileEntityRenderer.class) public abstract class ProjectileEntityRendererMixin { @Inject (at = @At (value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;pop()V", shift = At.Shift.BEFORE), method = "render(Lnet/minecraft/entity/projectile/PersistentProjectileEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V") @@ -40,7 +42,7 @@ public abstract class ProjectileEntityRendererMixin=${loader_version}", "fabric": "*", - "minecraft": ">=1.20.5" + "minecraft": ">=1.21" } } diff --git a/src/main/resources/real-arrow-tip.accesswidener b/src/main/resources/real-arrow-tip.accesswidener index a605cdf..e9a251a 100644 --- a/src/main/resources/real-arrow-tip.accesswidener +++ b/src/main/resources/real-arrow-tip.accesswidener @@ -1,2 +1,2 @@ accessWidener v2 named -accessible method net/minecraft/entity/mob/AbstractSkeletonEntity createArrowProjectile (Lnet/minecraft/item/ItemStack;F)Lnet/minecraft/entity/projectile/PersistentProjectileEntity; +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