From af419dbc8a2103ab00ec75198382770dbc0b896e Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 7 Aug 2019 14:56:26 +0200 Subject: [PATCH] husks spawn regardless of light level in temples and better loaded_ep for 1.14 --- .../java/carpet/mixins/HuskEntityMixin.java | 21 +++++++++++++++++++ .../java/carpet/script/CarpetExpression.java | 6 ++++-- src/main/resources/carpet.mixins.json | 3 +++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/main/java/carpet/mixins/HuskEntityMixin.java diff --git a/src/main/java/carpet/mixins/HuskEntityMixin.java b/src/main/java/carpet/mixins/HuskEntityMixin.java new file mode 100644 index 00000000..0fe74a53 --- /dev/null +++ b/src/main/java/carpet/mixins/HuskEntityMixin.java @@ -0,0 +1,21 @@ +package carpet.mixins; + +import carpet.settings.CarpetSettings; +import net.minecraft.entity.mob.HuskEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.feature.Feature; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(HuskEntity.class) +public class HuskEntityMixin +{ + @Redirect(method = "method_20677", at = @At(value = "INVOKE", target="Lnet/minecraft/world/IWorld;isSkyVisible(Lnet/minecraft/util/math/BlockPos;)Z")) + private static boolean isSkylightOrTempleVisible(IWorld iWorld, BlockPos blockPos_1) + { + return iWorld.isSkyVisible(blockPos_1) || + (CarpetSettings.huskSpawningInTemples && Feature.DESERT_PYRAMID.isApproximatelyInsideStructure(iWorld, blockPos_1)); + } +} diff --git a/src/main/java/carpet/script/CarpetExpression.java b/src/main/java/carpet/script/CarpetExpression.java index 56715295..70558a8c 100644 --- a/src/main/java/carpet/script/CarpetExpression.java +++ b/src/main/java/carpet/script/CarpetExpression.java @@ -65,6 +65,7 @@ import net.minecraft.util.Clearable; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; +import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.EulerAngle; import net.minecraft.util.math.Vec3d; import net.minecraft.util.registry.Registry; @@ -754,8 +755,9 @@ public class CarpetExpression this.expr.addLazyFunction("loaded_ep", -1, (c, t, lv) -> { BlockPos pos = BlockValue.fromParams((CarpetContext)c, lv, 0).block.getPos(); - Value retval = ((CarpetContext)c).s.getWorld().isAreaLoaded(pos.getX() - 32, 0, pos.getZ() - 32, - pos.getX() + 32, 0, pos.getZ() + 32) ? Value.TRUE : Value.FALSE; + Value retval = ((CarpetContext)c).s.getWorld().getChunkManager().shouldTickChunk(new ChunkPos(pos))?Value.TRUE : Value.FALSE; + //Value retval = ((CarpetContext)c).s.getWorld().isAreaLoaded(pos.getX() - 32, 0, pos.getZ() - 32, + // pos.getX() + 32, 0, pos.getZ() + 32) ? Value.TRUE : Value.FALSE; return (c_, t_) -> retval; }); diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 6dd81eaa..1b030f15 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -64,8 +64,11 @@ "PlayerEntity_parrotMixin", "SaplingBlockMixin", "EntityMixin", + "GuardianEntityMixin", "DesertPyramidFeatureMixin", + "HuskEntityMixin", + "OverworldChunkGeneratorMixin", "ServerChunkManagerMixin",