small fixes
Fixed chunkloader bug Fixed doors not tping non player entites because of orientation
This commit is contained in:
parent
5bfd40f2b2
commit
7a36e78769
5 changed files with 22 additions and 33 deletions
8
StevenDimDoors/mod_pocketDim/IChunkLoader.java
Normal file
8
StevenDimDoors/mod_pocketDim/IChunkLoader.java
Normal 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);
|
||||
}
|
|
@ -383,9 +383,9 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn
|
|||
{
|
||||
int metadata = world.getBlockMetadata(x, y - 1, z);
|
||||
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);
|
||||
}
|
||||
if (canUse)
|
||||
|
|
|
@ -127,8 +127,6 @@ public class DDTeleporter
|
|||
|
||||
if(!CheckDestination(entity, world, destination, properties))
|
||||
{
|
||||
|
||||
//TODO Give entity backwards acceleration
|
||||
if(entity instanceof EntityPlayerMP)
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer) entity;
|
||||
|
@ -183,7 +181,6 @@ public class DDTeleporter
|
|||
entity.motionX = 0;
|
||||
entity.motionZ = 0;
|
||||
entity.motionY = 0;
|
||||
|
||||
switch (orientation)
|
||||
{
|
||||
case 0:
|
||||
|
|
|
@ -4,14 +4,16 @@ import java.util.List;
|
|||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeChunkManager;
|
||||
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
||||
import StevenDimDoors.mod_pocketDim.IChunkLoader;
|
||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||
import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
|
||||
public class ChunkLoaderHelper implements ForgeChunkManager.OrderedLoadingCallback
|
||||
public class ChunkLoaderHelper implements LoadingCallback
|
||||
{
|
||||
|
||||
@Override
|
||||
|
@ -22,28 +24,9 @@ public class ChunkLoaderHelper implements ForgeChunkManager.OrderedLoadingCallba
|
|||
int goldDimDoorX = ticket.getModData().getInteger("goldDimDoorX");
|
||||
int goldDimDoorY = ticket.getModData().getInteger("goldDimDoorY");
|
||||
int goldDimDoorZ = ticket.getModData().getInteger("goldDimDoorZ");
|
||||
TileEntityDimDoorGold tile = (TileEntityDimDoorGold) world.getBlockTileEntity(goldDimDoorX, goldDimDoorY, goldDimDoorZ);
|
||||
tile.forceChunkLoading(ticket);
|
||||
IChunkLoader tile = (IChunkLoader) world.getBlockTileEntity(goldDimDoorX, goldDimDoorY, goldDimDoorZ);
|
||||
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;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package StevenDimDoors.mod_pocketDim.tileentities;
|
||||
|
||||
import StevenDimDoors.mod_pocketDim.IChunkLoader;
|
||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
||||
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.Type;
|
||||
|
||||
public class TileEntityDimDoorGold extends TileEntityDimDoor
|
||||
public class TileEntityDimDoorGold extends TileEntityDimDoor implements IChunkLoader
|
||||
{
|
||||
|
||||
private Ticket chunkTicket;
|
||||
|
@ -32,22 +33,22 @@ public class TileEntityDimDoorGold extends TileEntityDimDoor
|
|||
chunkTicket.getModData().setInteger("goldDimDoorY", yCoord);
|
||||
chunkTicket.getModData().setInteger("goldDimDoorZ", zCoord);
|
||||
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;
|
||||
}
|
||||
if(!PocketManager.getDimensionData(this.worldObj).isPocketDimension())
|
||||
if(!PocketManager.getDimensionData(chunkTicket.world).isPocketDimension())
|
||||
{
|
||||
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));
|
||||
|
||||
|
|
Loading…
Reference in a new issue