package zmaster587.advancedRocketry.world.util;
import zmaster587.advancedRocketry.network.PacketStorageTileUpdate;
import zmaster587.advancedRocketry.util.StorageChunk;
import zmaster587.libVulpes.network.PacketHandler;
import net.minecraft.block.Block;
import net.minecraft.client.multiplayer.ChunkProviderClient;
import net.minecraft.entity.Entity;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.profiler.Profiler;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldSettings;
import net.minecraft.world.WorldType;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.common.util.ForgeDirection;
public class WorldDummy extends World {
private final static ProviderDummy dummyProvider = new ProviderDummy();
StorageChunk storage;
public int glListID = -1;
public WorldDummy(Profiler p_i45368_5_, StorageChunk storage) {
super(new DummySaveHandler(), "dummy", new WorldSettings(0, WorldSettings.GameType.SURVIVAL, false, false, WorldType.FLAT), dummyProvider, p_i45368_5_);
this.storage = storage;
this.chunkProvider = new ChunkProviderDummy(this);
}
@Override
public Block getBlock(int x, int y, int z) {
return storage.getBlock(x, y, z);
}
@Override
public void markBlockForUpdate(int x, int y,
int z) {
super.markBlockForUpdate(x, y, z);
if(storage.getEntity() != null && !storage.getEntity().worldObj.isRemote) {
if(getTileEntity(x, y, z) != null && getTileEntity(x, y, z).getDescriptionPacket() instanceof S35PacketUpdateTileEntity )
PacketHandler.sendToPlayersTrackingEntity(new PacketStorageTileUpdate(storage.getEntity(), storage, getTileEntity(x, y, z)), storage.getEntity());
}
}
@Override
public int getBlockLightOpacity(int x, int y, int z) {
return getBlock(x, y, z).getLightOpacity();
}
@Override
public int getBlockMetadata(int x, int y, int z) {
return storage.getBlockMetadata(x, y, z);
}
@Override
public TileEntity getTileEntity(int x, int y, int z) {
return storage.getTileEntity(x, y, z);
}
@Override
public boolean isSideSolid(int x, int y, int z, ForgeDirection side,
boolean _default) {
return storage.isSideSolid(x, y, z, side, _default);
}
@Override
public long getWorldTime() {
return 0;
}
@Override
public void notifyBlockOfNeighborChange(int p_147460_1_, int p_147460_2_, int p_147460_3_, final Block p_147460_4_) {
//Dummy out
}
@Override
protected boolean chunkExists(int x, int z) {
return false;
}
@Override
public boolean blockExists(int p_72899_1_, int p_72899_2_, int p_72899_3_) {
return false;
}
@Override
public int getBlockLightValue_do(int p_72849_1_, int p_72849_2_,
int p_72849_3_, boolean p_72849_4_) {
if (p_72849_4_ && this.getBlock(p_72849_1_, p_72849_2_, p_72849_3_).getUseNeighborBrightness())
{
return super.getBlockLightValue_do(p_72849_1_, p_72849_2_, p_72849_3_,
p_72849_4_);
}
else
return 15;//TODO: make chunks
}
@Override
protected void finishSetup() {
//Dont care about villages or providers or registration here
this.chunkProvider = this.createChunkProvider();
}
@Override
protected void func_147467_a(int p_147467_1_, int p_147467_2_,
Chunk p_147467_3_) {
// Dummy out
}
@Override
protected void setActivePlayerChunksAndCheckLight() {
//dummy out
}
@Override
public boolean setBlock(int p_147465_1_, int p_147465_2_, int p_147465_3_, Block p_147465_4_, int p_147465_5_, int p_147465_6_) {
return false;
//Dummy out
}
@Override
public boolean setBlockMetadataWithNotify(int p_72921_1_, int p_72921_2_, int p_72921_3_, int p_72921_4_, int p_72921_5_) {
return false;
//Dummy it out
}
@Override
public void updateEntities() {
//Dummy out
}
@Override
public void tick() {
//Dont tick
}
@Override
public boolean tickUpdates(boolean p_72955_1_) {
//Dont tick
return false;
}
@Override
protected IChunkProvider createChunkProvider() {
if(this.isRemote)
return new ChunkProviderClient(this);
else
return null;
}
@Override
protected int func_152379_p() {
return 0;
}
//No entities exist
@Override
public Entity getEntityByID(int p_73045_1_) {
return null;
}
}