From 011231b6eca8ebdf19191f99fc05a0d313395894 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 30 Jan 2025 19:11:41 +0100 Subject: [PATCH] Get a load of this - Fixed track graphs not migrating from 1.20 worlds - Fixed anything using blockfaces not migrating from 1.20 worlds - Fixed assembled empty depots kicking the player - Fixed passenger offsets of package entities - Fixed blueprint entity bb causing a stack overflow --- gradle.properties | 2 +- .../content/contraptions/AbstractContraptionEntity.java | 7 +++++-- .../create/content/contraptions/Contraption.java | 4 +++- .../content/contraptions/actors/seat/SeatEntity.java | 2 +- .../content/equipment/blueprint/BlueprintEntity.java | 2 +- .../create/content/logistics/box/PackageEntity.java | 9 +++++++-- .../logistics/depot/storage/DepotMountedStorage.java | 2 +- .../logistics/tableCloth/TableClothBlockEntity.java | 3 ++- .../create/content/trains/graph/TrackNodeLocation.java | 3 ++- 9 files changed, 23 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index 52f2675b27..d12af9ab0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,7 +27,7 @@ registrate_version = MC1.21-1.3.0+61 flywheel_minecraft_version = 1.21.1 flywheel_version = 1.0.0-beta-1 flywheel_version_range = [1.0.0-alpha,2.0) -ponder_version = 1.0.30 +ponder_version = 1.0.31 jei_minecraft_version = 1.21.1 jei_version = 19.21.0.247 curios_minecraft_version = 1.21.1 diff --git a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java index bd3e48a330..19f12fee15 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java @@ -249,8 +249,11 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit return null; Vec3 transformedVector = toGlobalVector(Vec3.atLowerCornerOf(seat) - .add(.5, -passenger.getVehicleAttachmentPoint(this).y + ySize + .125, .5), partialTicks) - .add(VecHelper.getCenterOf(BlockPos.ZERO)) + .add(.5, + -passenger.getVehicleAttachmentPoint(this).y + ySize + .125 + - SeatEntity.getCustomEntitySeatOffset(passenger), + .5), + partialTicks).add(VecHelper.getCenterOf(BlockPos.ZERO)) .subtract(0.5, ySize, 0.5); return transformedVector; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java index c3a91a0e38..a0ca0c7cdf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java @@ -758,7 +758,9 @@ public abstract class Contraption { c -> superglue.add(SuperGlueEntity.readBoundingBox(c))); seats.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Seats", Tag.TAG_COMPOUND), c -> seats.add(NBTHelper.readBlockPos(c, "Pos"))); + NBTHelper.iterateCompoundList(nbt.getList("Seats", Tag.TAG_COMPOUND), + c -> seats.add(c.contains("Pos") ? NBTHelper.readBlockPos(c, "Pos") + : new BlockPos(c.getInt("X"), c.getInt("Y"), c.getInt("Z")))); seatMapping.clear(); NBTHelper.iterateCompoundList(nbt.getList("Passengers", Tag.TAG_COMPOUND), diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java index 53dd70da98..32e3ea9e2b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java @@ -79,7 +79,7 @@ public class SeatEntity extends Entity implements IEntityWithComplexSpawn { if (entity instanceof Spider) return 1 / 8.0; if (entity instanceof PackageEntity) - return 1 / 4f; + return 3 / 32f; return 0; } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java index d7f7aa0b9a..4cc4520bb5 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java @@ -202,7 +202,7 @@ public class BlueprintEntity extends HangingEntity @Override protected void recalculateBoundingBox() { if (this.direction != null && this.verticalOrientation != null) { - recalculateBoundingBox(); + setBoundingBox(calculateBoundingBox(pos, direction)); } } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java index 0577ffec28..e1517b75d5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java @@ -285,10 +285,15 @@ public class PackageEntity extends LivingEntity implements IEntityWithComplexSpa } } - // TODO - Lookover @Override public Vec3 getPassengerRidingPosition(Entity entity) { - return new Vec3(0, entity.getDimensions(getPose()).height(), 0); + return position().add(0, entity.getDimensions(getPose()) + .height(), 0); + } + + @Override + protected Vec3 getPassengerAttachmentPoint(Entity entity, EntityDimensions dimensions, float partialTick) { + return super.getPassengerAttachmentPoint(entity, dimensions, partialTick).add(0, 2 / 16f, 0); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java b/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java index 8411a7def9..89fbee03a9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java @@ -24,7 +24,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp import net.neoforged.neoforge.items.ItemStackHandler; public class DepotMountedStorage extends WrapperMountedItemStorage implements SyncedMountedStorage { - public static final MapCodec CODEC = ItemStack.CODEC.xmap( + public static final MapCodec CODEC = ItemStack.OPTIONAL_CODEC.xmap( DepotMountedStorage::new, DepotMountedStorage::getItem ).fieldOf("value"); diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java index d87b38e3c0..24ebdfd620 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java @@ -304,7 +304,8 @@ public class TableClothBlockEntity extends SmartBlockEntity { protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); manuallyAddedItems = NBTHelper.readItemList(tag.getList("Items", Tag.TAG_COMPOUND), registries); - requestData = CatnipCodecUtils.decode(AutoRequestData.CODEC, tag.get("RequestData")).orElseThrow(); + requestData = CatnipCodecUtils.decode(AutoRequestData.CODEC, tag.get("RequestData")) + .orElse(new AutoRequestData()); owner = tag.contains("OwnerUUID") ? tag.getUUID("OwnerUUID") : null; facing = Direction.from2DDataValue(Mth.positiveModulo(tag.getInt("Facing"), 4)); } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java index a67474d97e..2ef4f75041 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java @@ -84,7 +84,8 @@ public class TrackNodeLocation extends Vec3i { } public static TrackNodeLocation read(CompoundTag tag, DimensionPalette dimensions) { - TrackNodeLocation location = fromPackedPos(NBTHelper.readBlockPos(tag, "Pos")); + TrackNodeLocation location = fromPackedPos(tag.contains("Pos") ? NBTHelper.readBlockPos(tag, "Pos") + : new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z"))); if (dimensions != null) location.dimension = dimensions.decode(tag.getInt("D")); location.yOffsetPixels = tag.getInt("YO");