diff --git a/gradle.properties b/gradle.properties index 35aa8830..6863d751 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.18.4 # Mod Properties - mod_version = 0.4.0+1.21.1 + mod_version = 0.4.1+1.21.1 maven_group = net.errorcraft archives_base_name = itematic diff --git a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java index 080d1107..84e9bc70 100644 --- a/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java +++ b/src/main/java/net/errorcraft/itematic/entity/initializer/initializers/PersistentProjectileEntityInitializer.java @@ -16,11 +16,16 @@ public record PersistentProjectileEntityInitializer registerable) ItemGroupEntry.tag(ItematicItemTags.BEDS), ItemGroupEntry.tag(ItematicItemTags.CANDLES), ItemGroupEntry.tag(ItematicItemTags.BANNERS), - StackItemGroupEntry.fromStack(RaidUtil.createOminousBanner(items, bannerPatterns)), + StackItemGroupEntry.fromStack(RaidUtil.getOminousBanner(items, bannerPatterns)), ItemGroupEntry.tag(ItematicItemTags.HEADS), ItemGroupEntry.simple(items.getOrThrow(ItemKeys.DRAGON_EGG)), ItemGroupEntry.simple(items.getOrThrow(ItemKeys.END_PORTAL_FRAME)), diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java index 5559323e..fa368e39 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/mob/PatrolEntityExtender.java @@ -1,25 +1,26 @@ package net.errorcraft.itematic.mixin.entity.mob; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; +import net.minecraft.entity.EntityData; +import net.minecraft.entity.SpawnReason; import net.minecraft.entity.mob.PatrolEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; +import net.minecraft.world.LocalDifficulty; import net.minecraft.world.ServerWorldAccess; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PatrolEntity.class) public class PatrolEntityExtender { - @Redirect( + @Inject( method = "initialize", at = @At( value = "INVOKE", target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup, ServerWorldAccess world) { - return RaidUtil.createOminousBanner(world, bannerPatternLookup); + private void getOminousBannerSetDataDrivenItemStack(ServerWorldAccess world, LocalDifficulty difficulty, SpawnReason spawnReason, EntityData entityData, CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(world); } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java b/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java index c45bdd96..1391c13c 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/entity/raid/RaiderEntityExtender.java @@ -1,18 +1,17 @@ package net.errorcraft.itematic.mixin.entity.raid; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; import net.minecraft.entity.EntityType; import net.minecraft.entity.mob.PatrolEntity; import net.minecraft.entity.raid.RaiderEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(RaiderEntity.class) public class RaiderEntityExtender extends PatrolEntity { @@ -20,15 +19,18 @@ protected RaiderEntityExtender(EntityType entityType, Wo super(entityType, world); } - @Redirect( - method = { "onDeath", "loot" }, + @Inject( + method = { + "onDeath", + "loot" + }, at = @At( value = "INVOKE", target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.getWorld(), bannerPatternLookup); + private void getOminousBannerSetDataDrivenItemStack(CallbackInfo info) { + RaidUtil.createOminousBanner(this.getWorld()); } @Mixin(RaiderEntity.PickupBannerAsLeaderGoal.class) @@ -37,15 +39,15 @@ public static class PickupBannerAsLeaderGoalExtender { @Final private T actor; - @Redirect( + @Inject( method = "canStart", at = @At( value = "INVOKE", target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.actor.getWorld(), bannerPatternLookup); + private void getOminousBannerSetDataDrivenItemStack(CallbackInfoReturnable info) { + RaidUtil.createOminousBanner(this.actor.getWorld()); } } } diff --git a/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java b/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java index ec6effdb..95f1391b 100644 --- a/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java +++ b/src/main/java/net/errorcraft/itematic/mixin/village/raid/RaidExtender.java @@ -2,10 +2,9 @@ import com.llamalad7.mixinextras.sugar.Local; import net.errorcraft.itematic.village.raid.RaidUtil; -import net.minecraft.block.entity.BannerPattern; +import net.minecraft.entity.raid.RaiderEntity; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.village.raid.Raid; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -13,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Raid.class) @@ -45,14 +45,14 @@ private static void checkEmptyStack(CallbackInfoReturnable info, @Loc } } - @Redirect( + @Inject( method = "setWaveCaptain", at = @At( value = "INVOKE", target = "Lnet/minecraft/village/raid/Raid;getOminousBanner(Lnet/minecraft/registry/RegistryEntryLookup;)Lnet/minecraft/item/ItemStack;" ) ) - private ItemStack getOminousBannerUseRegistryEntry(RegistryEntryLookup bannerPatternLookup) { - return RaidUtil.createOminousBanner(this.getWorld(), bannerPatternLookup); + private void getOminousBannerSetDataDrivenItemStack(int wave, RaiderEntity entity, CallbackInfo info) { + RaidUtil.createOminousBanner(this.getWorld()); } } diff --git a/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java b/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java index 809fe7e6..76948fd1 100644 --- a/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java +++ b/src/main/java/net/errorcraft/itematic/village/raid/RaidUtil.java @@ -17,23 +17,18 @@ public static ItemStack ominousBanner() { if (ominousBanner == null) { return ItemStack.EMPTY; } - return ominousBanner; - } - public static ItemStack createOminousBanner(WorldAccess world, RegistryEntryLookup bannerPatterns) { - ItemStack stack = world.itematic$createStack(ItemKeys.WHITE_BANNER); - return createOminousBanner(stack, bannerPatterns); + ItemStack resultingOminousBanner = ominousBanner; + ominousBanner = null; + return resultingOminousBanner; } - public static ItemStack createOminousBanner(RegistryEntryLookup items, RegistryEntryLookup bannerPatterns) { - ItemStack stack = new ItemStack(items.getOrThrow(ItemKeys.WHITE_BANNER)); - return createOminousBanner(stack, bannerPatterns); + public static void createOminousBanner(WorldAccess world) { + ominousBanner = world.itematic$createStack(ItemKeys.WHITE_BANNER); } - private static ItemStack createOminousBanner(ItemStack stack, RegistryEntryLookup bannerPatterns) { - ominousBanner = stack; - Raid.getOminousBanner(bannerPatterns); - ominousBanner = null; - return stack; + public static ItemStack getOminousBanner(RegistryEntryLookup items, RegistryEntryLookup bannerPatterns) { + ominousBanner = new ItemStack(items.getOrThrow(ItemKeys.WHITE_BANNER)); + return Raid.getOminousBanner(bannerPatterns); } }