Last active
September 11, 2016 00:41
-
-
Save jamezrin/a4a85158d3b10926df87c3d44b24fce4 to your computer and use it in GitHub Desktop.
An example plugin class that uses ProtocolLib to show a sign with predefined text
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public final class SignTest extends JavaPlugin { | |
private ProtocolManager manager; | |
@Override | |
public void onEnable() { | |
manager = ProtocolLibrary.getProtocolManager(); | |
} | |
@Override | |
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | |
if (sender instanceof Player) { | |
Player player = (Player) sender; | |
sendSignEdit(player, "Hello", "there", "my", "friend"); | |
} else { | |
sender.sendMessage("This command can only be executed by a player"); | |
} | |
return true; | |
} | |
public void sendSignEdit(Player player, String... texts) { | |
BlockPosition position = new BlockPosition(player.getLocation().getBlockX(), 255, player.getLocation().getBlockZ()); | |
PacketContainer blockPacket = manager.createPacket(PacketType.Play.Server.BLOCK_CHANGE); | |
blockPacket.getBlockPositionModifier().write(0, position); | |
blockPacket.getBlockData().write(0, WrappedBlockData.createData(Material.SIGN_POST)); | |
PacketContainer dataPacket = manager.createPacket(PacketType.Play.Server.TILE_ENTITY_DATA); | |
dataPacket.getBlockPositionModifier().write(0, position); | |
dataPacket.getIntegers().write(0, 9); | |
NbtCompound compound = (NbtCompound) dataPacket.getNbtModifier().read(0); | |
for (int index = 0; index < 4; index++) { | |
compound.put("Text" + (index + 1), "{\"extra\":[{\"text\":\"" + texts[index] + "\"}],\"text\":\"\"}"); | |
} | |
dataPacket.getNbtModifier().write(0, compound); | |
PacketContainer editorPacket = manager.createPacket(PacketType.Play.Server.OPEN_SIGN_EDITOR); | |
editorPacket.getBlockPositionModifier().write(0, position); | |
try { | |
manager.sendServerPacket(player, blockPacket); | |
manager.sendServerPacket(player, dataPacket); | |
manager.sendServerPacket(player, editorPacket); | |
} catch (InvocationTargetException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment