Fix ignore-if-block-in-hand issue with empty hand counting as a air block

Replace Timers with Bukkit schedulers
Some refactoring optimizations
This commit is contained in:
cnaude 2013-04-04 21:31:22 -07:00
parent e135df1c62
commit 8954be85a1
2 changed files with 32 additions and 26 deletions

View File

@ -208,19 +208,39 @@ public class Chairs extends JavaPlugin {
pm.addPermission(new Permission("chairs.self","Allow player to self disable or enable sitting.",pd));
}
// Send sit packet to all online players
public void sendSit(Player p) {
private PacketContainer getSitPacket(Player p) {
PacketContainer fakeSit = protocolManager.createPacket(40);
fakeSit.getSpecificModifier(int.class).write(0, p.getEntityId());
WrappedDataWatcher watcher = new WrappedDataWatcher();
watcher.setObject(0, (byte)4);
fakeSit.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
return fakeSit;
}
private PacketContainer getStandPacket(Player p) {
PacketContainer fakeSit = protocolManager.createPacket(40);
fakeSit.getSpecificModifier(int.class).write(0, p.getEntityId());
WrappedDataWatcher watcher = new WrappedDataWatcher();
watcher.setObject(0, (byte)0);
fakeSit.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
return fakeSit;
}
// Send sit packet to all online players that are on same world and can see player
public void sendSit(Player p) {
sendPacketToPlayers(getSitPacket(p),p);
}
private void sendPacketToPlayers(PacketContainer pc, Player p) {
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
try {
protocolManager.sendServerPacket(onlinePlayer, fakeSit);
} catch (Exception ex) {
// Nothing here
if (onlinePlayer.canSee(p)) {
if (onlinePlayer.getWorld().equals(p.getWorld())) {
try {
protocolManager.sendServerPacket(onlinePlayer, pc);
} catch (Exception ex) {
// Nothing here
}
}
}
}
}
@ -242,21 +262,7 @@ public class Chairs extends JavaPlugin {
}
sit.remove(p.getName());
}
PacketContainer fakeSit = protocolManager.createPacket(40);
fakeSit.getSpecificModifier(int.class).write(0, p.getEntityId());
WrappedDataWatcher watcher = new WrappedDataWatcher();
watcher.setObject(0, (byte)0);
fakeSit.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
try {
protocolManager.sendServerPacket(onlinePlayer, fakeSit);
} catch (Exception ex) {
// Nothing here
}
}
sendPacketToPlayers(getStandPacket(p),p);
}
public void logInfo(String _message) {