use of am2.network.AMDataWriter in project ArsMagica2 by Mithion.
the class TileEntityInscriptionTable method createSpellForPlayer.
public void createSpellForPlayer(EntityPlayer player) {
if (worldObj.isRemote) {
AMDataWriter writer = new AMDataWriter();
writer.add(xCoord);
writer.add(yCoord);
writer.add(zCoord);
writer.add(MAKE_SPELL);
writer.add(player.getEntityId());
AMNetHandler.INSTANCE.sendPacketToServer(AMPacketIDs.INSCRIPTION_TABLE_UPDATE, writer.generate());
} else {
ArrayList<ArrayList<KeyValuePair<ISpellPart, byte[]>>> shapeGroupSetup = new ArrayList<ArrayList<KeyValuePair<ISpellPart, byte[]>>>();
ArrayList<KeyValuePair<ISpellPart, byte[]>> curRecipeSetup = new ArrayList<KeyValuePair<ISpellPart, byte[]>>();
for (ArrayList<ISpellPart> arr : shapeGroups) {
shapeGroupSetup.add(new ArrayList<KeyValuePair<ISpellPart, byte[]>>());
for (ISpellPart part : arr) {
shapeGroupSetup.get(shapeGroupSetup.size() - 1).add(new KeyValuePair<ISpellPart, byte[]>(part, new byte[0]));
}
}
for (ISpellPart part : currentRecipe) {
curRecipeSetup.add(new KeyValuePair<ISpellPart, byte[]>(part, new byte[0]));
}
ItemStack stack = SpellUtils.instance.createSpellStack(shapeGroupSetup, curRecipeSetup);
stack.stackTagCompound.setString("suggestedName", currentSpellName);
player.inventory.addItemStackToInventory(stack);
}
}
use of am2.network.AMDataWriter in project ArsMagica2 by Mithion.
the class TileEntityInscriptionTable method GetUpdatePacketForServer.
private byte[] GetUpdatePacketForServer() {
AMDataWriter writer = new AMDataWriter();
writer.add(FULL_UPDATE);
writer.add(this.currentPlayerUsing == null);
if (this.currentPlayerUsing != null)
writer.add(this.currentPlayerUsing.getEntityId());
writer.add(this.currentRecipe.size());
for (int i = 0; i < this.currentRecipe.size(); ++i) {
ISpellPart part = this.currentRecipe.get(i);
int id = part.getID();
if (part instanceof ISpellComponent)
id += SkillManager.COMPONENT_OFFSET;
else if (part instanceof ISpellModifier)
id += SkillManager.MODIFIER_OFFSET;
writer.add(id);
}
writer.add(this.shapeGroups.size());
for (ArrayList<ISpellPart> shapeGroup : this.shapeGroups) {
int[] groupData = new int[shapeGroup.size()];
for (int i = 0; i < shapeGroup.size(); ++i) {
groupData[i] = SkillManager.instance.getShiftedPartID(shapeGroup.get(i));
}
writer.add(groupData);
}
writer.add(currentSpellName);
writer.add(currentSpellIsReadOnly);
return writer.generate();
}
use of am2.network.AMDataWriter in project ArsMagica2 by Mithion.
the class TileEntityInscriptionTable method sendDataToServer.
private void sendDataToServer() {
AMDataWriter writer = new AMDataWriter();
writer.add(xCoord);
writer.add(yCoord);
writer.add(zCoord);
writer.add(GetUpdatePacketForServer());
AMNetHandler.INSTANCE.sendPacketToServer(AMPacketIDs.INSCRIPTION_TABLE_UPDATE, writer.generate());
}
use of am2.network.AMDataWriter in project ArsMagica2 by Mithion.
the class ContainerSpellCustomization method sendPacketToServer.
public boolean sendPacketToServer() {
if (!name.equals("") && iconIndex > -1) {
AMDataWriter writer = new AMDataWriter();
writer.add(inventoryPlayer.player.getEntityId());
writer.add(iconIndex);
writer.add(name);
AMNetHandler.INSTANCE.sendPacketToServer(AMPacketIDs.SPELL_CUSTOMIZE, writer.generate());
return true;
}
return false;
}
use of am2.network.AMDataWriter in project ArsMagica2 by Mithion.
the class TileEntityParticleEmitter method syncWithServer.
public void syncWithServer() {
if (this.worldObj.isRemote) {
AMDataWriter writer = new AMDataWriter();
writer.add(this.xCoord);
writer.add(this.yCoord);
writer.add(this.zCoord);
NBTTagCompound compound = new NBTTagCompound();
this.writeToNBT(compound);
writer.add(compound);
byte[] data = writer.generate();
AMNetHandler.INSTANCE.sendPacketToServer(AMPacketIDs.DECO_BLOCK_UPDATE, data);
}
}
Aggregations