Fixed suicidal portals in SMP

This commit is contained in:
WayofTime 2016-02-21 13:26:09 -05:00
parent 9d1bfe540f
commit 0524daa16c

View file

@ -1,18 +1,10 @@
package WayofTime.bloodmagic.block; package WayofTime.bloodmagic.block;
import WayofTime.bloodmagic.BloodMagic; import java.util.ArrayList;
import WayofTime.bloodmagic.api.Constants; import java.util.Random;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.teleport.PortalLocation;
import WayofTime.bloodmagic.api.teleport.TeleportQueue;
import WayofTime.bloodmagic.block.base.BlockIntegerContainer;
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
import WayofTime.bloodmagic.ritual.portal.Teleports;
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
@ -23,9 +15,15 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.BloodMagic;
import java.util.ArrayList; import WayofTime.bloodmagic.api.Constants;
import java.util.Random; import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.teleport.PortalLocation;
import WayofTime.bloodmagic.api.teleport.TeleportQueue;
import WayofTime.bloodmagic.block.base.BlockIntegerContainer;
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
import WayofTime.bloodmagic.ritual.portal.Teleports;
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
public class BlockDimensionalPortal extends BlockIntegerContainer public class BlockDimensionalPortal extends BlockIntegerContainer
{ {
@ -72,7 +70,7 @@ public class BlockDimensionalPortal extends BlockIntegerContainer
@Override @Override
public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState blockState, Entity entity) public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState blockState, Entity entity)
{ {
if (!world.isRemote && world.getTileEntity(pos) instanceof TileDimensionalPortal && !(entity instanceof EntityFX)) if (!world.isRemote && world.getTileEntity(pos) instanceof TileDimensionalPortal)
{ {
TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(pos); TileDimensionalPortal tile = (TileDimensionalPortal) world.getTileEntity(pos);
@ -84,7 +82,7 @@ public class BlockDimensionalPortal extends BlockIntegerContainer
{ {
if (world.getTileEntity(tile.getMasterStonePos()) != null && world.getTileEntity(tile.getMasterStonePos()) instanceof IMasterRitualStone) if (world.getTileEntity(tile.getMasterStonePos()) != null && world.getTileEntity(tile.getMasterStonePos()) instanceof IMasterRitualStone)
{ {
TileMasterRitualStone masterRitualStone = (TileMasterRitualStone) world.getTileEntity(tile.getMasterStonePos()); IMasterRitualStone masterRitualStone = (IMasterRitualStone) world.getTileEntity(tile.getMasterStonePos());
if (linkedLocations.get(0).equals(new PortalLocation(masterRitualStone.getBlockPos().up(), world.provider.getDimensionId()))) if (linkedLocations.get(0).equals(new PortalLocation(masterRitualStone.getBlockPos().up(), world.provider.getDimensionId())))
{ {
PortalLocation portal = linkedLocations.get(1); PortalLocation portal = linkedLocations.get(1);
@ -95,7 +93,7 @@ public class BlockDimensionalPortal extends BlockIntegerContainer
{ {
TeleportQueue.getInstance().addITeleport(new Teleports.TeleportToDim(portal.getX(), portal.getY(), portal.getZ(), entity, masterRitualStone.getOwner(), world, portal.getDimension())); TeleportQueue.getInstance().addITeleport(new Teleports.TeleportToDim(portal.getX(), portal.getY(), portal.getZ(), entity, masterRitualStone.getOwner(), world, portal.getDimension()));
} }
} else if (linkedLocations.get(1).equals(new PortalLocation(tile.masterStoneX, tile.masterStoneY + 1, tile.masterStoneZ, world.provider.getDimensionId()))) } else if (linkedLocations.get(1).equals(new PortalLocation(masterRitualStone.getBlockPos().up(), world.provider.getDimensionId())))
{ {
PortalLocation portal = linkedLocations.get(0); PortalLocation portal = linkedLocations.get(0);
if (portal.getDimension() == world.provider.getDimensionId()) if (portal.getDimension() == world.provider.getDimensionId())
@ -146,7 +144,6 @@ public class BlockDimensionalPortal extends BlockIntegerContainer
return EnumWorldBlockLayer.TRANSLUCENT; return EnumWorldBlockLayer.TRANSLUCENT;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, BlockPos pos, IBlockState state, Random rand) public void randomDisplayTick(World world, BlockPos pos, IBlockState state, Random rand)