From 6008c8e4a5f38ab335891724bb22d454093388f7 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Wed, 5 Jun 2019 15:52:17 +0530 Subject: [PATCH] added renewableSponges mixins --- src/main/java/carpet/CarpetSettings.java | 2 +- .../carpet/mixins/GuardianEntityMixin.java | 48 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/GuardianEntityMixin.java diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 5e3357dd..c8d69441 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -113,7 +113,7 @@ public class CarpetSettings "Counters are global and shared between players, 16 channels available", "Items counted are destroyed, count up to one stack per tick per hopper") .isACommand().boolAccelerate().defaultFalse(), - rule("renewableSponges", "experimental feature", "Guardians turn into Elder Guardian when struck by lightning").wip(), + rule("renewableSponges", "experimental feature", "Guardians turn into Elder Guardian when struck by lightning"), rule("movableTileEntities", "experimental", "Pistons can push tile entities, like hoppers, chests etc.").boolAccelerate().wip(), rule("desertShrubs", "feature", "Saplings turn into dead shrubs in hot climates and no water access when it attempts to grow into a tree").wip(), rule("silverFishDropGravel", "experimental", "Silverfish drop a gravel item when breaking out of a block"), diff --git a/src/main/java/carpet/mixins/GuardianEntityMixin.java b/src/main/java/carpet/mixins/GuardianEntityMixin.java new file mode 100644 index 00000000..d2691aa9 --- /dev/null +++ b/src/main/java/carpet/mixins/GuardianEntityMixin.java @@ -0,0 +1,48 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.entity.EntityData; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LightningEntity; +import net.minecraft.entity.SpawnType; +import net.minecraft.entity.mob.ElderGuardianEntity; +import net.minecraft.entity.mob.GuardianEntity; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(GuardianEntity.class) +public abstract class GuardianEntityMixin extends HostileEntity +{ + protected GuardianEntityMixin(EntityType entityType_1, World world_1) + { + super(entityType_1, world_1); + } + + @Override + public void onStruckByLightning(LightningEntity lightning) + { + if (!this.world.isClient && !this.removed && CarpetSettings.getBool("renewableSponges")) + { + ElderGuardianEntity elderGuardian = new ElderGuardianEntity(EntityType.ELDER_GUARDIAN ,this.world); + elderGuardian.setPositionAndAngles(this.x, this.y, this.z, this.yaw, this.pitch); + elderGuardian.initialize(this.world ,this.world.getLocalDifficulty(new BlockPos(elderGuardian)), SpawnType.EVENT, (EntityData)null, (CompoundTag)null); + elderGuardian.setAiDisabled(this.isAiDisabled()); + + if (this.hasCustomName()) + { + elderGuardian.setCustomName(this.getCustomName()); + elderGuardian.setCustomNameVisible(this.isCustomNameVisible()); + } + + this.world.spawnEntity(elderGuardian); + this.remove(); + } + else + { + super.onStruckByLightning(lightning); + } + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 19c5fb26..c3d73277 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -52,6 +52,7 @@ "ServerPlayerInteractionManager_scarpetEventsMixin", "EntityMixin", "DirectionMixin", + "GuardianEntityMixin", "ServerChunkManagerMixin", "SpawnHelperMixin",