small fixes
Fixed chunkloader bug Fixed doors not tping non player entites because of orientation
This commit is contained in:
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);
|
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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user