From 03061ba114042a620ec2e71c7ee75f59d332ccb4 Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 1 Jul 2020 15:41:25 -0300 Subject: [PATCH] 20w27a --- gradle.properties | 4 ++-- src/main/java/carpet/fakes/EntityInterface.java | 4 ++++ src/main/java/carpet/helpers/FeatureGenerator.java | 2 +- .../carpet/mixins/Entity_scarpetEventsMixin.java | 13 +++++++++++++ .../java/carpet/mixins/GuardianEntityMixin.java | 9 +++++---- src/main/java/carpet/mixins/HuskEntityMixin.java | 9 +++++---- src/main/java/carpet/mixins/InfestedBlockMixin.java | 5 +++-- src/main/java/carpet/mixins/SpawnHelperMixin.java | 9 +++++---- .../StructureBlockBlockEntity_fillUpdatesMixin.java | 5 +++-- .../carpet/mixins/Structure_fillUpdatesMixin.java | 11 ++++++----- .../java/carpet/mixins/VillagerEntity_aiMixin.java | 13 +++++++------ src/main/java/carpet/script/value/EntityValue.java | 4 ++-- src/main/java/carpet/utils/BlockInfo.java | 5 +++-- .../java/carpet/utils/PerimeterDiagnostics.java | 2 +- 14 files changed, 60 insertions(+), 35 deletions(-) diff --git a/gradle.properties b/gradle.properties index 34eb1049..61ec4081 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=1.16.1 - yarn_mappings=1.16.1+build.19 + minecraft_version=20w27a + yarn_mappings=20w27a+build.1 loader_version=0.8.9+build.203 # Mod Properties diff --git a/src/main/java/carpet/fakes/EntityInterface.java b/src/main/java/carpet/fakes/EntityInterface.java index 4970d5e7..80093eda 100644 --- a/src/main/java/carpet/fakes/EntityInterface.java +++ b/src/main/java/carpet/fakes/EntityInterface.java @@ -15,4 +15,8 @@ public interface EntityInterface int getPortalTimer(); void setPortalTimer(int amount); + + int getPublicNetherPortalCooldown(); + void setPublicNetherPortalCooldown(int what); + } diff --git a/src/main/java/carpet/helpers/FeatureGenerator.java b/src/main/java/carpet/helpers/FeatureGenerator.java index 7026c653..42f263ea 100644 --- a/src/main/java/carpet/helpers/FeatureGenerator.java +++ b/src/main/java/carpet/helpers/FeatureGenerator.java @@ -72,7 +72,7 @@ public class FeatureGenerator CarpetSettings.skipGenerationChecks=true; try { - return feature.generate(w, w.getStructureAccessor(), w.getChunkManager().getChunkGenerator(), w.random, p); + return feature.generate(w, w.getChunkManager().getChunkGenerator(), w.random, p); } finally { diff --git a/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java b/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java index 45a8afcf..79a3e168 100644 --- a/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java +++ b/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java @@ -15,6 +15,7 @@ public abstract class Entity_scarpetEventsMixin implements EntityInterface @Shadow public boolean removed; @Shadow protected int netherPortalTime; + @Shadow private int netherPortalCooldown; private boolean permanentVehicle; private final EntityEventsGroup events = new EntityEventsGroup(); @@ -37,6 +38,18 @@ public abstract class Entity_scarpetEventsMixin implements EntityInterface permanentVehicle = permanent; } + @Override + public int getPublicNetherPortalCooldown() + { + return netherPortalCooldown; + } + + @Override + public void setPublicNetherPortalCooldown(int what) + { + netherPortalCooldown = what; + } + @Override public int getPortalTimer() { diff --git a/src/main/java/carpet/mixins/GuardianEntityMixin.java b/src/main/java/carpet/mixins/GuardianEntityMixin.java index 7c909804..0d1648b1 100644 --- a/src/main/java/carpet/mixins/GuardianEntityMixin.java +++ b/src/main/java/carpet/mixins/GuardianEntityMixin.java @@ -9,6 +9,7 @@ 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.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -20,15 +21,15 @@ public abstract class GuardianEntityMixin extends HostileEntity { super(entityType_1, world_1); } - + @Override - public void onStruckByLightning(LightningEntity lightning) + public void onStruckByLightning(ServerWorld serverWorld, LightningEntity lightningEntity) { if (!this.world.isClient && !this.removed && CarpetSettings.renewableSponges && !((Object)this instanceof ElderGuardianEntity)) { ElderGuardianEntity elderGuardian = new ElderGuardianEntity(EntityType.ELDER_GUARDIAN ,this.world); elderGuardian.refreshPositionAndAngles(this.getX(), this.getY(), this.getZ(), this.yaw, this.pitch); - elderGuardian.initialize(this.world ,this.world.getLocalDifficulty(elderGuardian.getBlockPos()), SpawnReason.CONVERSION, (EntityData)null, (CompoundTag)null); + elderGuardian.initialize(serverWorld ,this.world.getLocalDifficulty(elderGuardian.getBlockPos()), SpawnReason.CONVERSION, (EntityData)null, (CompoundTag)null); elderGuardian.setAiDisabled(this.isAiDisabled()); if (this.hasCustomName()) @@ -42,7 +43,7 @@ public abstract class GuardianEntityMixin extends HostileEntity } else { - super.onStruckByLightning(lightning); + super.onStruckByLightning(serverWorld, lightningEntity); } } } diff --git a/src/main/java/carpet/mixins/HuskEntityMixin.java b/src/main/java/carpet/mixins/HuskEntityMixin.java index 89364a0b..9ddb8a93 100644 --- a/src/main/java/carpet/mixins/HuskEntityMixin.java +++ b/src/main/java/carpet/mixins/HuskEntityMixin.java @@ -1,6 +1,7 @@ package carpet.mixins; import carpet.CarpetSettings; +import net.minecraft.class_5425; import net.minecraft.entity.mob.HuskEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -14,10 +15,10 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(HuskEntity.class) public class HuskEntityMixin { - @Redirect(method = "canSpawn", at = @At(value = "INVOKE", target="Lnet/minecraft/world/WorldAccess;isSkyVisible(Lnet/minecraft/util/math/BlockPos;)Z")) - private static boolean isSkylightOrTempleVisible(WorldAccess WorldAccess, BlockPos blockPos_1) + @Redirect(method = "canSpawn", at = @At(value = "INVOKE", target="Lnet/minecraft/class_5425;isSkyVisible(Lnet/minecraft/util/math/BlockPos;)Z")) + private static boolean isSkylightOrTempleVisible(class_5425 class_5425, BlockPos pos) { - return WorldAccess.isSkyVisible(blockPos_1) || - (CarpetSettings.huskSpawningInTemples && (((ServerWorld)WorldAccess).getStructureAccessor().method_28388(blockPos_1, false, StructureFeature.DESERT_PYRAMID).hasChildren())); + return class_5425.isSkyVisible(pos) || + (CarpetSettings.huskSpawningInTemples && (((ServerWorld)class_5425).getStructureAccessor().method_28388(pos, false, StructureFeature.DESERT_PYRAMID).hasChildren())); } } diff --git a/src/main/java/carpet/mixins/InfestedBlockMixin.java b/src/main/java/carpet/mixins/InfestedBlockMixin.java index ef845a7b..1f086b17 100644 --- a/src/main/java/carpet/mixins/InfestedBlockMixin.java +++ b/src/main/java/carpet/mixins/InfestedBlockMixin.java @@ -6,6 +6,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.InfestedBlock; import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -23,11 +24,11 @@ public abstract class InfestedBlockMixin extends Block @Inject(method = "spawnSilverfish", at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/entity/mob/SilverfishEntity;playSpawnEffects()V")) - private void onOnStacksDropped(World world, BlockPos blockPos, CallbackInfo ci) + private void onOnStacksDropped(ServerWorld serverWorld, BlockPos pos, CallbackInfo ci) { if (CarpetSettings.silverFishDropGravel) { - dropStack(world, blockPos, new ItemStack(Blocks.GRAVEL)); + dropStack(serverWorld, pos, new ItemStack(Blocks.GRAVEL)); } } } \ No newline at end of file diff --git a/src/main/java/carpet/mixins/SpawnHelperMixin.java b/src/main/java/carpet/mixins/SpawnHelperMixin.java index e8e53850..d9ecf322 100644 --- a/src/main/java/carpet/mixins/SpawnHelperMixin.java +++ b/src/main/java/carpet/mixins/SpawnHelperMixin.java @@ -6,6 +6,7 @@ import carpet.utils.SpawnReporter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.FenceGateBlock; +import net.minecraft.class_5425; import net.minecraft.entity.Entity; import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.EntityData; @@ -175,12 +176,12 @@ public class SpawnHelperMixin @Redirect(method = "spawnEntitiesInChunk(Lnet/minecraft/entity/SpawnGroup;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/world/chunk/Chunk;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/world/SpawnHelper$Checker;Lnet/minecraft/world/SpawnHelper$Runner;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/entity/mob/MobEntity;initialize(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/world/LocalDifficulty;Lnet/minecraft/entity/SpawnReason;Lnet/minecraft/entity/EntityData;Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/entity/EntityData;" + target = "Lnet/minecraft/entity/mob/MobEntity;initialize(Lnet/minecraft/class_5425;Lnet/minecraft/world/LocalDifficulty;Lnet/minecraft/entity/SpawnReason;Lnet/minecraft/entity/EntityData;Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/entity/EntityData;" )) - private static EntityData spawnEntity(MobEntity mobEntity, WorldAccess WorldAccess_1, LocalDifficulty localDifficulty_1, SpawnReason spawnType_1, EntityData entityData_1, CompoundTag compoundTag_1) + private static EntityData spawnEntity(MobEntity mobEntity, class_5425 foo, LocalDifficulty localDifficulty_1, SpawnReason spawnType_1, EntityData entityData_1, CompoundTag compoundTag_1) { - if (!SpawnReporter.mock_spawns) - return mobEntity.initialize(WorldAccess_1, localDifficulty_1, spawnType_1, entityData_1, compoundTag_1); + if (!SpawnReporter.mock_spawns) // WorldAccess + return mobEntity.initialize(foo, localDifficulty_1, spawnType_1, entityData_1, compoundTag_1); return null; } diff --git a/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java b/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java index 1bc38c81..e3e9b7a1 100644 --- a/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java +++ b/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java @@ -2,6 +2,7 @@ package carpet.mixins; import carpet.CarpetSettings; import net.minecraft.block.entity.StructureBlockBlockEntity; +import net.minecraft.class_5425; import net.minecraft.structure.Structure; import net.minecraft.structure.StructurePlacementData; import net.minecraft.util.math.BlockPos; @@ -17,9 +18,9 @@ public abstract class StructureBlockBlockEntity_fillUpdatesMixin { @Redirect(method = "place", at = @At( value = "INVOKE", - target = "Lnet/minecraft/structure/Structure;place(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;)V" + target = "Lnet/minecraft/structure/Structure;place(Lnet/minecraft/class_5425;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;)V" )) - private void onStructurePlacen(Structure structure, WorldAccess world, BlockPos pos, StructurePlacementData placementData, Random random) + private void onStructurePlacen(Structure structure, class_5425 world, BlockPos pos, StructurePlacementData placementData, Random random) { if(!CarpetSettings.fillUpdates) CarpetSettings.impendingFillSkipUpdates = true; diff --git a/src/main/java/carpet/mixins/Structure_fillUpdatesMixin.java b/src/main/java/carpet/mixins/Structure_fillUpdatesMixin.java index 880b53df..4dc21a4f 100644 --- a/src/main/java/carpet/mixins/Structure_fillUpdatesMixin.java +++ b/src/main/java/carpet/mixins/Structure_fillUpdatesMixin.java @@ -2,6 +2,7 @@ package carpet.mixins; import carpet.CarpetSettings; import net.minecraft.block.Block; +import net.minecraft.class_5425; import net.minecraft.structure.Structure; import net.minecraft.structure.StructurePlacementData; import net.minecraft.util.math.BlockPos; @@ -13,17 +14,17 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(Structure.class) public class Structure_fillUpdatesMixin { - @Redirect( method = "place(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;I)Z", at = @At( + @Redirect( method = "place(Lnet/minecraft/class_5425;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;I)Z", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/WorldAccess;updateNeighbors(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;)V" + target = "Lnet/minecraft/class_5425;updateNeighbors(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;)V" )) - private void skipUpdateNeighbours(WorldAccess WorldAccess, BlockPos var1, Block var2) + private void skipUpdateNeighbours(class_5425 class_5425, BlockPos pos, Block block) { if (!CarpetSettings.impendingFillSkipUpdates) - WorldAccess.updateNeighbors(var1, var2); + class_5425.updateNeighbors(pos, block); } - @Redirect(method = "place(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;I)Z", at = @At( + @Redirect(method = "place(Lnet/minecraft/class_5425;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;Ljava/util/Random;I)Z", at = @At( value = "INVOKE", target = "Lnet/minecraft/structure/StructurePlacementData;shouldUpdateNeighbors()Z" )) diff --git a/src/main/java/carpet/mixins/VillagerEntity_aiMixin.java b/src/main/java/carpet/mixins/VillagerEntity_aiMixin.java index 1fc2871d..ef4ee7ff 100644 --- a/src/main/java/carpet/mixins/VillagerEntity_aiMixin.java +++ b/src/main/java/carpet/mixins/VillagerEntity_aiMixin.java @@ -40,7 +40,7 @@ import java.util.stream.Collectors; @Mixin(VillagerEntity.class) public abstract class VillagerEntity_aiMixin extends AbstractTraderEntity { - @Shadow protected abstract boolean hasSeenGolemRecently(long long_1); + //@Shadow protected abstract boolean hasSeenGolemRecently(long long_1); @Shadow protected abstract void sayNo(); @@ -62,14 +62,15 @@ public abstract class VillagerEntity_aiMixin extends AbstractTraderEntity if (MobAI.isTracking(this, MobAI.TrackingType.IRON_GOLEM_SPAWNING)) { long time; - Optional optional_1 = this.brain.getOptionalMemory(MemoryModuleType.GOLEM_LAST_SEEN_TIME); + Optional optional_1 = this.brain.getOptionalMemory(MemoryModuleType.GOLEM_DETECTED_RECENTLY); if (!optional_1.isPresent()) { time = 0; } else { - Long long_2 = optional_1.get(); - time = long_2+600 - getEntityWorld().getTime(); + //Long long_2 = optional_1.get(); #TODO fixme need last seen golem time. + //time = long_2+600 - getEntityWorld().getTime(); + time = 600; } - boolean recentlySeen = hasSeenGolemRecently(getEntityWorld().getTime()); + boolean recentlySeen = time > 0; Optional optional_11 = this.brain.getOptionalMemory(MemoryModuleType.LAST_SLEPT); //Optional optional_22 = this.brain.getOptionalMemory(MemoryModuleType.LAST_WORKED_AT_POI); //boolean work = false; @@ -177,7 +178,7 @@ public abstract class VillagerEntity_aiMixin extends AbstractTraderEntity target = "Lnet/minecraft/util/math/Box;expand(DDD)Lnet/minecraft/util/math/Box;", shift = At.Shift.AFTER )) - private void particleIt(long long_1, int int_1, CallbackInfo ci) + private void particleIt(ServerWorld serverWorld, long l, int i, CallbackInfo ci) { if (MobAI.isTracking(this, MobAI.TrackingType.IRON_GOLEM_SPAWNING)) { diff --git a/src/main/java/carpet/script/value/EntityValue.java b/src/main/java/carpet/script/value/EntityValue.java index e9bb8afd..5dbdfc4a 100644 --- a/src/main/java/carpet/script/value/EntityValue.java +++ b/src/main/java/carpet/script/value/EntityValue.java @@ -264,7 +264,7 @@ public class EntityValue extends Value put("count", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntity) e).getStack().getCount()):Value.NULL); put("pickup_delay", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntityInterface) e).getPickupDelayCM()):Value.NULL); put("portal_cooldown", (e , a) ->new NumericValue(((EntityInterface)e).getPortalTimer())); - put("portal_timer", (e , a) ->new NumericValue(e.netherPortalCooldown)); + put("portal_timer", (e , a) ->new NumericValue(((EntityInterface)e).getPublicNetherPortalCooldown())); // ItemEntity -> despawn timer via ssGetAge put("is_baby", (e, a) -> (e instanceof LivingEntity)?new NumericValue(((LivingEntity) e).isBaby()):Value.NULL); put("target", (e, a) -> { @@ -871,7 +871,7 @@ public class EntityValue extends Value { if (v==null) throw new InternalExpressionException("'portal_cooldown' requires a value to set"); - e.netherPortalCooldown = NumericValue.asNumber(v).getInt(); + ((EntityInterface)e).setPublicNetherPortalCooldown(NumericValue.asNumber(v).getInt()); }); put("portal_timer", (e , v) -> diff --git a/src/main/java/carpet/utils/BlockInfo.java b/src/main/java/carpet/utils/BlockInfo.java index cd719e7f..85ad6cb4 100644 --- a/src/main/java/carpet/utils/BlockInfo.java +++ b/src/main/java/carpet/utils/BlockInfo.java @@ -11,6 +11,7 @@ import net.minecraft.entity.ai.goal.WanderAroundGoal; import net.minecraft.entity.ai.pathing.NavigationType; import net.minecraft.entity.mob.PathAwareEntity; import net.minecraft.entity.mob.ZombifiedPiglinEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.text.BaseText; import net.minecraft.util.math.BlockPos; @@ -169,7 +170,7 @@ public class BlockInfo put(Material.CAKE , "cake" ); }}; - public static List blockInfo(BlockPos pos, World world) + public static List blockInfo(BlockPos pos, ServerWorld world) { BlockState state = world.getBlockState(pos); Material material = state.getMaterial(); @@ -220,7 +221,7 @@ public class BlockInfo return lst; } - private static BaseText wander_chances(BlockPos pos, World worldIn) + private static BaseText wander_chances(BlockPos pos, ServerWorld worldIn) { PathAwareEntity creature = new ZombifiedPiglinEntity(EntityType.ZOMBIFIED_PIGLIN, worldIn); creature.initialize(worldIn, worldIn.getLocalDifficulty(pos), SpawnReason.NATURAL, null, null); diff --git a/src/main/java/carpet/utils/PerimeterDiagnostics.java b/src/main/java/carpet/utils/PerimeterDiagnostics.java index 3759b652..c8d14edc 100644 --- a/src/main/java/carpet/utils/PerimeterDiagnostics.java +++ b/src/main/java/carpet/utils/PerimeterDiagnostics.java @@ -181,7 +181,7 @@ public class PerimeterDiagnostics { el.refreshPositionAndAngles((float)pos.getX() + 0.5F, (float)pos.getY(), (float)pos.getZ()+0.5F, 0.0F, 0.0F); return el.canSpawn(worldServer) && el.canSpawn(worldServer, SpawnReason.NATURAL) && - SpawnRestriction.canSpawn(el.getType(),el.getEntityWorld(), SpawnReason.NATURAL, el.getBlockPos(), el.getEntityWorld().random) && + SpawnRestriction.canSpawn(el.getType(),(ServerWorld)el.getEntityWorld(), SpawnReason.NATURAL, el.getBlockPos(), el.getEntityWorld().random) && worldServer.doesNotCollide(el); // check collision rules once they stop fiddling with them after 1.14.1 } return false;