Sync tile entities with casters properly, and tidy up a few other related things
This commit is contained in:
@@ -89,7 +89,10 @@ public class ForestOfThorns extends Spell {
|
|||||||
if(tileentity instanceof TileEntityPlayerSaveTimed){
|
if(tileentity instanceof TileEntityPlayerSaveTimed){
|
||||||
((TileEntityPlayerSaveTimed)tileentity).setLifetime((int)(getProperty(DURATION).floatValue()
|
((TileEntityPlayerSaveTimed)tileentity).setLifetime((int)(getProperty(DURATION).floatValue()
|
||||||
* modifiers.get(WizardryItems.duration_upgrade)));
|
* modifiers.get(WizardryItems.duration_upgrade)));
|
||||||
if(caster != null) ((TileEntityPlayerSaveTimed)tileentity).setCaster(caster);
|
if(caster != null){
|
||||||
|
((TileEntityPlayerSaveTimed)tileentity).setCaster(caster);
|
||||||
|
}
|
||||||
|
((TileEntityPlayerSaveTimed)tileentity).sync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,8 +32,10 @@ public class Snare extends SpellRay {
|
|||||||
protected boolean onBlockHit(World world, BlockPos pos, EnumFacing side, Vec3d hit, EntityLivingBase caster, Vec3d origin, int ticksInUse, SpellModifiers modifiers){
|
protected boolean onBlockHit(World world, BlockPos pos, EnumFacing side, Vec3d hit, EntityLivingBase caster, Vec3d origin, int ticksInUse, SpellModifiers modifiers){
|
||||||
|
|
||||||
if(side == EnumFacing.UP && world.isSideSolid(pos, EnumFacing.UP) && WizardryUtilities.canBlockBeReplaced(world, pos.up())){
|
if(side == EnumFacing.UP && world.isSideSolid(pos, EnumFacing.UP) && WizardryUtilities.canBlockBeReplaced(world, pos.up())){
|
||||||
world.setBlockState(pos.up(), WizardryBlocks.snare.getDefaultState());
|
if(!world.isRemote){
|
||||||
((TileEntityPlayerSave)world.getTileEntity(pos.up())).setCaster(caster);
|
world.setBlockState(pos.up(), WizardryBlocks.snare.getDefaultState());
|
||||||
|
((TileEntityPlayerSave)world.getTileEntity(pos.up())).setCaster(caster);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ public class TileEntityArcaneWorkbench extends TileEntity implements IInventory,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SPacketUpdateTileEntity getUpdatePacket(){
|
public SPacketUpdateTileEntity getUpdatePacket(){
|
||||||
return new SPacketUpdateTileEntity(pos, getBlockMetadata(), this.getUpdateTag());
|
return new SPacketUpdateTileEntity(pos, 0, this.getUpdateTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package electroblob.wizardry.tileentity;
|
|||||||
import electroblob.wizardry.Wizardry;
|
import electroblob.wizardry.Wizardry;
|
||||||
import electroblob.wizardry.block.BlockBookshelf;
|
import electroblob.wizardry.block.BlockBookshelf;
|
||||||
import electroblob.wizardry.inventory.ContainerBookshelf;
|
import electroblob.wizardry.inventory.ContainerBookshelf;
|
||||||
import electroblob.wizardry.item.ItemSpellBook;
|
|
||||||
import electroblob.wizardry.util.NBTExtras;
|
import electroblob.wizardry.util.NBTExtras;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
@@ -181,7 +180,7 @@ public class TileEntityBookshelf extends TileEntity implements IInventory, ITick
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SPacketUpdateTileEntity getUpdatePacket(){
|
public SPacketUpdateTileEntity getUpdatePacket(){
|
||||||
return new SPacketUpdateTileEntity(pos, getBlockMetadata(), this.getUpdateTag());
|
return new SPacketUpdateTileEntity(pos, 0, this.getUpdateTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ public class TileEntityLectern extends TileEntity implements ITickable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SPacketUpdateTileEntity getUpdatePacket(){
|
public SPacketUpdateTileEntity getUpdatePacket(){
|
||||||
return new SPacketUpdateTileEntity(pos, getBlockMetadata(), this.getUpdateTag());
|
return new SPacketUpdateTileEntity(pos, 0, this.getUpdateTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import electroblob.wizardry.util.WizardryUtilities;
|
|||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.network.NetworkManager;
|
||||||
|
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
@@ -19,6 +21,11 @@ public class TileEntityPlayerSave extends TileEntity {
|
|||||||
|
|
||||||
public TileEntityPlayerSave(){}
|
public TileEntityPlayerSave(){}
|
||||||
|
|
||||||
|
/** Called to manually sync the tile entity with clients. */
|
||||||
|
public void sync(){
|
||||||
|
this.world.markAndNotifyBlock(pos, null, world.getBlockState(pos), world.getBlockState(pos), 3);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound tagCompound){
|
public void readFromNBT(NBTTagCompound tagCompound){
|
||||||
super.readFromNBT(tagCompound);
|
super.readFromNBT(tagCompound);
|
||||||
@@ -57,6 +64,22 @@ public class TileEntityPlayerSave extends TileEntity {
|
|||||||
|
|
||||||
public void setCaster(@Nullable EntityLivingBase caster){
|
public void setCaster(@Nullable EntityLivingBase caster){
|
||||||
this.casterUUID = caster == null ? null : caster.getUniqueID();
|
this.casterUUID = caster == null ? null : caster.getUniqueID();
|
||||||
|
this.sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final NBTTagCompound getUpdateTag(){
|
||||||
|
return this.writeToNBT(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SPacketUpdateTileEntity getUpdatePacket(){
|
||||||
|
return new SPacketUpdateTileEntity(pos, 0, this.getUpdateTag());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt){
|
||||||
|
readFromNBT(pkt.getNbtCompound());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,22 +48,4 @@ public class TileEntityPlayerSaveTimed extends TileEntityPlayerSave implements I
|
|||||||
return tagCompound;
|
return tagCompound;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final NBTTagCompound getUpdateTag(){
|
|
||||||
return this.writeToNBT(new NBTTagCompound());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SPacketUpdateTileEntity getUpdatePacket(){
|
|
||||||
NBTTagCompound tag = new NBTTagCompound();
|
|
||||||
writeToNBT(tag);
|
|
||||||
return new SPacketUpdateTileEntity(pos, 1, tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt){
|
|
||||||
NBTTagCompound tag = pkt.getNbtCompound();
|
|
||||||
readFromNBT(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class TileEntityReceptacle extends TileEntity {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public SPacketUpdateTileEntity getUpdatePacket(){
|
public SPacketUpdateTileEntity getUpdatePacket(){
|
||||||
return new SPacketUpdateTileEntity(pos, getBlockMetadata(), this.getUpdateTag());
|
return new SPacketUpdateTileEntity(pos, 0, this.getUpdateTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user