From 119743951021a7f0199365bc3c77f01541804d38 Mon Sep 17 00:00:00 2001 From: IThundxr Date: Sun, 29 Sep 2024 12:51:45 -0400 Subject: [PATCH] feat(porting): port CustomMapItem related stuff --- .../porting_lib/item/CustomMapItem.java | 18 +-------- .../mixin/client/ItemFrameRendererMixin.java | 40 ++++--------------- .../mixin/common/MapItemMixin.java | 26 ------------ .../resources/porting_lib_base.mixins.json | 1 - 4 files changed, 8 insertions(+), 77 deletions(-) delete mode 100644 modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/common/MapItemMixin.java diff --git a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/item/CustomMapItem.java b/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/item/CustomMapItem.java index 2a06c03d6..b440d0010 100644 --- a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/item/CustomMapItem.java +++ b/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/item/CustomMapItem.java @@ -1,19 +1,3 @@ package io.github.fabricators_of_create.porting_lib.item; -import net.minecraft.core.component.DataComponents; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.saveddata.maps.MapId; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; - -import javax.annotation.Nullable; - -import static net.minecraft.world.item.MapItem.getSavedData; - -public interface CustomMapItem { - @Nullable - default MapItemSavedData getCustomMapData(ItemStack itemStack, Level level) { - MapId mapId = itemStack.get(DataComponents.MAP_ID); - return getSavedData(mapId, level); - } -} +public interface CustomMapItem {} diff --git a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/client/ItemFrameRendererMixin.java b/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/client/ItemFrameRendererMixin.java index 58a97b143..f4479d063 100644 --- a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/client/ItemFrameRendererMixin.java +++ b/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/client/ItemFrameRendererMixin.java @@ -1,5 +1,7 @@ package io.github.fabricators_of_create.porting_lib.mixin.client; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.vertex.PoseStack; import io.github.fabricators_of_create.porting_lib.item.CustomMapItem; @@ -13,12 +15,9 @@ import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArgs; -import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; @Mixin(ItemFrameRenderer.class) @@ -27,38 +26,13 @@ protected ItemFrameRendererMixin(Context context) { super(context); } -// @ModifyArgs( TODO: PORT -// method = "render(Lnet/minecraft/world/entity/decoration/ItemFrame;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", -// at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z") -// ) -// private void port_lib$customMapsAreMaps(Args args, T entity, float entityYaw, float partialTicks, PoseStack matrixStack, MultiBufferSource buffer, int packedLight) { -// ItemStack stack = entity.getItem(); -// Item item = stack.getItem(); -// if (item instanceof CustomMapItem) { -// args.set(0, item); -// } -// } - - @ModifyArgs( + @WrapOperation( method = "getFrameModelResourceLoc", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z") ) - private void port_lib$customMapsAreMaps2(Args args, T entity, ItemStack stack) { - Item item = stack.getItem(); - if (item instanceof CustomMapItem) { - args.set(0, item); - } - } - - @ModifyVariable( - method = "render(Lnet/minecraft/world/entity/decoration/ItemFrame;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", - at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/item/MapItem;getSavedData(Lnet/minecraft/world/level/saveddata/maps/MapId;Lnet/minecraft/world/level/Level;)Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;") - ) - private MapItemSavedData port_lib$getCorrectMapData(MapItemSavedData original, T entity, float entityYaw, float partialTicks, PoseStack matrixStack, MultiBufferSource buffer, int packedLight) { - ItemStack stack = entity.getItem(); - if (stack.getItem() instanceof CustomMapItem custom) { - return custom.getCustomMapData(stack, entity.level()); - } - return original; + private boolean port_lib$customMapsAreMaps(ItemStack instance, Item item, Operation original) { + if (item instanceof CustomMapItem) + return true; + return original.call(instance, item); } } diff --git a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/common/MapItemMixin.java b/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/common/MapItemMixin.java deleted file mode 100644 index 93dd02073..000000000 --- a/modules/base/src/main/java/io/github/fabricators_of_create/porting_lib/mixin/common/MapItemMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.fabricators_of_create.porting_lib.mixin.common; - -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 io.github.fabricators_of_create.porting_lib.item.CustomMapItem; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.MapItem; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; - -@Mixin(MapItem.class) -public abstract class MapItemMixin { - @Inject( - method = "getSavedData(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/Level;)Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;", - at = @At("HEAD"), - cancellable = true - ) - private static void port_lib$customMapData(ItemStack stack, Level level, CallbackInfoReturnable cir) { - if (stack.getItem() instanceof CustomMapItem customMapItem) { - cir.setReturnValue(customMapItem.getCustomMapData(stack, level)); - } - } -} diff --git a/modules/base/src/main/resources/porting_lib_base.mixins.json b/modules/base/src/main/resources/porting_lib_base.mixins.json index 96c270ea9..15b561966 100644 --- a/modules/base/src/main/resources/porting_lib_base.mixins.json +++ b/modules/base/src/main/resources/porting_lib_base.mixins.json @@ -54,7 +54,6 @@ "common.LivingEntityMixin", "common.MainMixin", "common.MapDecorationMixin", - "common.MapItemMixin", "common.MushroomCowMixin", "common.PiglinAiMixin", "common.PistonMovingBlockEntityMixin",