package hunternif.mc.atlas.network.bidirectional;
import hunternif.mc.atlas.AntiqueAtlasMod;
import hunternif.mc.atlas.api.AtlasAPI;
import hunternif.mc.atlas.core.AtlasData;
import hunternif.mc.atlas.core.Tile;
import hunternif.mc.atlas.network.AbstractMessage;
import hunternif.mc.atlas.util.Log;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.relauncher.Side;
import java.io.IOException;
/**
* Puts biome tile into one atlas. When sent to server, forwards it to every
* client that has this atlas' data synced.
* @author Hunternif
*/
public class PutBiomeTilePacket extends AbstractMessage<PutBiomeTilePacket> {
private int atlasID, dimension, x, z, biomeID;
public PutBiomeTilePacket() {}
public PutBiomeTilePacket(int atlasID, int dimension, int x, int z, int biomeID) {
this.atlasID = atlasID;
this.dimension = dimension;
this.x = x;
this.z = z;
this.biomeID = biomeID;
}
@Override
protected void read(PacketBuffer buffer) throws IOException {
atlasID = buffer.readVarInt();
dimension = buffer.readVarInt();
x = buffer.readVarInt();
z = buffer.readVarInt();
biomeID = buffer.readVarInt();
}
@Override
protected void write(PacketBuffer buffer) throws IOException {
buffer.writeVarInt(atlasID);
buffer.writeVarInt(dimension);
buffer.writeVarInt(x);
buffer.writeVarInt(z);
buffer.writeVarInt(biomeID);
}
@Override
protected void process(EntityPlayer player, Side side) {
if (side.isServer()) {
// Make sure it's this player's atlas :^)
if (AntiqueAtlasMod.settings.itemNeeded &&
!player.inventory.hasItemStack(new ItemStack(AntiqueAtlasMod.itemAtlas, 1, atlasID))) {
Log.warn("Player %s attempted to modify someone else's Atlas #%d",
player.getGameProfile().getName(), atlasID);
return;
}
AtlasAPI.tiles.putBiomeTile(player.getEntityWorld(), atlasID, biomeID, x, z);
} else {
AtlasData data = AntiqueAtlasMod.atlasData.getAtlasData(atlasID, player.getEntityWorld());
data.setTile(dimension, x, z, new Tile(biomeID));
}
}
}