small fixes

Fixed chunkloader bug
Fixed doors not tping non player entites because of orientation
This commit is contained in:
StevenRS11
2013-10-15 15:40:37 -04:00
parent 5bfd40f2b2
commit 7a36e78769
5 changed files with 22 additions and 33 deletions

View File

@@ -0,0 +1,8 @@
package StevenDimDoors.mod_pocketDim;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
public interface IChunkLoader
{
public void forceChunkLoading(Ticket ticket,int x, int z);
}

View File

@@ -383,9 +383,9 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn
{ {
int metadata = world.getBlockMetadata(x, y - 1, z); int metadata = world.getBlockMetadata(x, y - 1, z);
boolean canUse = isDoorOpen(metadata); boolean canUse = isDoorOpen(metadata);
if (canUse && entity instanceof EntityLiving) if (canUse && entity instanceof EntityPlayer)
{ {
// Don't check for non-living entities since it might not work right // Dont check for non-player entites
canUse = isEntityFacingDoor(metadata, (EntityLiving) entity); canUse = isEntityFacingDoor(metadata, (EntityLiving) entity);
} }
if (canUse) if (canUse)

View File

@@ -127,8 +127,6 @@ public class DDTeleporter
if(!CheckDestination(entity, world, destination, properties)) if(!CheckDestination(entity, world, destination, properties))
{ {
//TODO Give entity backwards acceleration
if(entity instanceof EntityPlayerMP) if(entity instanceof EntityPlayerMP)
{ {
EntityPlayer player = (EntityPlayer) entity; EntityPlayer player = (EntityPlayer) entity;
@@ -183,7 +181,6 @@ public class DDTeleporter
entity.motionX = 0; entity.motionX = 0;
entity.motionZ = 0; entity.motionZ = 0;
entity.motionY = 0; entity.motionY = 0;
switch (orientation) switch (orientation)
{ {
case 0: case 0:

View File

@@ -4,14 +4,16 @@ import java.util.List;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Ticket;
import StevenDimDoors.mod_pocketDim.IChunkLoader;
import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
public class ChunkLoaderHelper implements ForgeChunkManager.OrderedLoadingCallback public class ChunkLoaderHelper implements LoadingCallback
{ {
@Override @Override
@@ -22,28 +24,9 @@ public class ChunkLoaderHelper implements ForgeChunkManager.OrderedLoadingCallba
int goldDimDoorX = ticket.getModData().getInteger("goldDimDoorX"); int goldDimDoorX = ticket.getModData().getInteger("goldDimDoorX");
int goldDimDoorY = ticket.getModData().getInteger("goldDimDoorY"); int goldDimDoorY = ticket.getModData().getInteger("goldDimDoorY");
int goldDimDoorZ = ticket.getModData().getInteger("goldDimDoorZ"); int goldDimDoorZ = ticket.getModData().getInteger("goldDimDoorZ");
TileEntityDimDoorGold tile = (TileEntityDimDoorGold) world.getBlockTileEntity(goldDimDoorX, goldDimDoorY, goldDimDoorZ); IChunkLoader tile = (IChunkLoader) world.getBlockTileEntity(goldDimDoorX, goldDimDoorY, goldDimDoorZ);
tile.forceChunkLoading(ticket); tile.forceChunkLoading(ticket,goldDimDoorX,goldDimDoorZ);
} }
} }
@Override
public List<Ticket> ticketsLoaded(List<Ticket> tickets, World world, int maxTicketCount)
{
List<Ticket> validTickets = Lists.newArrayList();
for (Ticket ticket : tickets)
{
int goldDimDoorX = ticket.getModData().getInteger("goldDimDoorX");
int goldDimDoorY = ticket.getModData().getInteger("goldDimDoorY");
int goldDimDoorZ = ticket.getModData().getInteger("goldDimDoorZ");
int blId = world.getBlockId(goldDimDoorX, goldDimDoorY, goldDimDoorZ);
if (blId == mod_pocketDim.properties.GoldDimDoorID)
{
validTickets.add(ticket);
}
}
return validTickets;
}
} }

View File

@@ -1,5 +1,6 @@
package StevenDimDoors.mod_pocketDim.tileentities; package StevenDimDoors.mod_pocketDim.tileentities;
import StevenDimDoors.mod_pocketDim.IChunkLoader;
import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.core.PocketManager;
import StevenDimDoors.mod_pocketDim.world.PocketBuilder; import StevenDimDoors.mod_pocketDim.world.PocketBuilder;
@@ -9,7 +10,7 @@ import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type; import net.minecraftforge.common.ForgeChunkManager.Type;
public class TileEntityDimDoorGold extends TileEntityDimDoor public class TileEntityDimDoorGold extends TileEntityDimDoor implements IChunkLoader
{ {
private Ticket chunkTicket; private Ticket chunkTicket;
@@ -32,22 +33,22 @@ public class TileEntityDimDoorGold extends TileEntityDimDoor
chunkTicket.getModData().setInteger("goldDimDoorY", yCoord); chunkTicket.getModData().setInteger("goldDimDoorY", yCoord);
chunkTicket.getModData().setInteger("goldDimDoorZ", zCoord); chunkTicket.getModData().setInteger("goldDimDoorZ", zCoord);
ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair(xCoord >> 4, zCoord >> 4)); ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair(xCoord >> 4, zCoord >> 4));
forceChunkLoading(chunkTicket); forceChunkLoading(chunkTicket,this.xCoord,this.zCoord);
} }
} }
public void forceChunkLoading(Ticket chunkTicket) public void forceChunkLoading(Ticket chunkTicket,int x,int z)
{ {
if(PocketManager.getDimensionData(this.worldObj)==null) if(PocketManager.getDimensionData(chunkTicket.world)==null)
{ {
return; return;
} }
if(!PocketManager.getDimensionData(this.worldObj).isPocketDimension()) if(!PocketManager.getDimensionData(chunkTicket.world).isPocketDimension())
{ {
return; return;
} }
for(int chunks = (PocketBuilder.DEFAULT_POCKET_SIZE%16)+1;chunks>0;chunks--) for(int chunks = (PocketBuilder.DEFAULT_POCKET_SIZE/16)+1;chunks>0;chunks--)
{ {
ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair((xCoord >> 4)+chunks, (zCoord >> 4)+chunks)); ForgeChunkManager.forceChunk(chunkTicket, new ChunkCoordIntPair((xCoord >> 4)+chunks, (zCoord >> 4)+chunks));