#1201: Add Player#sendBlockUpdate to send tile entity updates
By: Yannick Lamprecht <yannicklamprecht@live.de>
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
package org.bukkit.craftbukkit.block;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.PacketListenerPlayOut;
|
||||
import net.minecraft.network.protocol.game.PacketPlayOutTileEntityData;
|
||||
import net.minecraft.world.level.block.entity.TileEntity;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.TileState;
|
||||
import org.bukkit.craftbukkit.util.CraftLocation;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CraftBlockEntityState<T extends TileEntity> extends CraftBlockState implements TileState {
|
||||
|
||||
@@ -105,4 +112,10 @@ public class CraftBlockEntityState<T extends TileEntity> extends CraftBlockState
|
||||
public PersistentDataContainer getPersistentDataContainer() {
|
||||
return this.getSnapshot().persistentDataContainer;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Packet<PacketListenerPlayOut> getUpdatePacket(@NotNull Location location) {
|
||||
T vanillaTileEntitiy = (T) TileEntity.loadStatic(CraftLocation.toBlockPosition(location), getHandle(), getSnapshotNBT());
|
||||
return PacketPlayOutTileEntityData.create(vanillaTileEntitiy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.SoundGroup;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.BlockSupport;
|
||||
import org.bukkit.block.PistonMoveReaction;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
@@ -37,11 +38,13 @@ import org.bukkit.block.structure.StructureRotation;
|
||||
import org.bukkit.craftbukkit.CraftSoundGroup;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||
import org.bukkit.craftbukkit.block.CraftBlockStates;
|
||||
import org.bukkit.craftbukkit.block.CraftBlockSupport;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.craftbukkit.util.CraftLocation;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class CraftBlockData implements BlockData {
|
||||
|
||||
@@ -641,4 +644,10 @@ public class CraftBlockData implements BlockData {
|
||||
public void mirror(Mirror mirror) {
|
||||
this.state = state.mirror(EnumBlockMirror.valueOf(mirror.name()));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public BlockState createBlockState() {
|
||||
return CraftBlockStates.getBlockState(this.state, null);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user