From 0533f2007bb2cf3d2d91b52c632dca5d3f60fc5e Mon Sep 17 00:00:00 2001 From: Runemoro Date: Sun, 31 Dec 2017 09:49:47 -0500 Subject: [PATCH] Bug fixes - Fix crash when monolith spawner is placed - Fix client crash when walking on eternal fabric - Fix ancient fabric being generated in Limbo rather than eternal fabric --- AnnotatedNBT/build.gradle | 2 -- .../org/dimdev/ddutils/nbt/IndentedPrintWriter.java | 2 +- .../org/dimdev/dimdoors/shared/VirtualLocation.java | 11 ++++++----- .../dimdoors/shared/entities/EntityMonolith.java | 5 +++-- .../dimdev/dimdoors/shared/rifts/RiftRegistry.java | 4 ++-- .../shared/world/limbodimension/LimboGenerator.java | 2 +- .../world/limbodimension/WorldProviderLimbo.java | 8 +++----- .../pocketdimension/WorldProviderPersonalPocket.java | 3 ++- 8 files changed, 18 insertions(+), 19 deletions(-) diff --git a/AnnotatedNBT/build.gradle b/AnnotatedNBT/build.gradle index 167e1cc0..466c0f25 100644 --- a/AnnotatedNBT/build.gradle +++ b/AnnotatedNBT/build.gradle @@ -25,8 +25,6 @@ repositories { mavenCentral() } -genIntellijRuns {} - minecraft { runDir = "run" version = "1.12.2-14.23.1.2555" diff --git a/AnnotatedNBT/src/main/java/org/dimdev/ddutils/nbt/IndentedPrintWriter.java b/AnnotatedNBT/src/main/java/org/dimdev/ddutils/nbt/IndentedPrintWriter.java index 52701afa..1d43c772 100644 --- a/AnnotatedNBT/src/main/java/org/dimdev/ddutils/nbt/IndentedPrintWriter.java +++ b/AnnotatedNBT/src/main/java/org/dimdev/ddutils/nbt/IndentedPrintWriter.java @@ -44,4 +44,4 @@ public class IndentedPrintWriter extends PrintWriter { // TODO: verify indentati super.println(); startOfLine = true; } -} \ No newline at end of file +} diff --git a/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java b/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java index 0c44af32..f8e3d9ea 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java +++ b/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java @@ -1,6 +1,5 @@ package org.dimdev.dimdoors.shared; -import org.dimdev.ddutils.nbt.INBTStorable; import org.dimdev.dimdoors.shared.pockets.Pocket; import org.dimdev.dimdoors.shared.pockets.PocketRegistry; import org.dimdev.ddutils.Location; @@ -9,14 +8,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.ToString; import lombok.Value; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; +import org.dimdev.dimdoors.shared.world.limbodimension.WorldProviderLimbo; import java.util.Random; @Value @ToString @AllArgsConstructor @Builder(toBuilder = true) -public class VirtualLocation { // TODO: use BlockPos/Location +public class VirtualLocation { Location location; int depth; @@ -34,7 +33,7 @@ public class VirtualLocation { // TODO: use BlockPos/Location public int getY() { return location.getY(); } public int getZ() { return location.getZ(); } - public static VirtualLocation fromLocation(Location location) { // TODO: reverse function too + public static VirtualLocation fromLocation(Location location) { VirtualLocation virtualLocation = null; if (DimDoorDimensions.isPocketDimension(location.getDim())) { Pocket pocket = PocketRegistry.getForDim(location.getDim()).getPocketAt(location.getPos()); @@ -43,6 +42,8 @@ public class VirtualLocation { // TODO: use BlockPos/Location } else { virtualLocation = new VirtualLocation(0, 0, 0, 0, 0); // TODO: door was placed in a pocket dim but outside of a pocket... } + } else if (location.getWorld().provider instanceof WorldProviderLimbo) { + virtualLocation = new VirtualLocation(location, DDConfig.getMaxDungeonDepth()); } if (virtualLocation == null) { virtualLocation = new VirtualLocation(location, 0); @@ -50,7 +51,7 @@ public class VirtualLocation { // TODO: use BlockPos/Location return virtualLocation; } - // TODO: world-seed based transformations and pocket selections? + // TODO: world-seed based transformations and pocket selections public VirtualLocation transformDepth(int depth) { // TODO: Config option for block ratio between depths (see video of removed features) Random random = new Random(); int depthDiff = Math.abs(this.depth - depth); diff --git a/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java b/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java index 0fac1830..6ee01ed3 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java +++ b/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java @@ -1,5 +1,6 @@ package org.dimdev.dimdoors.shared.entities; +import net.minecraft.block.Block; import org.dimdev.dimdoors.shared.sound.ModSounds; import org.dimdev.dimdoors.shared.DDConfig; import org.dimdev.ddutils.Location; @@ -73,7 +74,7 @@ public class EntityMonolith extends EntityFlying implements IMob { @Override public AxisAlignedBB getCollisionBoundingBox() { - return null; + return Block.NULL_AABB; // TODO: Is this right? Why check if it intersects anything if it is? } @Override @@ -275,7 +276,7 @@ public class EntityMonolith extends EntityFlying implements IMob { if (list.size() > 0) { return false; } - } else if (world.provider instanceof WorldProviderPublicPocket) { + } else if (world.provider instanceof WorldProviderPublicPocket) { // TODO if (list.size() > 5 || world.canBlockSeeSky(new BlockPos(posX, posY, posZ))) { return false; } diff --git a/src/main/java/org/dimdev/dimdoors/shared/rifts/RiftRegistry.java b/src/main/java/org/dimdev/dimdoors/shared/rifts/RiftRegistry.java index 0551ada1..b0422028 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/rifts/RiftRegistry.java +++ b/src/main/java/org/dimdev/dimdoors/shared/rifts/RiftRegistry.java @@ -26,7 +26,7 @@ import java.util.*; private static final String DATA_NAME = DimDoors.MODID + "_rifts"; @Getter private static final int DATA_VERSION = 0; // IMPORTANT: Update this and upgradeRegistry when making changes. - @SavedToNBT @Getter /*package-private*/ /*final*/ Map rifts = new HashMap<>(); // TODO: store relative locations too (better location class supporting relative, etc) + @SavedToNBT @Getter /*package-private*/ /*final*/ Map rifts = new HashMap<>(); // TODO: convert to a static directed graph, but store links per-world @SavedToNBT @Getter /*package-private*/ /*final*/ Map privatePocketEntrances = new HashMap<>(); // Player UUID -> last rift used to exit pocket TODO: split into PrivatePocketRiftRegistry subclass @SavedToNBT @Getter /*package-private*/ /*final*/ Map> privatePocketEntranceLists = new HashMap<>(); // Player UUID -> private pocket entrances TODO: split into PrivatePocketRiftRegistry subclass @SavedToNBT @Getter /*package-private*/ /*final*/ Map privatePocketExits = new HashMap<>(); // Player UUID -> last rift used to enter pocket @@ -87,7 +87,7 @@ import java.util.*; } public void initNewRegistry() { - // TODO + // Nothing to do } @Override diff --git a/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/LimboGenerator.java b/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/LimboGenerator.java index 1fcbd3b0..647d2ce2 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/LimboGenerator.java +++ b/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/LimboGenerator.java @@ -264,7 +264,7 @@ public class LimboGenerator implements IChunkGenerator { ModBlocks.FABRIC.getDefaultState().withProperty(BlockFabric.TYPE, BlockFabric.EnumType.UNRAVELED)); } else if (yCoord < 6) { primer.setBlockState(xCoord, yCoord, zCoord, - ModBlocks.FABRIC.getDefaultState().withProperty(BlockFabric.TYPE, BlockFabric.EnumType.ANCIENT)); + ModBlocks.FABRIC.getDefaultState().withProperty(BlockFabric.TYPE, BlockFabric.EnumType.ETERNAL)); } } diff --git a/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/WorldProviderLimbo.java b/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/WorldProviderLimbo.java index 9f429287..780f7485 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/WorldProviderLimbo.java +++ b/src/main/java/org/dimdev/dimdoors/shared/world/limbodimension/WorldProviderLimbo.java @@ -37,11 +37,9 @@ public class WorldProviderLimbo extends WorldProvider { @Override protected void generateLightBrightnessTable() { - float modifier = 0.0F; - - for (int steps = 0; steps <= 15; ++steps) { - float var3 = 1.0F - steps / 15.0F; - lightBrightnessTable[steps] = ((0.0F + var3) / (var3 * 3.0F + 1.0F) * (1.0F - modifier) + modifier) * 3; + for (int i = 0; i <= 15; ++i) { + float var3 = 1.0F - i / 15.0F; + lightBrightnessTable[i] = (0.0F + var3) / (var3 * 3.0F + 1.0F) * 1.0F * 3; } } diff --git a/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPersonalPocket.java b/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPersonalPocket.java index aa08cf4b..7570fdda 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPersonalPocket.java +++ b/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPersonalPocket.java @@ -21,10 +21,11 @@ public class WorldProviderPersonalPocket extends WorldProviderPocket { return EnumPocketType.PRIVATE; } + // TODO: disable this to allow dark places in public pockets @Override protected void generateLightBrightnessTable() { for (int i = 0; i <= 15; ++i) { - lightBrightnessTable[i] = 15; + lightBrightnessTable[i] = 1; } }