diff --git a/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java b/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java index cd49296e..e10002f5 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java +++ b/src/main/java/org/dimdev/dimdoors/shared/VirtualLocation.java @@ -77,6 +77,6 @@ public class VirtualLocation { } public Location projectToWorld() { - return transformDepth(0).location; + return new Location(0, transformDepth(0).getPos()); } } 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 4659094c..1a4db24d 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java +++ b/src/main/java/org/dimdev/dimdoors/shared/entities/EntityMonolith.java @@ -6,7 +6,6 @@ import org.dimdev.ddutils.Location; import org.dimdev.ddutils.TeleportUtils; import org.dimdev.dimdoors.shared.world.limbodimension.WorldProviderLimbo; import org.dimdev.dimdoors.shared.world.pocketdimension.WorldProviderDungeonPocket; -import org.dimdev.dimdoors.shared.world.pocketdimension.WorldProviderPublicPocket; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityFlying; import net.minecraft.entity.SharedMonsterAttributes; @@ -207,20 +206,20 @@ public class EntityMonolith extends EntityFlying implements IMob { /** * Plays sounds at different levels of aggro, using soundTime to prevent too many sounds at once. * - * @param entityPlayer + * @param player */ - private void playSounds(EntityPlayer entityPlayer) { + private void playSounds(EntityPlayer player) { float aggroPercent = getAggroProgress(); if (soundTime <= 0) { playSound(ModSounds.MONK, 1F, 1F); soundTime = 100; } if (aggroPercent > 0.70 && soundTime < 100) { - world.playSound(entityPlayer, entityPlayer.getPosition(), ModSounds.TEARING, SoundCategory.HOSTILE, 1F, (float) (1 + rand.nextGaussian())); + world.playSound(player, player.getPosition(), ModSounds.TEARING, SoundCategory.HOSTILE, 1F, (float) (1 + rand.nextGaussian())); soundTime = 100 + rand.nextInt(75); } if (aggroPercent > 0.80 && soundTime < MAX_SOUND_COOLDOWN) { - world.playSound(entityPlayer, entityPlayer.getPosition(), ModSounds.TEARING, SoundCategory.HOSTILE, 7, 1F); + world.playSound(player, player.getPosition(), ModSounds.TEARING, SoundCategory.HOSTILE, 7, 1F); soundTime = 250; } soundTime--; @@ -272,13 +271,9 @@ public class EntityMonolith extends EntityFlying implements IMob { List list = world.getEntitiesWithinAABBExcludingEntity(this, new AxisAlignedBB(posX - 15, posY - 4, posZ - 15, posX + 15, posY + 15, posZ + 15)); if (world.provider instanceof WorldProviderLimbo) { - if (list.size() > 0) { - return false; - } - } else if (world.provider instanceof WorldProviderPublicPocket) { // TODO - if (list.size() > 5 || world.canBlockSeeSky(new BlockPos(posX, posY, posZ))) { - return false; - } + return list.size() <= 0; + } else if (world.provider instanceof WorldProviderDungeonPocket) { // TODO + return list.size() <= 5 && !world.canBlockSeeSky(new BlockPos(posX, posY, posZ)); } return true; diff --git a/src/main/java/org/dimdev/dimdoors/shared/rifts/EscapeDestination.java b/src/main/java/org/dimdev/dimdoors/shared/rifts/EscapeDestination.java index 850f20b1..18b14e4a 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/rifts/EscapeDestination.java +++ b/src/main/java/org/dimdev/dimdoors/shared/rifts/EscapeDestination.java @@ -2,6 +2,7 @@ package org.dimdev.dimdoors.shared.rifts; import org.dimdev.dimdoors.DimDoors; import org.dimdev.dimdoors.shared.VirtualLocation; +import org.dimdev.dimdoors.shared.world.ModDimensions; import org.dimdev.dimdoors.shared.world.limbodimension.WorldProviderLimbo; import org.dimdev.ddutils.Location; import org.dimdev.ddutils.TeleportUtils; @@ -29,6 +30,10 @@ public class EscapeDestination extends RiftDestination { @Override public boolean teleport(TileEntityRift rift, Entity entity) { + if (!ModDimensions.isDimDoorsPocketDimension(entity.world)) { + DimDoors.chat(entity, "Can't escape from a non-pocket dimension!"); + return false; + } String uuid = entity.getCachedUniqueIdString(); if (uuid != null) { Location destLoc = RiftRegistry.getOverworldRift(uuid); diff --git a/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPocket.java b/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPocket.java index fe288669..644691e8 100644 --- a/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPocket.java +++ b/src/main/java/org/dimdev/dimdoors/shared/world/pocketdimension/WorldProviderPocket.java @@ -16,7 +16,7 @@ public abstract class WorldProviderPocket extends WorldProvider { @Override public void init() { // TODO: save pocket registry nbt here? (see WorldProviderEnd) - hasSkyLight = true; + hasSkyLight = false; // TODO: this is only a temporary fix DimDoors.proxy.setCloudRenderer(this, new CloudRenderBlank()); }