From b5047fc5abbccfe25859a43baead9198a73e8a7e Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 21 Dec 2021 01:26:36 -0700 Subject: [PATCH] implement Handle interface in single mixin --- .../mixin/implementations/BiomeMixin.java | 4 -- .../HandleImplementationMixin.java | 59 +++++++++++++++++++ .../block/BlockEntityMixin.java | 5 -- .../implementations/block/BlockMixin.java | 5 -- .../LootableContainerBlockEntityMixin.java | 5 -- .../chunk/ChunkRegionMixin.java | 4 -- .../chunk/WorldChunkMixin.java | 5 -- .../chunk/data/ProtoChunkMixin.java | 5 -- .../implementations/entity/EntityMixin.java | 5 -- .../entity/EntityTypeMixin.java | 4 -- .../entity/PlayerEntityMixin.java | 1 - .../entity/ServerCommandSourceMixin.java | 5 -- .../LockableContainerBlockEntityMixin.java | 5 -- .../inventory/item/ItemMixin.java | 7 +-- .../inventory/item/ItemStackMixin.java | 5 -- .../inventory/meta/EnchantmentMixin.java | 6 -- .../world/ChunkRegionMixin.java | 5 -- .../world/ServerWorldMixin.java | 5 -- .../src/main/resources/terra.mixins.json | 1 + 19 files changed, 61 insertions(+), 80 deletions(-) create mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/HandleImplementationMixin.java diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java index d25a4b582..e8fe8c78f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java @@ -29,8 +29,4 @@ import com.dfsek.terra.api.world.biome.PlatformBiome; @Mixin(Biome.class) @Implements(@Interface(iface = PlatformBiome.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BiomeMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/HandleImplementationMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/HandleImplementationMixin.java new file mode 100644 index 000000000..394e56201 --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/HandleImplementationMixin.java @@ -0,0 +1,59 @@ +package com.dfsek.terra.fabric.mixin.implementations; + +import com.dfsek.terra.api.Handle; + +import net.minecraft.block.Block; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.block.entity.LootableContainerBlockEntity; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.ChunkRegion; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.ProtoChunk; +import net.minecraft.world.chunk.WorldChunk; +import org.spongepowered.asm.mixin.Implements; +import org.spongepowered.asm.mixin.Interface; +import org.spongepowered.asm.mixin.Intrinsic; +import org.spongepowered.asm.mixin.Mixin; + + +/** + * A ton of Minecraft classes must implement Handle identically, we can just take care of it here + */ +@Mixin({ + ServerWorld.class, + ChunkRegion.class, + + Block.class, + + BlockEntity.class, + LootableContainerBlockEntity.class, + LockableContainerBlockEntity.class, + + ProtoChunk.class, + WorldChunk.class, + + Entity.class, + EntityType.class, + + ServerCommandSource.class, + + Item.class, + ItemStack.class, + Enchantment.class, + + Biome.class +}) +@Implements(@Interface(iface = Handle.class, prefix = "terra$", remap = Interface.Remap.NONE)) +public class HandleImplementationMixin { + @Intrinsic + public Object terra$getHandle() { + return this; + } +} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index b4be85b0b..1d66412f1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -35,11 +35,6 @@ import com.dfsek.terra.fabric.util.FabricAdapter; @Mixin(net.minecraft.block.entity.BlockEntity.class) @Implements(@Interface(iface = BlockEntity.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BlockEntityMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } - public boolean terra$update(boolean applyPhysics) { if(((net.minecraft.block.entity.BlockEntity) (Object) this).hasWorld()) //noinspection ConstantConditions ((net.minecraft.block.entity.BlockEntity) (Object) this).getWorld().getChunk(((net.minecraft.block.entity.BlockEntity) (Object) this).getPos()).setBlockEntity((net.minecraft.block.entity.BlockEntity) (Object) this); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index f6331e82c..5e746dd83 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -33,11 +33,6 @@ import com.dfsek.terra.fabric.util.FabricAdapter; @Mixin(Block.class) @Implements(@Interface(iface = BlockType.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class BlockMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } - public com.dfsek.terra.api.block.state.BlockState terra$getDefaultState() { return FabricAdapter.adapt(((Block) (Object) this).getDefaultState()); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java index 9cb8820f5..5964ce9ed 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java @@ -34,9 +34,4 @@ public abstract class LootableContainerBlockEntityMixin extends BlockEntityMixin public Inventory terra$getInventory() { return (Inventory) this; } - - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index 7c1b8fcbd..11821765b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -57,8 +57,4 @@ public abstract class ChunkRegionMixin { public int terraChunk$getZ() { return centerPos.getPos().z; } - - // getWorld already added in world/ChunkRegionMixin - - // getHandle already added in world/ChunkRegionMixin. } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 3c69efe74..256cd20a8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -72,9 +72,4 @@ public abstract class WorldChunkMixin { public ServerWorld terra$getWorld() { return (ServerWorld) world; } - - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 642c4749a..a80e048e3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -45,11 +45,6 @@ public abstract class ProtoChunkMixin { return new FabricBlockState(getBlockState(new BlockPos(x, y, z))); } - @Intrinsic - public Object terra$getHandle() { - return this; - } - public int terra$getMaxHeight() { return 255; // TODO: 1.17 - Implement dynamic height. } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 42e4c79ec..a53d45cd6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -49,11 +49,6 @@ public abstract class EntityMixin { @Shadow public abstract void sendSystemMessage(Text message, UUID senderUuid); - @Intrinsic - public Object terra$getHandle() { - return this; - } - public Vector3 terra$position() { return FabricAdapter.adapt(blockPos); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java index 825c73ece..30fe07456 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java @@ -27,8 +27,4 @@ import org.spongepowered.asm.mixin.Mixin; @Mixin(EntityType.class) @Implements(@Interface(iface = com.dfsek.terra.api.entity.EntityType.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class EntityTypeMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java index aebfd1597..f62c6202f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java @@ -28,5 +28,4 @@ import com.dfsek.terra.api.entity.Player; @Mixin(PlayerEntity.class) @Implements(@Interface(iface = Player.class, prefix = "terra$", remap = Interface.Remap.NONE)) public abstract class PlayerEntityMixin extends EntityMixin { - } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java index b887cd04d..ada343e6a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java @@ -38,9 +38,4 @@ public abstract class ServerCommandSourceMixin { public void terra$sendMessage(String message) { sendFeedback(new LiteralText(message), true); } - - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java index 12b7ecd27..549bbccca 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java @@ -31,11 +31,6 @@ import com.dfsek.terra.api.inventory.ItemStack; @Mixin(LockableContainerBlockEntity.class) @Implements(@Interface(iface = Inventory.class, prefix = "terra$", remap = Interface.Remap.NONE)) public class LockableContainerBlockEntityMixin { - @Intrinsic - public Object terra$getHandle() { - return this; - } - @SuppressWarnings("ConstantConditions") public void terra$setItem(int slot, ItemStack newStack) { ((LockableContainerBlockEntity) (Object) this).setStack(slot, (net.minecraft.item.ItemStack) (Object) newStack); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java index ff99bf29a..c44260b13 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java @@ -32,12 +32,7 @@ import com.dfsek.terra.api.inventory.ItemStack; public abstract class ItemMixin { @Shadow public abstract int getMaxDamage(); - - @Intrinsic - public Object terra$getHandle() { - return this; - } - + @SuppressWarnings("ConstantConditions") public ItemStack terra$newItemStack(int amount) { return (ItemStack) (Object) new net.minecraft.item.ItemStack((Item) (Object) this, amount); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java index 3dd880d2f..caf987581 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java @@ -73,9 +73,4 @@ public abstract class ItemStackMixin { public boolean terra$isDamageable() { return isDamageable(); } - - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java index cdda2e32f..c99aa1f10 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java @@ -38,12 +38,6 @@ public abstract class EnchantmentMixin { @Shadow public abstract boolean canCombine(Enchantment other); - - @Intrinsic - public Object terra$getHandle() { - return this; - } - @SuppressWarnings("ConstantConditions") public boolean terra$canEnchantItem(ItemStack itemStack) { return isAcceptableItem((net.minecraft.item.ItemStack) (Object) itemStack); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 551b8eb64..139bb1ee2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -152,9 +152,4 @@ public abstract class ChunkRegionMixin { public ConfigPack terraWorld$getPack() { return config; } - - @Intrinsic - public Object terraWorld$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 488c8c89d..b219d6d9e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -137,9 +137,4 @@ public abstract class ServerWorldMixin { public ConfigPack terra$getPack() { return config; } - - @Intrinsic - public Object terra$getHandle() { - return this; - } } diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index 2abf1b65f..75351cea3 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -11,6 +11,7 @@ "access.StateAccessor", "access.StructureAccessorAccessor", "implementations.BiomeMixin", + "implementations.HandleImplementationMixin", "implementations.block.BlockEntityMixin", "implementations.block.BlockMixin", "implementations.block.state.LootableContainerBlockEntityMixin",