diff --git a/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/StevenDimDoors/mod_pocketDim/EventHookContainer.java index 2e2756d..abdeafb 100644 --- a/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -1,12 +1,25 @@ package StevenDimDoors.mod_pocketDim; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.DamageSource; import net.minecraftforge.client.event.sound.SoundLoadEvent; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.EventPriority; import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.PlayerDropsEvent; import net.minecraftforge.event.world.WorldEvent; +import StevenDimDoors.mod_pocketDim.core.DDTeleporter; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; +import StevenDimDoors.mod_pocketDim.util.Point4D; +import StevenDimDoors.mod_pocketDim.world.LimboProvider; +import StevenDimDoors.mod_pocketDim.world.PocketProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -56,11 +69,24 @@ public class EventHookContainer event.setCanceled(event.entity.worldObj.provider.dimensionId == properties.LimboDimensionID); } - @ForgeSubscribe - public void onPlayerDrops(PlayerDropsEvent event) + + @ForgeSubscribe(priority=EventPriority.HIGHEST) + public boolean LivingDeathEvent(LivingDeathEvent event) { - //TODO: I have some doubts. Is this triggered even if you die outside Limbo? And do you still drop items that others could pick up? We don't cancel the event. ~SenseiKiwi - mod_pocketDim.limboSpawnInventory.put(event.entityPlayer.username, event.drops); + Entity entity = event.entity; + if(entity instanceof EntityPlayer&&entity.worldObj.provider instanceof PocketProvider && this.properties.LimboEnabled) + { + if(!this.properties.LimboReturnsInventoryEnabled) + { + ((EntityPlayer)entity).inventory.clearInventory(-1, -1); + } + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(entity.worldObj.rand); + DDTeleporter.teleportEntity(entity, new Point4D(coords.posX,coords.posY,coords.posZ,mod_pocketDim.properties.LimboDimensionID)); + ((EntityLiving) entity).setEntityHealth(20); + event.setCanceled(true); + return false; + } + return true; } @ForgeSubscribe diff --git a/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java b/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java index d6b34fe..2a4f57e 100644 --- a/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java +++ b/StevenDimDoors/mod_pocketDim/PlayerRespawnTracker.java @@ -38,42 +38,10 @@ public class PlayerRespawnTracker implements IPlayerTracker } @Override - public void onPlayerRespawn(EntityPlayer player) - { - if(player.worldObj.provider.dimensionId==properties.LimboDimensionID) - { - - if(!player.worldObj.isRemote && properties.LimboReturnsInventoryEnabled) - { - - if(player.username!=null) - { - - if(!mod_pocketDim.limboSpawnInventory.isEmpty()&&mod_pocketDim.limboSpawnInventory.containsKey(player.username)) - { - for(EntityItem drop : mod_pocketDim.limboSpawnInventory.get(player.username)) - { - if(drop.getEntityItem().getItem() instanceof ItemArmor) - { - - - } - player.inventory.addItemStackToInventory(drop.getEntityItem()); - - - } - } - } - - - - - } - - } - - + public void onPlayerRespawn(EntityPlayer player) { + // TODO Auto-generated method stub } + } \ No newline at end of file diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index c395c11..487ffe3 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -115,8 +115,6 @@ public class mod_pocketDim public static BiomeGenBase pocketBiome; public static PlayerRespawnTracker tracker; - - public static HashMap> limboSpawnInventory = new HashMap>(); public static boolean isPlayerWearingGoogles = false; diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java index fc74f69..d1f472c 100644 --- a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java @@ -213,6 +213,12 @@ public class TileEntityRift extends TileEntity } } } + else + { + this.xOffset=0; + this.yOffset=0; + this.xOffset=0; + } } public void grow(int distance) diff --git a/StevenDimDoors/mod_pocketDim/util/Point4D.java b/StevenDimDoors/mod_pocketDim/util/Point4D.java index 08164a8..2b41eb5 100644 --- a/StevenDimDoors/mod_pocketDim/util/Point4D.java +++ b/StevenDimDoors/mod_pocketDim/util/Point4D.java @@ -12,6 +12,13 @@ public final class Point4D implements Comparable private final int z; private final int dimension; + /** + * + * @param x + * @param y + * @param z + * @param dimension + */ public Point4D(int x, int y, int z, int dimension) { this.x = x; diff --git a/StevenDimDoors/mod_pocketDim/world/LimboProvider.java b/StevenDimDoors/mod_pocketDim/world/LimboProvider.java index 166a89f..4ddbc2b 100644 --- a/StevenDimDoors/mod_pocketDim/world/LimboProvider.java +++ b/StevenDimDoors/mod_pocketDim/world/LimboProvider.java @@ -1,5 +1,7 @@ package StevenDimDoors.mod_pocketDim.world; +import java.util.Random; + import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChunkCoordinates; @@ -163,8 +165,7 @@ public class LimboProvider extends WorldProvider return false; } - @Override - public ChunkCoordinates getRandomizedSpawnPoint() + public static ChunkCoordinates getLimboSkySpawn(Random rand) { ChunkCoordinates var5 = new ChunkCoordinates(0,0,0); @@ -173,11 +174,16 @@ public class LimboProvider extends WorldProvider int spawnFuzzHalf = spawnFuzz / 2; { - var5.posX += this.worldObj.rand.nextInt(spawnFuzz) - spawnFuzzHalf; - var5.posZ += this.worldObj.rand.nextInt(spawnFuzz) - spawnFuzzHalf; + var5.posX += rand.nextInt(spawnFuzz) - spawnFuzzHalf; + var5.posZ += rand.nextInt(spawnFuzz) - spawnFuzzHalf; var5.posY = 700; } return var5; } + @Override + public ChunkCoordinates getRandomizedSpawnPoint() + { + return getLimboSkySpawn(this.worldObj.rand); + } } \ No newline at end of file