mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2024-11-26 20:16:02 +01:00
Fix unable to open commandblock after respawn/world change
This commit is contained in:
parent
9954195a8f
commit
7d7f5a0bda
@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
|
|||||||
import io.netty.buffer.ByteBufOutputStream;
|
import io.netty.buffer.ByteBufOutputStream;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.CommandBlock;
|
import org.bukkit.block.CommandBlock;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -11,8 +12,10 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
import org.spacehq.opennbt.tag.builtin.ByteTag;
|
import org.spacehq.opennbt.tag.builtin.ByteTag;
|
||||||
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
||||||
import us.myles.ViaVersion.ViaVersionPlugin;
|
import us.myles.ViaVersion.ViaVersionPlugin;
|
||||||
@ -30,14 +33,23 @@ public class CommandBlockListener implements Listener {
|
|||||||
private final ViaVersionPlugin plugin;
|
private final ViaVersionPlugin plugin;
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
||||||
public void onJoin(final PlayerJoinEvent e) {
|
public void onJoin(PlayerJoinEvent e) {
|
||||||
if (e.getPlayer().isOp() && plugin.isPorted(e.getPlayer())) {
|
sendOp(e.getPlayer());
|
||||||
ByteBuf buf = Unpooled.buffer();
|
|
||||||
PacketUtil.writeVarInt(PacketType.PLAY_ENTITY_STATUS.getNewPacketID(), buf);
|
|
||||||
buf.writeInt(e.getPlayer().getEntityId());
|
|
||||||
buf.writeByte(26);
|
|
||||||
plugin.sendRawPacket(e.getPlayer(), buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onRespawn(final PlayerRespawnEvent e) {
|
||||||
|
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
sendOp(e.getPlayer());
|
||||||
|
}
|
||||||
|
}, 1L);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onWorldChange(PlayerChangedWorldEvent e) {
|
||||||
|
sendOp(e.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
@ -51,6 +63,16 @@ public class CommandBlockListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendOp(Player p) {
|
||||||
|
if (p.isOp() && plugin.isPorted(p)) {
|
||||||
|
ByteBuf buf = Unpooled.buffer();
|
||||||
|
PacketUtil.writeVarInt(PacketType.PLAY_ENTITY_STATUS.getNewPacketID(), buf);
|
||||||
|
buf.writeInt(p.getEntityId());
|
||||||
|
buf.writeByte(26);
|
||||||
|
plugin.sendRawPacket(p, buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void sendCommandBlockPacket(Block b, Player player) throws Exception {
|
private void sendCommandBlockPacket(Block b, Player player) throws Exception {
|
||||||
if (!(b.getState() instanceof CommandBlock))
|
if (!(b.getState() instanceof CommandBlock))
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user