From addb836b211f61df8db480e518cf889c1957e27b Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 5 Sep 2019 09:09:46 -0300 Subject: [PATCH] 19w36a --- gradle.properties | 6 ++-- .../carpet/fakes/class_4548Interface.java | 10 ++++++ .../java/carpet/helpers/FeatureGenerator.java | 2 +- .../PortalBlock_portalCachingMixin.java | 2 ++ .../PortalForcer_portalCachingMixin.java | 8 +++-- .../PortalForcer_portalSuffocationMixin.java | 2 +- ...tureBlockBlockEntity_fillUpdatesMixin.java | 2 +- .../carpet/mixins/StructureFeatureMixin.java | 4 +-- .../mixins/class_4548_getBiomeArrayMixin.java | 35 +++++++++++++++++++ .../java/carpet/script/CarpetExpression.java | 6 ++-- .../java/carpet/settings/CarpetSettings.java | 2 +- src/main/resources/carpet.mixins.json | 2 ++ 12 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 src/main/java/carpet/fakes/class_4548Interface.java create mode 100644 src/main/java/carpet/mixins/class_4548_getBiomeArrayMixin.java diff --git a/gradle.properties b/gradle.properties index f3c0bb53..a13b43ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=19w35a - yarn_mappings=19w35a+build.1 - loader_version=0.6.1+build.164 + minecraft_version=19w36a + yarn_mappings=19w36a+build.1 + loader_version=0.6.1+build.165 # Mod Properties mod_version = 1.0.5+v190828 diff --git a/src/main/java/carpet/fakes/class_4548Interface.java b/src/main/java/carpet/fakes/class_4548Interface.java new file mode 100644 index 00000000..d6832be8 --- /dev/null +++ b/src/main/java/carpet/fakes/class_4548Interface.java @@ -0,0 +1,10 @@ +package carpet.fakes; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; + +public interface class_4548Interface +{ + void setBiomeAtIndex(BlockPos pos, World world, Biome what); +} diff --git a/src/main/java/carpet/helpers/FeatureGenerator.java b/src/main/java/carpet/helpers/FeatureGenerator.java index ffe49e83..b77c9643 100644 --- a/src/main/java/carpet/helpers/FeatureGenerator.java +++ b/src/main/java/carpet/helpers/FeatureGenerator.java @@ -76,7 +76,7 @@ public class FeatureGenerator return new VanillaLayeredBiomeSource(new VanillaLayeredBiomeSourceConfig(w.getLevelProperties())) { @Override - public Biome getBiome(int i, int j) + public Biome getBiome(int i, int j, int k) { return biome; } diff --git a/src/main/java/carpet/mixins/PortalBlock_portalCachingMixin.java b/src/main/java/carpet/mixins/PortalBlock_portalCachingMixin.java index d92a16ba..1e51e330 100644 --- a/src/main/java/carpet/mixins/PortalBlock_portalCachingMixin.java +++ b/src/main/java/carpet/mixins/PortalBlock_portalCachingMixin.java @@ -16,6 +16,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PortalBlock.class) public class PortalBlock_portalCachingMixin { + /* @Inject(method = "createPortalAt", at = @At( value = "INVOKE", target = "Lnet/minecraft/block/PortalBlock$AreaHelper;createPortal()V" @@ -39,5 +40,6 @@ public class PortalBlock_portalCachingMixin ((PortalForcerInterface)((ServerWorld)iWorld_1).getPortalForcer()).invalidateCache(); } } + */ } diff --git a/src/main/java/carpet/mixins/PortalForcer_portalCachingMixin.java b/src/main/java/carpet/mixins/PortalForcer_portalCachingMixin.java index 136d8796..3e819a5d 100644 --- a/src/main/java/carpet/mixins/PortalForcer_portalCachingMixin.java +++ b/src/main/java/carpet/mixins/PortalForcer_portalCachingMixin.java @@ -21,8 +21,9 @@ import java.util.HashMap; import java.util.Map; @Mixin(PortalForcer.class) -public class PortalForcer_portalCachingMixin implements PortalForcerInterface +public abstract class PortalForcer_portalCachingMixin implements PortalForcerInterface { + /* @Shadow @Final private ServerWorld world; private Map storedTicketInfos = new HashMap<>(); @@ -42,7 +43,7 @@ public class PortalForcer_portalCachingMixin implements PortalForcerInterface value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;" )) - private Object /* private TicketInfo */ getTicketInfo(Map map, Object /* ColumnPos */ key) + private Object / private TicketInfo / getTicketInfo(Map map, Object / ColumnPos / key) { //Do the dance with ticketinfos. If vanilla has one, we gonna borrow, if vanilla is missing, we supply if (!CarpetSettings.portalCaching) @@ -69,10 +70,11 @@ public class PortalForcer_portalCachingMixin implements PortalForcerInterface value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" )) - private Object /* TicketInfo */ putNewTicket(Map map, Object /*ColumnPos */ key, Object /*TicketInfo */ value) + private Object / TicketInfo / putNewTicket(Map map, Object /ColumnPos / key, Object /TicketInfo / value) { if (CarpetSettings.portalCaching) storedTicketInfos.put((ColumnPos) key, value); return map.put(key, value); } + */ } diff --git a/src/main/java/carpet/mixins/PortalForcer_portalSuffocationMixin.java b/src/main/java/carpet/mixins/PortalForcer_portalSuffocationMixin.java index ea18d73a..61b733a1 100644 --- a/src/main/java/carpet/mixins/PortalForcer_portalSuffocationMixin.java +++ b/src/main/java/carpet/mixins/PortalForcer_portalSuffocationMixin.java @@ -65,7 +65,7 @@ public class PortalForcer_portalSuffocationMixin } - @Redirect(method = "getPortal",at = @At( + @Redirect(method = "method_22391",at = @At( value = "INVOKE", target = "Lnet/minecraft/block/pattern/BlockPattern$Result;method_18478(Lnet/minecraft/util/math/Direction;Lnet/minecraft/util/math/BlockPos;DLnet/minecraft/util/math/Vec3d;D)Lnet/minecraft/block/pattern/BlockPattern$TeleportTarget;" )) diff --git a/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java b/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java index ec085ba5..e8660268 100644 --- a/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java +++ b/src/main/java/carpet/mixins/StructureBlockBlockEntity_fillUpdatesMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(StructureBlockBlockEntity.class) public abstract class StructureBlockBlockEntity_fillUpdatesMixin { - @Redirect(method = "method_21864", at = @At( + @Redirect(method = "place", at = @At( value = "INVOKE", target = "Lnet/minecraft/structure/Structure;place(Lnet/minecraft/world/IWorld;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/structure/StructurePlacementData;)V" )) diff --git a/src/main/java/carpet/mixins/StructureFeatureMixin.java b/src/main/java/carpet/mixins/StructureFeatureMixin.java index bf4862c2..8e8f96c3 100644 --- a/src/main/java/carpet/mixins/StructureFeatureMixin.java +++ b/src/main/java/carpet/mixins/StructureFeatureMixin.java @@ -115,8 +115,8 @@ public abstract class StructureFeatureMixin implements StructureFeatureInterface return structurestart; } } - Biome biome_1 = generator.getBiomeSource().getBiome(new BlockPos(chunkpos.getStartX() + 9, 0, chunkpos.getStartZ() + 9)); - StructureStart structurestart1 = getStructureStartFactory().create((StructureFeature)(Object)this, chunkpos.x, chunkpos.z, biome_1, MutableIntBoundingBox.empty(),0,generator.getSeed()); + Biome biome_1 = generator.getBiomeSource().getBiome(chunkpos.getStartX() + 9, 0, chunkpos.getStartZ() + 9); + StructureStart structurestart1 = getStructureStartFactory().create((StructureFeature)(Object)this, chunkpos.x, chunkpos.z, MutableIntBoundingBox.empty(),0,generator.getSeed()); structurestart1.initialize(generator, ((ServerWorld)worldIn).getStructureManager() , chunkpos.x, chunkpos.z, biome_1); structurestart = structurestart1.hasChildren() ? structurestart1 : StructureStart.DEFAULT; diff --git a/src/main/java/carpet/mixins/class_4548_getBiomeArrayMixin.java b/src/main/java/carpet/mixins/class_4548_getBiomeArrayMixin.java new file mode 100644 index 00000000..a4a16bd8 --- /dev/null +++ b/src/main/java/carpet/mixins/class_4548_getBiomeArrayMixin.java @@ -0,0 +1,35 @@ +package carpet.mixins; + +import carpet.fakes.class_4548Interface; +import net.minecraft.class_4548; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import static net.minecraft.class_4548.field_20650; +import static net.minecraft.class_4548.field_20651; + +@Mixin(class_4548.class) +public class class_4548_getBiomeArrayMixin implements class_4548Interface +{ + + @Shadow @Final private Biome[] field_20654; + + @Shadow @Final private static int field_20652; + + @Override + public void setBiomeAtIndex(BlockPos pos, World world, Biome what) + { + ChunkPos chunkPos = new ChunkPos(pos); + int seaLevel = world.getSeaLevel(); + int int_4 = chunkPos.x & field_20650; + int int_5 = MathHelper.clamp(seaLevel, 0, field_20651); + int int_6 = chunkPos.z & field_20650; + field_20654[int_5 << field_20652 + field_20652 | int_6 << field_20652 | int_4] = what; + } +} diff --git a/src/main/java/carpet/script/CarpetExpression.java b/src/main/java/carpet/script/CarpetExpression.java index 2629543a..70b994d7 100644 --- a/src/main/java/carpet/script/CarpetExpression.java +++ b/src/main/java/carpet/script/CarpetExpression.java @@ -998,6 +998,7 @@ public class CarpetExpression }); this.expr.addLazyFunction("set_biome", -1, (c, t, lv) -> { + throw new InternalExpressionException("set_biome is WIP on 19w36a");/* CarpetContext cc = (CarpetContext)c; BlockValue.LocatorResult locator = BlockValue.fromParams(cc, lv, 0); if (lv.size() == locator.offset) @@ -1009,9 +1010,10 @@ public class CarpetExpression ServerWorld world = cc.s.getWorld(); BlockPos pos = locator.block.getPos(); Chunk chunk = world.method_22350(pos); - chunk.getBiomeArray()[(pos.getX() & 15) | (pos.getZ() & 15) << 4] = biome; + // todo these indices are wrong in 1.15 - needs fixing. + ((class_4548Interface)chunk.getBiomeArray()).setBiomeAtIndex(pos, world, biome); this.forceChunkUpdate(pos, world); - return LazyValue.NULL; + return LazyValue.NULL; */ }); // need get_biome diff --git a/src/main/java/carpet/settings/CarpetSettings.java b/src/main/java/carpet/settings/CarpetSettings.java index 3fc50e09..2942787f 100644 --- a/src/main/java/carpet/settings/CarpetSettings.java +++ b/src/main/java/carpet/settings/CarpetSettings.java @@ -221,7 +221,7 @@ public class CarpetSettings @Rule(desc = "Pistons, Glass and Sponge can be broken faster with their appropriate tools", category = SURVIVAL) public static boolean missingTools = false; - @Rule(desc = "Alternative, persistent caching strategy for nether portals", category = {SURVIVAL, CREATIVE}) + //@Rule(desc = "Alternative, persistent caching strategy for nether portals", category = {SURVIVAL, CREATIVE}) public static boolean portalCaching = false; @Rule(desc = "fill/clone/setblock and structure blocks cause block updates", category = CREATIVE) diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 174a43f0..26b9fc01 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -65,6 +65,8 @@ "SaplingBlockMixin", "EntityMixin", + "class_4548_getBiomeArrayMixin", + "GuardianEntityMixin", "DesertPyramidFeatureMixin", "HuskEntityMixin",