From c6f71a35f31aa8fc9fb13d0b35824725f1fc374d Mon Sep 17 00:00:00 2001 From: Jika Date: Fri, 15 Aug 2025 18:42:36 +0200 Subject: [PATCH] Added spotless --- build.gradle | 2 + gradle/scripts/spotless.gradle | 26 ++ spotless/spotless.eclipseformat.xml | 400 ++++++++++++++++++ spotless/spotless.importorder | 8 + src/main/java/com/imbgt/ibg/Config.java | 21 +- src/main/java/com/imbgt/ibg/IBG.java | 29 +- .../java/com/imbgt/ibg/block/ModBlocks.java | 7 +- .../com/imbgt/ibg/block/custom/PartBlock.java | 35 +- .../ibg/block/entity/ModBlockEntities.java | 6 +- .../com/imbgt/ibg/block/entity/PartBE.java | 5 +- .../entity/client/AnimatedBlockModel.java | 6 +- .../entity/client/AnimatedBlockRenderer.java | 7 +- .../java/com/imbgt/ibg/item/ModItems.java | 9 +- .../item/client/AnimatedBlockItemModel.java | 5 +- .../client/AnimatedBlockItemRenderer.java | 2 +- .../ibg/item/custom/AnimatedBlockItem.java | 10 +- .../imbgt/ibg/mixin/LevelRendererMixin.java | 33 +- .../mixin/MetaMachineBlockEntityGeoMixin.java | 10 +- .../ibg/mixin/MetaMachineBlockMixin.java | 22 +- 19 files changed, 542 insertions(+), 101 deletions(-) create mode 100644 gradle/scripts/spotless.gradle create mode 100644 spotless/spotless.eclipseformat.xml create mode 100644 spotless/spotless.importorder diff --git a/build.gradle b/build.gradle index 01c1f37..de8fc2c 100644 --- a/build.gradle +++ b/build.gradle @@ -11,8 +11,10 @@ plugins { id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'org.parchmentmc.librarian.forgegradle' version '1.+' id 'org.spongepowered.mixin' version '0.7.+' + id 'com.diffplug.spotless' version '7.0.2' } +apply from: "$rootDir/gradle/scripts/spotless.gradle" apply plugin: 'org.spongepowered.mixin' version = mod_version diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle new file mode 100644 index 0000000..46cd4be --- /dev/null +++ b/gradle/scripts/spotless.gradle @@ -0,0 +1,26 @@ +// Spotless auto-formatter +// See https://github.com/diffplug/spotless/tree/main/plugin-gradle +// Can be locally toggled via spotless:off/spotless:on comments +spotless { + encoding 'UTF-8' + + format 'misc', { + target '.gitignore' + + trimTrailingWhitespace() + indentWithSpaces(4) + endWithNewline() + } + java { + target 'src/main/java/**/*.java', 'src/test/java/**/*.java' + + def orderFile = file("$rootDir/spotless/spotless.importorder") + def formatFile = file("$rootDir/spotless/spotless.eclipseformat.xml") + + toggleOffOn() + importOrderFile(orderFile) + removeUnusedImports('cleanthat-javaparser-unnecessaryimport') + endWithNewline() + eclipse('4.31').configFile(formatFile) + } +} diff --git a/spotless/spotless.eclipseformat.xml b/spotless/spotless.eclipseformat.xml new file mode 100644 index 0000000..8db01de --- /dev/null +++ b/spotless/spotless.eclipseformat.xml @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spotless/spotless.importorder b/spotless/spotless.importorder new file mode 100644 index 0000000..096b1cc --- /dev/null +++ b/spotless/spotless.importorder @@ -0,0 +1,8 @@ +0=com.example +1=com.gregtechceu +2=com.lowdragmc +3=net +4= +5=java +6=javax +7=\# \ No newline at end of file diff --git a/src/main/java/com/imbgt/ibg/Config.java b/src/main/java/com/imbgt/ibg/Config.java index 172918c..06fb1cd 100644 --- a/src/main/java/com/imbgt/ibg/Config.java +++ b/src/main/java/com/imbgt/ibg/Config.java @@ -1,9 +1,5 @@ package com.imbgt.ibg; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.ForgeConfigSpec; @@ -12,9 +8,13 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.config.ModConfigEvent; import net.minecraftforge.registries.ForgeRegistries; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + @Mod.EventBusSubscriber(modid = IBG.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class Config -{ +public class Config { + private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER @@ -41,14 +41,13 @@ public class Config public static String magicNumberIntroduction; public static Set items; - private static boolean validateItemName(final Object obj) - { - return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.parse(itemName)); + private static boolean validateItemName(final Object obj) { + return obj instanceof final String itemName && + ForgeRegistries.ITEMS.containsKey(ResourceLocation.parse(itemName)); } @SubscribeEvent - static void onLoad(final ModConfigEvent event) - { + static void onLoad(final ModConfigEvent event) { logDirtBlock = LOG_DIRT_BLOCK.get(); magicNumber = MAGIC_NUMBER.get(); magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get(); diff --git a/src/main/java/com/imbgt/ibg/IBG.java b/src/main/java/com/imbgt/ibg/IBG.java index 1c11901..3fb53b9 100644 --- a/src/main/java/com/imbgt/ibg/IBG.java +++ b/src/main/java/com/imbgt/ibg/IBG.java @@ -1,13 +1,6 @@ package com.imbgt.ibg; -import org.slf4j.Logger; - import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.imbgt.ibg.block.ModBlocks; -import com.imbgt.ibg.block.entity.ModBlockEntities; -import com.imbgt.ibg.block.entity.client.AnimatedBlockRenderer; -import com.imbgt.ibg.item.ModItems; -import com.mojang.logging.LogUtils; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; @@ -25,10 +18,18 @@ import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + +import com.imbgt.ibg.block.ModBlocks; +import com.imbgt.ibg.block.entity.ModBlockEntities; +import com.imbgt.ibg.block.entity.client.AnimatedBlockRenderer; +import com.imbgt.ibg.item.ModItems; +import com.mojang.logging.LogUtils; +import org.slf4j.Logger; import software.bernie.geckolib.GeckoLib; @Mod(IBG.MOD_ID) public class IBG { + public static final String MOD_ID = "ibg"; public static final Logger LOGGER = LogUtils.getLogger(); @@ -51,26 +52,23 @@ public class IBG { context.registerConfig(ModConfig.Type.COMMON, Config.SPEC); } - private void commonSetup(final FMLCommonSetupEvent event) { - } + private void commonSetup(final FMLCommonSetupEvent event) {} - private void addCreative(BuildCreativeModeTabContentsEvent event) { - } + private void addCreative(BuildCreativeModeTabContentsEvent event) {} @SubscribeEvent - public void onServerStarting(ServerStartingEvent event) { - } + public void onServerStarting(ServerStartingEvent event) {} @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public static class ClientModEvents { + @SubscribeEvent public static void onClientSetup(FMLClientSetupEvent event) { - event.enqueueWork(() -> { var latheDef = GTRegistries.MACHINES.get( ResourceLocation.fromNamespaceAndPath("gtceu", "lv_lathe")); - latheDef.setShape(Block.box(-16, 0, 0, 32-16, 14, 16)); + latheDef.setShape(Block.box(-16, 0, 0, 32 - 16, 14, 16)); @SuppressWarnings({ "unchecked", "rawtypes" }) BlockEntityRendererProvider provider = (BlockEntityRendererProvider) (ctx -> new AnimatedBlockRenderer<>( @@ -78,7 +76,6 @@ public class IBG { BlockEntityRenderers.register(latheDef.getBlockEntityType(), provider); }); - } } } diff --git a/src/main/java/com/imbgt/ibg/block/ModBlocks.java b/src/main/java/com/imbgt/ibg/block/ModBlocks.java index a4560e8..bb9c468 100644 --- a/src/main/java/com/imbgt/ibg/block/ModBlocks.java +++ b/src/main/java/com/imbgt/ibg/block/ModBlocks.java @@ -1,8 +1,5 @@ package com.imbgt.ibg.block; -import com.imbgt.ibg.IBG; -import com.imbgt.ibg.block.custom.PartBlock; - import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.eventbus.api.IEventBus; @@ -10,7 +7,11 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import com.imbgt.ibg.IBG; +import com.imbgt.ibg.block.custom.PartBlock; + public class ModBlocks { + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, IBG.MOD_ID); public static final RegistryObject PART = BLOCKS.register( diff --git a/src/main/java/com/imbgt/ibg/block/custom/PartBlock.java b/src/main/java/com/imbgt/ibg/block/custom/PartBlock.java index c4909f9..35afc3d 100644 --- a/src/main/java/com/imbgt/ibg/block/custom/PartBlock.java +++ b/src/main/java/com/imbgt/ibg/block/custom/PartBlock.java @@ -1,13 +1,7 @@ package com.imbgt.ibg.block.custom; -import java.util.function.Consumer; - -import javax.annotation.Nullable; - import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.imbgt.ibg.IBG; -import com.imbgt.ibg.block.entity.PartBE; import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.BlockPos; @@ -34,7 +28,15 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.client.extensions.common.IClientBlockExtensions; +import com.imbgt.ibg.IBG; +import com.imbgt.ibg.block.entity.PartBE; + +import java.util.function.Consumer; + +import javax.annotation.Nullable; + public class PartBlock extends Block implements EntityBlock { + public PartBlock(Properties p) { super(p.noOcclusion()); } @@ -51,7 +53,7 @@ public class PartBlock extends Block implements EntityBlock { @Override public InteractionResult use(BlockState st, Level lvl, BlockPos pos, - Player pl, InteractionHand hand, BlockHitResult hit) { + Player pl, InteractionHand hand, BlockHitResult hit) { if (lvl.isClientSide) { // Let the hand animate; the server will run the real logic. return InteractionResult.sidedSuccess(true); @@ -82,7 +84,7 @@ public class PartBlock extends Block implements EntityBlock { // Optional: give the part a slice-shaped outline/collision on its own cell @Override public VoxelShape getShape(BlockState s, BlockGetter g, BlockPos p, - CollisionContext c) { + CollisionContext c) { return Block.box(0, 0, 0, 16, 16, 16); // or custom slice if you want } @@ -101,18 +103,18 @@ public class PartBlock extends Block implements EntityBlock { @Override public void initializeClient( - Consumer consumer) { + Consumer consumer) { consumer.accept(new IClientBlockExtensions() { @Override public boolean addDestroyEffects(BlockState state, Level level, BlockPos pos, - ParticleEngine engine) { + ParticleEngine engine) { return true; } @Override public boolean addHitEffects(BlockState state, Level level, HitResult target, - ParticleEngine engine) { + ParticleEngine engine) { return true; } }); @@ -138,13 +140,13 @@ public class PartBlock extends Block implements EntityBlock { @Override public float getDestroyProgress(BlockState st, Player player, BlockGetter level, BlockPos pos) { BlockPos m = masterPos(level, pos); - return (m != null) ? level.getBlockState(m).getDestroyProgress(player, level, m) - : super.getDestroyProgress(st, player, level, pos); + return (m != null) ? level.getBlockState(m).getDestroyProgress(player, level, m) : + super.getDestroyProgress(st, player, level, pos); } @Override public void neighborChanged(BlockState state, Level level, BlockPos pos, - Block neighborBlock, BlockPos fromPos, boolean isMoving) { + Block neighborBlock, BlockPos fromPos, boolean isMoving) { IBG.LOGGER.info("coucou"); if (level.isClientSide) return; @@ -158,8 +160,8 @@ public class PartBlock extends Block implements EntityBlock { IBG.LOGGER.info("nul"); // // No master? Clean up. level.setBlock(pos, Blocks.AIR.defaultBlockState(), - Block.UPDATE_CLIENTS | Block.UPDATE_KNOWN_SHAPE | - Block.UPDATE_SUPPRESS_DROPS); + Block.UPDATE_CLIENTS | Block.UPDATE_KNOWN_SHAPE | + Block.UPDATE_SUPPRESS_DROPS); return; } @@ -203,5 +205,4 @@ public class PartBlock extends Block implements EntityBlock { }; return master.relative(right); } - } diff --git a/src/main/java/com/imbgt/ibg/block/entity/ModBlockEntities.java b/src/main/java/com/imbgt/ibg/block/entity/ModBlockEntities.java index 8d7eeeb..0bc2f2c 100644 --- a/src/main/java/com/imbgt/ibg/block/entity/ModBlockEntities.java +++ b/src/main/java/com/imbgt/ibg/block/entity/ModBlockEntities.java @@ -1,14 +1,14 @@ package com.imbgt.ibg.block.entity; -import com.imbgt.ibg.IBG; -import com.imbgt.ibg.block.ModBlocks; - import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import com.imbgt.ibg.IBG; +import com.imbgt.ibg.block.ModBlocks; + public class ModBlockEntities { public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister diff --git a/src/main/java/com/imbgt/ibg/block/entity/PartBE.java b/src/main/java/com/imbgt/ibg/block/entity/PartBE.java index 30af2bb..ca523db 100644 --- a/src/main/java/com/imbgt/ibg/block/entity/PartBE.java +++ b/src/main/java/com/imbgt/ibg/block/entity/PartBE.java @@ -1,7 +1,5 @@ package com.imbgt.ibg.block.entity; -import javax.annotation.Nullable; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -11,7 +9,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; +import javax.annotation.Nullable; + public class PartBE extends BlockEntity { + private BlockPos masterPos; public PartBE(BlockPos pos, BlockState st) { diff --git a/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockModel.java b/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockModel.java index 7185d05..a31c243 100644 --- a/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockModel.java +++ b/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockModel.java @@ -1,12 +1,13 @@ package com.imbgt.ibg.block.entity.client; -import com.imbgt.ibg.IBG; - import net.minecraft.resources.ResourceLocation; + +import com.imbgt.ibg.IBG; import software.bernie.geckolib.core.animatable.GeoAnimatable; import software.bernie.geckolib.model.GeoModel; public class AnimatedBlockModel extends GeoModel { + @Override public ResourceLocation getModelResource(T animatable) { return ResourceLocation.fromNamespaceAndPath(IBG.MOD_ID, "geo/animated_block.geo.json"); @@ -21,5 +22,4 @@ public class AnimatedBlockModel extends GeoModel { public ResourceLocation getAnimationResource(T animatable) { return ResourceLocation.fromNamespaceAndPath(IBG.MOD_ID, "animations/animated_block.animation.json"); } - } diff --git a/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockRenderer.java b/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockRenderer.java index 1bf49ee..1d1fb06 100644 --- a/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockRenderer.java +++ b/src/main/java/com/imbgt/ibg/block/entity/client/AnimatedBlockRenderer.java @@ -1,13 +1,14 @@ package com.imbgt.ibg.block.entity.client; - import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.entity.BlockEntity; + import software.bernie.geckolib.core.animatable.GeoAnimatable; import software.bernie.geckolib.renderer.GeoBlockRenderer; -public class AnimatedBlockRenderer - extends GeoBlockRenderer { +public class AnimatedBlockRenderer + extends GeoBlockRenderer { + public AnimatedBlockRenderer(BlockEntityRendererProvider.Context context) { super(new AnimatedBlockModel()); } diff --git a/src/main/java/com/imbgt/ibg/item/ModItems.java b/src/main/java/com/imbgt/ibg/item/ModItems.java index 333fbd1..5a7447a 100644 --- a/src/main/java/com/imbgt/ibg/item/ModItems.java +++ b/src/main/java/com/imbgt/ibg/item/ModItems.java @@ -1,17 +1,18 @@ package com.imbgt.ibg.item; -import com.imbgt.ibg.IBG; - import net.minecraft.world.item.Item; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import com.imbgt.ibg.IBG; + public class ModItems { - public static final DeferredRegister ITEMS_REGISTER = DeferredRegister.create(ForgeRegistries.ITEMS, IBG.MOD_ID); + public static final DeferredRegister ITEMS_REGISTER = DeferredRegister.create(ForgeRegistries.ITEMS, + IBG.MOD_ID); public static void register(IEventBus eventBus) { - ITEMS_REGISTER.register(eventBus); + ITEMS_REGISTER.register(eventBus); } } diff --git a/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemModel.java b/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemModel.java index c80fb20..3319378 100644 --- a/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemModel.java +++ b/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemModel.java @@ -1,12 +1,13 @@ package com.imbgt.ibg.item.client; +import net.minecraft.resources.ResourceLocation; + import com.imbgt.ibg.IBG; import com.imbgt.ibg.item.custom.AnimatedBlockItem; - -import net.minecraft.resources.ResourceLocation; import software.bernie.geckolib.model.GeoModel; public class AnimatedBlockItemModel extends GeoModel { + @Override public ResourceLocation getModelResource(AnimatedBlockItem animatable) { return ResourceLocation.fromNamespaceAndPath(IBG.MOD_ID, "geo/animated_block.geo.json"); diff --git a/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemRenderer.java b/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemRenderer.java index 46349d4..ef7990a 100644 --- a/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemRenderer.java +++ b/src/main/java/com/imbgt/ibg/item/client/AnimatedBlockItemRenderer.java @@ -1,10 +1,10 @@ package com.imbgt.ibg.item.client; import com.imbgt.ibg.item.custom.AnimatedBlockItem; - import software.bernie.geckolib.renderer.GeoItemRenderer; public class AnimatedBlockItemRenderer extends GeoItemRenderer { + public AnimatedBlockItemRenderer() { super(new AnimatedBlockItemModel()); } diff --git a/src/main/java/com/imbgt/ibg/item/custom/AnimatedBlockItem.java b/src/main/java/com/imbgt/ibg/item/custom/AnimatedBlockItem.java index 438f3b7..231a8c3 100644 --- a/src/main/java/com/imbgt/ibg/item/custom/AnimatedBlockItem.java +++ b/src/main/java/com/imbgt/ibg/item/custom/AnimatedBlockItem.java @@ -1,13 +1,11 @@ package com.imbgt.ibg.item.custom; -import java.util.function.Consumer; - -import com.imbgt.ibg.item.client.AnimatedBlockItemRenderer; - import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.extensions.common.IClientItemExtensions; + +import com.imbgt.ibg.item.client.AnimatedBlockItemRenderer; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.SingletonGeoAnimatable; import software.bernie.geckolib.core.animatable.GeoAnimatable; @@ -21,7 +19,10 @@ import software.bernie.geckolib.core.animation.RawAnimation; import software.bernie.geckolib.core.object.PlayState; import software.bernie.geckolib.util.RenderUtils; +import java.util.function.Consumer; + public class AnimatedBlockItem extends BlockItem implements GeoItem { + private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this); public AnimatedBlockItem(Block block, Properties properties) { @@ -32,6 +33,7 @@ public class AnimatedBlockItem extends BlockItem implements GeoItem { @Override public void initializeClient(Consumer consumer) { consumer.accept(new IClientItemExtensions() { + private AnimatedBlockItemRenderer renderer; @Override diff --git a/src/main/java/com/imbgt/ibg/mixin/LevelRendererMixin.java b/src/main/java/com/imbgt/ibg/mixin/LevelRendererMixin.java index f621735..2112745 100644 --- a/src/main/java/com/imbgt/ibg/mixin/LevelRendererMixin.java +++ b/src/main/java/com/imbgt/ibg/mixin/LevelRendererMixin.java @@ -1,18 +1,5 @@ package com.imbgt.ibg.mixin; -import javax.annotation.Nullable; - -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 com.imbgt.ibg.block.entity.PartBE; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; - import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; @@ -20,6 +7,18 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import com.imbgt.ibg.block.entity.PartBE; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +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 javax.annotation.Nullable; + @Mixin(LevelRenderer.class) public abstract class LevelRendererMixin { @@ -28,10 +27,12 @@ public abstract class LevelRendererMixin { @Nullable private ClientLevel level; - @WrapOperation(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;renderHitOutline(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V")) + @WrapOperation(method = "renderLevel", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/LevelRenderer;renderHitOutline(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V")) private void ibg$wrapRenderHitOutline(LevelRenderer instance, PoseStack poseStack, VertexConsumer consumer, - Entity entity, double camX, double camY, double camZ, - BlockPos pos, BlockState state, Operation original) { + Entity entity, double camX, double camY, double camZ, + BlockPos pos, BlockState state, Operation original) { if (level != null && level.getBlockEntity(pos) instanceof PartBE part && part.getMasterPos() != null) { BlockPos masterPos = part.getMasterPos(); BlockEntity master = level.getBlockEntity(masterPos); diff --git a/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockEntityGeoMixin.java b/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockEntityGeoMixin.java index 6355acf..4cd7a0c 100644 --- a/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockEntityGeoMixin.java +++ b/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockEntityGeoMixin.java @@ -1,16 +1,15 @@ package com.imbgt.ibg.mixin; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import net.minecraftforge.common.util.LazyOptional; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import software.bernie.geckolib.animatable.GeoBlockEntity; import software.bernie.geckolib.core.animatable.GeoAnimatable; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; @@ -25,6 +24,7 @@ import software.bernie.geckolib.util.RenderUtils; @Mixin(MetaMachineBlockEntity.class) public abstract class MetaMachineBlockEntityGeoMixin implements GeoBlockEntity { + @Unique private final AnimatableInstanceCache ibg$cache = new SingletonAnimatableInstanceCache(this); diff --git a/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockMixin.java b/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockMixin.java index b3827b8..353959a 100644 --- a/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockMixin.java +++ b/src/main/java/com/imbgt/ibg/mixin/MetaMachineBlockMixin.java @@ -1,19 +1,10 @@ package com.imbgt.ibg.mixin; -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.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - import com.gregtechceu.gtceu.api.block.AppearanceBlock; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.imbgt.ibg.block.ModBlocks; -import com.imbgt.ibg.block.entity.PartBE; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -25,6 +16,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import com.imbgt.ibg.block.ModBlocks; +import com.imbgt.ibg.block.entity.PartBE; +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.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + @Mixin(MetaMachineBlock.class) public abstract class MetaMachineBlockMixin extends AppearanceBlock { @@ -52,7 +52,7 @@ public abstract class MetaMachineBlockMixin extends AppearanceBlock { @Inject(method = "getStateForPlacement", at = @At("HEAD"), cancellable = true) private void ibg$latheFootprintCheck(BlockPlaceContext ctx, - CallbackInfoReturnable cir) { + CallbackInfoReturnable cir) { MetaMachineBlock self = (MetaMachineBlock) (Object) this; var id = self.getDefinition().getId(); if (!("gtceu".equals(id.getNamespace()) && "lv_lathe".equals(id.getPath()))) @@ -107,7 +107,7 @@ public abstract class MetaMachineBlockMixin extends AppearanceBlock { @Inject(method = "onRemove", at = @At("HEAD")) private void ibg$removePart(BlockState st, Level lvl, BlockPos pos, BlockState newState, boolean moving, - CallbackInfo ci) { + CallbackInfo ci) { if (lvl.isClientSide || st.getBlock() == newState.getBlock()) return; var def = getDefinition().getId();