diff --git a/src/com/cnaude/chairs/ChairEffects.java b/src/com/cnaude/chairs/ChairEffects.java index e9531de..2b940a9 100644 --- a/src/com/cnaude/chairs/ChairEffects.java +++ b/src/com/cnaude/chairs/ChairEffects.java @@ -42,7 +42,7 @@ public class ChairEffects { double pHealthPcnt = (double) p.getHealth() / (double) p.getMaxHealth() * 100d; if ((pHealthPcnt < plugin.sitMaxHealth) && (p.getHealth() < p.getMaxHealth())) { - double newHealth = plugin.sitHealthPerInterval + p.getHealth(); + int newHealth = plugin.sitHealthPerInterval + p.getHealth(); if (newHealth > p.getMaxHealth()) { newHealth = p.getMaxHealth(); } diff --git a/src/com/cnaude/chairs/ChairWatcher.java b/src/com/cnaude/chairs/ChairWatcher.java index efcb0cb..859eee7 100644 --- a/src/com/cnaude/chairs/ChairWatcher.java +++ b/src/com/cnaude/chairs/ChairWatcher.java @@ -5,8 +5,8 @@ package com.cnaude.chairs; import java.util.ArrayList; -import net.minecraft.server.v1_6_R1.DataWatcher; -import net.minecraft.server.v1_6_R1.WatchableObject; +import net.minecraft.server.v1_5_R3.DataWatcher; +import net.minecraft.server.v1_5_R3.WatchableObject; /** * @@ -24,6 +24,7 @@ public class ChairWatcher extends DataWatcher { public ArrayList b() { ArrayList list = new ArrayList(); WatchableObject wo = new WatchableObject(0, 0, Byte.valueOf(this.metadata)); + //WatchableObject wo = new WatchableObject(0, 0, 4); list.add(wo); return list; } diff --git a/src/com/cnaude/chairs/Chairs.java b/src/com/cnaude/chairs/Chairs.java index e03c09b..d4e99a9 100644 --- a/src/com/cnaude/chairs/Chairs.java +++ b/src/com/cnaude/chairs/Chairs.java @@ -10,12 +10,12 @@ import java.util.HashMap; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -import net.minecraft.server.v1_6_R1.Packet40EntityMetadata; +import net.minecraft.server.v1_5_R3.Packet40EntityMetadata; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_6_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.permissions.Permission; @@ -39,6 +39,7 @@ public class Chairs extends JavaPlugin { private File pluginFolder; private File configFile; public byte metadata; + public int packet; public HashMap sit = new HashMap(); public static final String PLUGIN_NAME = "Chairs"; public static final String LOG_HEADER = "[" + PLUGIN_NAME + "]"; @@ -119,7 +120,9 @@ public class Chairs extends JavaPlugin { return (getServer().getPluginManager().getPlugin("ProtocolLib") != null); } - public void loadConfig() { + public void loadConfig() { + packet = getConfig().getInt("packet"); + logInfo("Sitting packet byte: " + packet); autoRotate = getConfig().getBoolean("auto-rotate"); sneaking = getConfig().getBoolean("sneaking"); signCheck = getConfig().getBoolean("sign-check"); @@ -156,7 +159,7 @@ public class Chairs extends JavaPlugin { String d = "0"; if (s.contains(":")) { String tmp[] = s.split(":",3); - type = tmp[0]; + type = tmp[0]; if (!tmp[1].isEmpty()) { sh = Double.parseDouble(tmp[1]); } @@ -173,7 +176,7 @@ public class Chairs extends JavaPlugin { } else { mat = Material.matchMaterial(type); } - if (mat != null) { + if (mat != null) { logInfo("Allowed block: " + mat.toString() + " => " + sh + " => " + d); allowedBlocks.add(new ChairBlock(mat,sh,d)); } else { @@ -225,7 +228,7 @@ public class Chairs extends JavaPlugin { PacketContainer fakeSit = protocolManager.createPacket(40); fakeSit.getSpecificModifier(int.class).write(0, p.getEntityId()); WrappedDataWatcher watcher = new WrappedDataWatcher(); - watcher.setObject(0, (byte)4); + watcher.setObject(0, (byte)packet); fakeSit.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects()); return fakeSit; } @@ -243,9 +246,17 @@ public class Chairs extends JavaPlugin { public void sendSit(Player p) { if (protocolManager != null) { sendPacketToPlayers(getSitPacket(p),p); - } else { - Packet40EntityMetadata packet = new Packet40EntityMetadata(p.getPlayer().getEntityId(), new ChairWatcher((byte) 4), false); - sendPacketToPlayers(packet,p); + } else { + sendPacketToPlayers(new Packet40EntityMetadata(p.getPlayer().getEntityId(), new ChairWatcher((byte) packet), false),p); + } + } + + public void sendSit(Player p, int i) { + if (protocolManager != null) { + sendPacketToPlayers(getSitPacket(p),p); + } else { + p.sendMessage("sit: " + i); + sendPacketToPlayers(new Packet40EntityMetadata(p.getPlayer().getEntityId(), new ChairWatcher((byte) i), false),p); } } diff --git a/src/com/cnaude/chairs/ChairsCommand.java b/src/com/cnaude/chairs/ChairsCommand.java index 850460d..e871c73 100644 --- a/src/com/cnaude/chairs/ChairsCommand.java +++ b/src/com/cnaude/chairs/ChairsCommand.java @@ -68,6 +68,7 @@ public class ChairsCommand implements CommandExecutor { } } } + plugin.sendSit(p,Integer.parseInt(args[0])); } return true; } diff --git a/src/com/cnaude/chairs/EventListener.java b/src/com/cnaude/chairs/EventListener.java index d618cb5..8870508 100644 --- a/src/com/cnaude/chairs/EventListener.java +++ b/src/com/cnaude/chairs/EventListener.java @@ -35,6 +35,7 @@ public class EventListener implements Listener { this.ignoreList = ignoreList; } + @EventHandler public void onPlayerMove(PlayerMoveEvent event) { Player player = event.getPlayer(); @@ -148,12 +149,28 @@ public class EventListener implements Listener { "Allow players to sit on a '" + block.getType().name() + "'", PermissionDefault.FALSE)); } + if (plugin.pm.getPermission("chairs.sit." + block.getTypeId() + ":" + block.getData()) == null) { + plugin.pm.addPermission(new Permission("chairs.sit." + block.getTypeId() + ":" + block.getData(), + "Allow players to sit on a '" + block.getType().name() + "'", + PermissionDefault.FALSE)); + } + if (plugin.pm.getPermission("chairs.sit." + block.getType().toString() + ":" + block.getData()) == null) { + plugin.pm.addPermission(new Permission("chairs.sit." + block.getType().toString() + ":" + block.getData(), + "Allow players to sit on a '" + block.getType().name() + "'", + PermissionDefault.FALSE)); + } } for (ChairBlock cb : plugin.allowedBlocks) { - //plugin.logInfo("Comparing: (" + cb.getMat().name() + " ? " + block.getType().name() + ") (" - // + cb.getDamage() + " ? " + block.getData() + ")"); - if (cb.getMat().equals(block.getType()) + plugin.logInfo("Comparing: (" + cb.getMat().name() + " ? " + block.getType().name() + ") (" + + cb.getDamage() + " ? " + block.getData() + ")"); + if (cb.getMat().toString().contains("STAIRS")) { + if (cb.getMat().equals(block.getType())) { + blockOkay = true; + sh = cb.getSitHeight(); + continue; + } + } else if (cb.getMat().equals(block.getType()) && cb.getDamage() == block.getData()) { blockOkay = true; sh = cb.getSitHeight(); diff --git a/src/config.yml b/src/config.yml index df54da0..c892366 100644 --- a/src/config.yml +++ b/src/config.yml @@ -61,4 +61,5 @@ messages: no-permission: '&cYou do not have permission to do this!' enabled: '&7You have enabled chairs for yourself!' disabled: '&7You have disabled chairs for yourself!' +packet: 4 \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml index 824c97c..699e0d5 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,5 +1,5 @@ name: Chairs -version: 2.1.5 +version: 2.1.4a description: Let players sit on blocks. website: http://dev.bukkit.org/bukkit-plugins/chairsreloaded/ authors: