From 8c7bf0cac2a249b1e01a1699bf4916d5656293fa Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 19 Dec 2023 15:55:30 +0100 Subject: [PATCH] Fixed Mixins --- .../betterend/entity/EndSlimeEntity.java | 2 +- .../betterx/betterend/interfaces/ISlime.java | 2 +- .../mixin/client/BiomeColorsMixin.java | 31 +++++++----- .../mixin/client/CapeLayerMixin.java | 2 +- .../mixin/client/ModelLoaderMixin.java | 7 ++- .../mixin/client/MusicTrackerMixin.java | 49 +++++++++++-------- .../mixin/common/ChorusFlowerBlockMixin.java | 13 +++-- .../mixin/common/ChorusPlantBlockMixin.java | 14 +++--- .../mixin/common/CraftingMenuMixin.java | 4 +- .../mixin/common/EndPodiumFeatureMixin.java | 7 ++- .../mixin/common/LivingEntityMixin.java | 14 +++--- .../mixin/common/NoiseChunkMixin.java | 4 +- .../common/NoiseGeneratorSettingsMixin.java | 2 + .../betterend/mixin/common/PlayerMixin.java | 13 +++-- .../mixin/common/ServerLevelMixin.java | 14 ++---- .../betterend/mixin/common/SlimeMixin.java | 2 +- .../mixin/common/SpikeFeatureMixin.java | 6 ++- .../mixin/common/WorldGenRegionMixin.java | 1 - .../mixin/common/portal/EntityMixin.java | 13 +---- 19 files changed, 105 insertions(+), 95 deletions(-) diff --git a/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java b/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java index bda27bdc..ab06519a 100644 --- a/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java +++ b/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java @@ -170,7 +170,7 @@ public class EndSlimeEntity extends Slime { } } - ((ISlime) this).entityRemove(reason); + ((ISlime) this).be_entityRemove(reason); } @Override diff --git a/src/main/java/org/betterx/betterend/interfaces/ISlime.java b/src/main/java/org/betterx/betterend/interfaces/ISlime.java index 23834d2f..854adc40 100644 --- a/src/main/java/org/betterx/betterend/interfaces/ISlime.java +++ b/src/main/java/org/betterx/betterend/interfaces/ISlime.java @@ -5,5 +5,5 @@ import net.minecraft.world.entity.Entity; public interface ISlime { void be_setSlimeSize(int size, boolean heal); - void entityRemove(Entity.RemovalReason removalReason); + void be_entityRemove(Entity.RemovalReason removalReason); } diff --git a/src/main/java/org/betterx/betterend/mixin/client/BiomeColorsMixin.java b/src/main/java/org/betterx/betterend/mixin/client/BiomeColorsMixin.java index 68b454b8..1ff5df48 100644 --- a/src/main/java/org/betterx/betterend/mixin/client/BiomeColorsMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/client/BiomeColorsMixin.java @@ -14,6 +14,7 @@ import net.minecraft.world.level.BlockAndTintGetter; import net.fabricmc.loader.api.FabricLoader; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -24,22 +25,26 @@ import java.util.Comparator; @Mixin(BiomeColors.class) public class BiomeColorsMixin { - private static final int POISON_COLOR = ColorUtil.color(92, 160, 78); - private static final int STREAM_COLOR = ColorUtil.color(105, 213, 244); - private static final Point[] OFFSETS; - private static final boolean HAS_SODIUM; + @Unique + private static final int BE_POISON_COLOR = ColorUtil.color(92, 160, 78); + @Unique + private static final int BE_STREAM_COLOR = ColorUtil.color(105, 213, 244); + @Unique + private static final Point[] BE_OFFSETS; + @Unique + private static final boolean BE_HAS_SODIUM; @Inject(method = "getAverageWaterColor", at = @At("RETURN"), cancellable = true) private static void be_getWaterColor(BlockAndTintGetter world, BlockPos pos, CallbackInfoReturnable info) { if (ClientOptions.useSulfurWaterColor()) { - BlockAndTintGetter view = HAS_SODIUM ? Minecraft.getInstance().level : world; + BlockAndTintGetter view = BE_HAS_SODIUM ? Minecraft.getInstance().level : world; MutableBlockPos mut = new MutableBlockPos(); mut.setY(pos.getY()); - for (int i = 0; i < OFFSETS.length; i++) { - mut.setX(pos.getX() + OFFSETS[i].x); - mut.setZ(pos.getZ() + OFFSETS[i].y); + for (int i = 0; i < BE_OFFSETS.length; i++) { + mut.setX(pos.getX() + BE_OFFSETS[i].x); + mut.setZ(pos.getZ() + BE_OFFSETS[i].y); if ((view.getBlockState(mut).is(EndBlocks.BRIMSTONE))) { - info.setReturnValue(i < 4 ? POISON_COLOR : STREAM_COLOR); + info.setReturnValue(i < 4 ? BE_POISON_COLOR : BE_STREAM_COLOR); return; } } @@ -47,17 +52,17 @@ public class BiomeColorsMixin { } static { - HAS_SODIUM = FabricLoader.getInstance().isModLoaded("sodium"); + BE_HAS_SODIUM = FabricLoader.getInstance().isModLoaded("sodium"); int index = 0; - OFFSETS = new Point[20]; + BE_OFFSETS = new Point[20]; for (int x = -2; x < 3; x++) { for (int z = -2; z < 3; z++) { if ((x != 0 || z != 0) && (Math.abs(x) != 2 || Math.abs(z) != 2)) { - OFFSETS[index++] = new Point(x, z); + BE_OFFSETS[index++] = new Point(x, z); } } } - Arrays.sort(OFFSETS, Comparator.comparingInt(pos -> MHelper.sqr(pos.x) + MHelper.sqr(pos.y))); + Arrays.sort(BE_OFFSETS, Comparator.comparingInt(pos -> MHelper.sqr(pos.x) + MHelper.sqr(pos.y))); } } diff --git a/src/main/java/org/betterx/betterend/mixin/client/CapeLayerMixin.java b/src/main/java/org/betterx/betterend/mixin/client/CapeLayerMixin.java index 08a09fb7..7d67b7a5 100644 --- a/src/main/java/org/betterx/betterend/mixin/client/CapeLayerMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/client/CapeLayerMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(CapeLayer.class) public class CapeLayerMixin { - @Inject(method = "render", at = @At("HEAD"), cancellable = true) + @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/client/player/AbstractClientPlayer;FFFFFF)V", at = @At("HEAD"), cancellable = true) public void be_checkCustomElytra( PoseStack poseStack, MultiBufferSource multiBufferSource, diff --git a/src/main/java/org/betterx/betterend/mixin/client/ModelLoaderMixin.java b/src/main/java/org/betterx/betterend/mixin/client/ModelLoaderMixin.java index dc4684b8..4abc0568 100644 --- a/src/main/java/org/betterx/betterend/mixin/client/ModelLoaderMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/client/ModelLoaderMixin.java @@ -7,6 +7,7 @@ import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; @@ -22,12 +23,10 @@ public abstract class ModelLoaderMixin { return loc; } + @Unique private boolean be_changeModel(ResourceLocation id) { if (id.getNamespace().equals("minecraft")) { - if (id.getPath().contains("chorus") && !id.getPath().contains("custom_")) { - return true; - } - return false; + return id.getPath().contains("chorus") && !id.getPath().contains("custom_"); } return false; } diff --git a/src/main/java/org/betterx/betterend/mixin/client/MusicTrackerMixin.java b/src/main/java/org/betterx/betterend/mixin/client/MusicTrackerMixin.java index 0d70b48a..065b703d 100644 --- a/src/main/java/org/betterx/betterend/mixin/client/MusicTrackerMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/client/MusicTrackerMixin.java @@ -15,6 +15,7 @@ import net.minecraft.util.RandomSource; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -35,39 +36,42 @@ public abstract class MusicTrackerMixin { @Shadow private int nextSongDelay; - private static float volume = 1; - private static float srcVolume = 0; - private static long time; + @Unique + private static float be_volume = 1; + @Unique + private static float be_srcVolume = 0; + @Unique + private static long be_time; @Inject(method = "tick", at = @At("HEAD"), cancellable = true) public void be_onTick(CallbackInfo info) { if (ClientOptions.blendBiomeMusic()) { Music musicSound = minecraft.getSituationalMusic(); - if (be_checkNullSound(musicSound) && volume > 0 && be_shouldChangeSound(musicSound) && be_isCorrectBiome()) { - if (volume > 0) { - if (srcVolume < 0) { - srcVolume = currentMusic.getVolume(); + if (be_checkNullSound(musicSound) && be_volume > 0 && be_shouldChangeSound(musicSound) && be_isCorrectBiome()) { + if (be_volume > 0) { + if (be_srcVolume < 0) { + be_srcVolume = currentMusic.getVolume(); } if (currentMusic instanceof AbstractSoundInstance) { - ((AbstractSoundInstanceAccessor) currentMusic).setVolume(volume); + ((AbstractSoundInstanceAccessor) currentMusic).setVolume(be_volume); } minecraft.getSoundManager() - .updateSourceVolume(currentMusic.getSource(), currentMusic.getVolume() * volume); + .updateSourceVolume(currentMusic.getSource(), currentMusic.getVolume() * be_volume); long t = System.currentTimeMillis(); - if (volume == 1 && time == 0) { - time = t; + if (be_volume == 1 && be_time == 0) { + be_time = t; } - float delta = (t - time) * 0.0005F; - time = t; - volume -= delta; - if (volume < 0) { - volume = 0; + float delta = (t - be_time) * 0.0005F; + be_time = t; + be_volume -= delta; + if (be_volume < 0) { + be_volume = 0; } } - if (volume == 0) { - volume = 1; - time = 0; - srcVolume = -1; + if (be_volume == 0) { + be_volume = 1; + be_time = 0; + be_srcVolume = -1; this.minecraft.getSoundManager().stop(this.currentMusic); this.nextSongDelay = Mth.nextInt(this.random, 0, musicSound.getMinDelay() / 2); this.currentMusic = null; @@ -77,11 +81,12 @@ public abstract class MusicTrackerMixin { } info.cancel(); } else { - volume = 1; + be_volume = 1; } } } + @Unique private boolean be_isCorrectBiome() { if (minecraft.level == null) { return false; @@ -90,6 +95,7 @@ public abstract class MusicTrackerMixin { .value()) instanceof EndBiome; } + @Unique private boolean be_shouldChangeSound(Music musicSound) { return currentMusic != null && !musicSound .getEvent() @@ -98,6 +104,7 @@ public abstract class MusicTrackerMixin { .equals(this.currentMusic.getLocation()) && musicSound.replaceCurrentMusic(); } + @Unique private boolean be_checkNullSound(Music musicSound) { return musicSound != null && musicSound.getEvent() != null; } diff --git a/src/main/java/org/betterx/betterend/mixin/common/ChorusFlowerBlockMixin.java b/src/main/java/org/betterx/betterend/mixin/common/ChorusFlowerBlockMixin.java index 6a83bd02..5630cb14 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/ChorusFlowerBlockMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/ChorusFlowerBlockMixin.java @@ -23,15 +23,20 @@ import net.minecraft.world.phys.shapes.VoxelShape; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; 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 org.jetbrains.annotations.NotNull; + @Mixin(value = ChorusFlowerBlock.class, priority = 100) public abstract class ChorusFlowerBlockMixin extends Block { - private static final VoxelShape SHAPE_FULL = Block.box(0, 0, 0, 16, 16, 16); - private static final VoxelShape SHAPE_HALF = Block.box(0, 0, 0, 16, 4, 16); + @Unique + private static final VoxelShape BE_SHAPE_FULL = Block.box(0, 0, 0, 16, 16, 16); + @Unique + private static final VoxelShape BE_SHAPE_HALF = Block.box(0, 0, 0, 16, 4, 16); public ChorusFlowerBlockMixin(Properties settings) { super(settings); @@ -87,9 +92,9 @@ public abstract class ChorusFlowerBlockMixin extends Block { @Override @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { + public @NotNull VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { if (GeneratorOptions.changeChorusPlant()) { - return state.getValue(ChorusFlowerBlock.AGE) == 5 ? SHAPE_HALF : SHAPE_FULL; + return state.getValue(ChorusFlowerBlock.AGE) == 5 ? BE_SHAPE_HALF : BE_SHAPE_FULL; } else { return super.getShape(state, world, pos, context); } diff --git a/src/main/java/org/betterx/betterend/mixin/common/ChorusPlantBlockMixin.java b/src/main/java/org/betterx/betterend/mixin/common/ChorusPlantBlockMixin.java index 2e47bc30..d75c0a7e 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/ChorusPlantBlockMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/ChorusPlantBlockMixin.java @@ -27,7 +27,7 @@ public abstract class ChorusPlantBlockMixin extends Block { super(settings); } - @Inject(method = "getStateForPlacement(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/level/block/state/BlockState;", at = @At("RETURN"), cancellable = true) + @Inject(method = "getStateForPlacement", at = @At("RETURN"), cancellable = true) private void be_getStateForPlacement(BlockPlaceContext ctx, CallbackInfoReturnable info) { BlockPos pos = ctx.getClickedPos(); Level world = ctx.getLevel(); @@ -38,16 +38,14 @@ public abstract class ChorusPlantBlockMixin extends Block { } } - @Inject(method = "Lnet/minecraft/world/level/block/ChorusPlantBlock;getStateForPlacement" + "(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)" + "Lnet/minecraft/world/level/block/state/BlockState;", at = @At("RETURN"), cancellable = true) - private void be_getStateForPlacement( - BlockGetter blockGetter, - BlockPos blockPos, - CallbackInfoReturnable info + @Inject(method = "getStateWithConnections", at = @At("RETURN"), cancellable = true) + private static void be_getStateWithConnections( + BlockGetter blockGetter, BlockPos blockPos, BlockState blockState, CallbackInfoReturnable cir ) { - BlockState plant = info.getReturnValue(); + BlockState plant = cir.getReturnValue(); if (plant.is(Blocks.CHORUS_PLANT) && blockGetter.getBlockState(blockPos.below()) .is(CommonBlockTags.END_STONES)) { - info.setReturnValue(plant.setValue(BlockStateProperties.DOWN, true)); + cir.setReturnValue(plant.setValue(BlockStateProperties.DOWN, true)); } } diff --git a/src/main/java/org/betterx/betterend/mixin/common/CraftingMenuMixin.java b/src/main/java/org/betterx/betterend/mixin/common/CraftingMenuMixin.java index ee74d62b..67ba111b 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/CraftingMenuMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/CraftingMenuMixin.java @@ -20,9 +20,7 @@ public abstract class CraftingMenuMixin { @Inject(method = "stillValid", at = @At("HEAD"), cancellable = true) private void be_stillValid(Player player, CallbackInfoReturnable info) { - if (access.evaluate((world, pos) -> { - return world.getBlockState(pos).getBlock() instanceof CraftingTableBlock; - }, true)) { + if (access.evaluate((world, pos) -> world.getBlockState(pos).getBlock() instanceof CraftingTableBlock, true)) { info.setReturnValue(true); } } diff --git a/src/main/java/org/betterx/betterend/mixin/common/EndPodiumFeatureMixin.java b/src/main/java/org/betterx/betterend/mixin/common/EndPodiumFeatureMixin.java index 8f112eab..71f0e455 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/EndPodiumFeatureMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/EndPodiumFeatureMixin.java @@ -21,6 +21,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -30,6 +31,7 @@ import java.util.Optional; @Mixin(EndPodiumFeature.class) public class EndPodiumFeatureMixin { + @Unique private static BlockPos be_portalPosition; @Final @@ -59,11 +61,11 @@ public class EndPodiumFeatureMixin { } } - @ModifyVariable(method = "place", ordinal = 0, at = @At("HEAD")) + @ModifyVariable(method = "place", ordinal = 0, at = @At("HEAD"), argsOnly = true) private FeaturePlaceContext be_setPosOnGround(FeaturePlaceContext featurePlaceContext) { WorldGenLevel world = featurePlaceContext.level(); BlockPos pos = be_updatePortalPos(world); - return new FeaturePlaceContext( + return new FeaturePlaceContext<>( Optional.empty(), world, featurePlaceContext.chunkGenerator(), @@ -73,6 +75,7 @@ public class EndPodiumFeatureMixin { ); } + @Unique private BlockPos be_updatePortalPos(WorldGenLevel world) { CompoundTag compound = WorldConfig.getRootTag(BetterEnd.MOD_ID).getCompound("portal"); be_portalPosition = NbtUtils.readBlockPos(compound); diff --git a/src/main/java/org/betterx/betterend/mixin/common/LivingEntityMixin.java b/src/main/java/org/betterx/betterend/mixin/common/LivingEntityMixin.java index bf2f9fcf..43a26b53 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/LivingEntityMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/LivingEntityMixin.java @@ -21,6 +21,7 @@ import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; @@ -40,9 +41,10 @@ public abstract class LivingEntityMixin extends Entity { @Shadow public abstract AttributeMap getAttributes(); - private Entity lastAttacker; + @Unique + private Entity be_lastAttacker; - @Inject(method = "createLivingAttributes", at = @At("RETURN"), cancellable = true) + @Inject(method = "createLivingAttributes", at = @At("RETURN")) private static void be_addLivingAttributes(CallbackInfoReturnable info) { EndAttributes.addLivingEntityAttributes(info.getReturnValue()); } @@ -75,23 +77,23 @@ public abstract class LivingEntityMixin extends Entity { @Inject(method = "hurt", at = @At("HEAD")) public void be_hurt(DamageSource source, float amount, CallbackInfoReturnable info) { - this.lastAttacker = source.getEntity(); + this.be_lastAttacker = source.getEntity(); } @ModifyArg(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"), index = 0) private double be_increaseKnockback(double value, double x, double z) { - if (lastAttacker != null && lastAttacker instanceof LivingEntity) { - LivingEntity attacker = (LivingEntity) lastAttacker; + if (be_lastAttacker != null && be_lastAttacker instanceof LivingEntity attacker) { value += this.be_getKnockback(attacker.getMainHandItem().getItem()); } return value; } + @Unique private double be_getKnockback(Item tool) { if (tool == null) return 0.0D; Collection modifiers = tool.getDefaultAttributeModifiers(EquipmentSlot.MAINHAND) .get(Attributes.ATTACK_KNOCKBACK); - if (modifiers.size() > 0) { + if (!modifiers.isEmpty()) { return modifiers.iterator().next().getAmount(); } return 0.0D; diff --git a/src/main/java/org/betterx/betterend/mixin/common/NoiseChunkMixin.java b/src/main/java/org/betterx/betterend/mixin/common/NoiseChunkMixin.java index 4414ac55..91442c8e 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/NoiseChunkMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/NoiseChunkMixin.java @@ -10,6 +10,7 @@ import net.minecraft.world.level.levelgen.blending.Blender; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -18,6 +19,7 @@ import java.util.List; @Mixin(NoiseChunk.class) public class NoiseChunkMixin implements BETargetChecker { + @Unique private boolean be_isEndGenerator; @Inject(method = "*", at = @At("TAIL")) @@ -50,7 +52,7 @@ public class NoiseChunkMixin implements BETargetChecker { @Shadow @Final - private List interpolators; + List interpolators; @Inject(method = "fillSlice", at = @At("HEAD"), cancellable = true) private void be_fillSlice(boolean primarySlice, int x, CallbackInfo info) { diff --git a/src/main/java/org/betterx/betterend/mixin/common/NoiseGeneratorSettingsMixin.java b/src/main/java/org/betterx/betterend/mixin/common/NoiseGeneratorSettingsMixin.java index 82fa21de..d5e89056 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/NoiseGeneratorSettingsMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/NoiseGeneratorSettingsMixin.java @@ -5,9 +5,11 @@ import org.betterx.betterend.interfaces.BETargetChecker; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; @Mixin(NoiseGeneratorSettings.class) public class NoiseGeneratorSettingsMixin implements BETargetChecker { + @Unique private boolean be_isTargetGenerator; @Override diff --git a/src/main/java/org/betterx/betterend/mixin/common/PlayerMixin.java b/src/main/java/org/betterx/betterend/mixin/common/PlayerMixin.java index badb1099..c22b8e6c 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/PlayerMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/PlayerMixin.java @@ -17,6 +17,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -29,7 +30,8 @@ public abstract class PlayerMixin extends LivingEntity { super(entityType, level); } - private static Direction[] horizontal; + @Unique + private static Direction[] be_horizontal; @Inject(method = "findRespawnPositionAndUseSpawnBlock", at = @At(value = "HEAD"), cancellable = true) private static void be_findRespawnPositionAndUseSpawnBlock( @@ -47,17 +49,18 @@ public abstract class PlayerMixin extends LivingEntity { } } + @Unique private static Optional be_obeliskRespawnPosition(ServerLevel world, BlockPos pos, BlockState state) { if (state.getValue(BlockProperties.TRIPLE_SHAPE) == TripleShape.TOP) { pos = pos.below(2); } else if (state.getValue(BlockProperties.TRIPLE_SHAPE) == TripleShape.MIDDLE) { pos = pos.below(); } - if (horizontal == null) { - horizontal = BlocksHelper.makeHorizontal(); + if (be_horizontal == null) { + be_horizontal = BlocksHelper.makeHorizontal(); } - MHelper.shuffle(horizontal, world.getRandom()); - for (Direction dir : horizontal) { + MHelper.shuffle(be_horizontal, world.getRandom()); + for (Direction dir : be_horizontal) { BlockPos p = pos.relative(dir); BlockState state2 = world.getBlockState(p); if (!state2.blocksMotion() && state2.getCollisionShape(world, pos).isEmpty()) { diff --git a/src/main/java/org/betterx/betterend/mixin/common/ServerLevelMixin.java b/src/main/java/org/betterx/betterend/mixin/common/ServerLevelMixin.java index 908ecd6b..c14f7da5 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/ServerLevelMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/ServerLevelMixin.java @@ -16,6 +16,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.RandomSequences; +import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -38,13 +39,6 @@ import java.util.function.Supplier; @Mixin(ServerLevel.class) public abstract class ServerLevelMixin extends Level { - - private final static List> BE_TEST_DIMENSIONS = List.of( - BuiltinDimensionTypes.OVERWORLD, - BuiltinDimensionTypes.OVERWORLD_CAVES, - BuiltinDimensionTypes.NETHER - ); - protected ServerLevelMixin( WritableLevelData writableLevelData, ResourceKey resourceKey, @@ -74,12 +68,12 @@ public abstract class ServerLevelMixin extends Level { Executor executor, LevelStorageAccess levelStorageAccess, ServerLevelData serverLevelData, - ResourceKey resourceKey, + ResourceKey resourceKey, LevelStem levelStem, ChunkProgressListener chunkProgressListener, boolean bl, long seed, - List list, + List list, boolean bl2, RandomSequences randomSequences, CallbackInfo ci @@ -93,7 +87,7 @@ public abstract class ServerLevelMixin extends Level { TerrainGenerator.makeObsidianPlatform(serverLevel, info); } - @ModifyArg(method = "tickChunk", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;setBlockAndUpdate(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z")) + @ModifyArg(method = "tickPrecipitation", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;setBlockAndUpdate(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z")) private BlockState be_modifyTickState(BlockPos pos, BlockState state) { if (state.is(Blocks.ICE)) { ResourceLocation biome = BiomeAPI.getBiomeID(getBiome(pos)); diff --git a/src/main/java/org/betterx/betterend/mixin/common/SlimeMixin.java b/src/main/java/org/betterx/betterend/mixin/common/SlimeMixin.java index 4f79a15a..051a44b0 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/SlimeMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/SlimeMixin.java @@ -26,7 +26,7 @@ public abstract class SlimeMixin extends Entity implements ISlime { } @Override - public void entityRemove(Entity.RemovalReason removalReason) { + public void be_entityRemove(Entity.RemovalReason removalReason) { super.remove(removalReason); } } diff --git a/src/main/java/org/betterx/betterend/mixin/common/SpikeFeatureMixin.java b/src/main/java/org/betterx/betterend/mixin/common/SpikeFeatureMixin.java index 734fe08f..3c40d394 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/SpikeFeatureMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/SpikeFeatureMixin.java @@ -26,6 +26,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlac import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -106,7 +107,7 @@ public class SpikeFeatureMixin { if (x2 + z2 <= r2) { for (int py = minY; py < maxY; py++) { mut.setY(py); - if (world.getBlockState(mut).canBeReplaced()){ + if (world.getBlockState(mut).canBeReplaced()) { if ((px == radius || px == -radius || pz == radius || pz == -radius) && random.nextInt( 24) == 0) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.CRYING_OBSIDIAN); @@ -131,7 +132,7 @@ public class SpikeFeatureMixin { if (x2 + z2 <= r2) { for (int py = minY; py < maxY; py++) { mut.setY(py); - if (world.getBlockState(mut).canBeReplaced()){ + if (world.getBlockState(mut).canBeReplaced()) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.OBSIDIAN); } } @@ -186,6 +187,7 @@ public class SpikeFeatureMixin { info.cancel(); } + @Unique private boolean be_radiusInRange(int radius) { return radius > 1 && radius < 6; } diff --git a/src/main/java/org/betterx/betterend/mixin/common/WorldGenRegionMixin.java b/src/main/java/org/betterx/betterend/mixin/common/WorldGenRegionMixin.java index 744e1ffc..18c7c767 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/WorldGenRegionMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/WorldGenRegionMixin.java @@ -23,7 +23,6 @@ public class WorldGenRegionMixin { ChunkPos cPos = center.getPos(); int x = blockPos.getX() >> 4; int z = blockPos.getZ() >> 4; - WorldGenRegion region = (WorldGenRegion) (Object) this; info.setReturnValue(Math.abs(x - cPos.x) < 2 && Math.abs(z - cPos.z) < 2); } } diff --git a/src/main/java/org/betterx/betterend/mixin/common/portal/EntityMixin.java b/src/main/java/org/betterx/betterend/mixin/common/portal/EntityMixin.java index 277de76e..d473f052 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/portal/EntityMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/portal/EntityMixin.java @@ -3,19 +3,18 @@ package org.betterx.betterend.mixin.common.portal; import org.betterx.betterend.portal.TravelerState; import org.betterx.betterend.portal.TravelingEntity; -import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.portal.PortalInfo; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; 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(Entity.class) public class EntityMixin implements TravelingEntity { + @Unique private final TravelerState be_travelerState = TravelerState.init((net.minecraft.world.entity.Entity) (Object) this); public TravelerState be_getTravelerState() { @@ -26,12 +25,4 @@ public class EntityMixin implements TravelingEntity { void be_handleNetherPortal(CallbackInfo ci) { if (be_travelerState != null) be_travelerState.portalTick(); } - - @Inject(method = "findDimensionEntryPoint", at = @At("HEAD"), cancellable = true) - void be_findDimensionEntryPoint(ServerLevel serverLevel, CallbackInfoReturnable cir) { -// if (be_travelerState != null) { -// PortalInfo pi = be_travelerState.findDimensionEntryPoint(serverLevel); -// if (pi != null) cir.setReturnValue(pi); -// } - } }