Update CB 1.4.5-R1.0

Added chairs.sit.[item] perm node
Added ability to use item numbers instead of item names.
This commit is contained in:
cnaude 2012-12-19 07:40:24 -07:00
parent 7417e2cb8c
commit 73dd820949
5 changed files with 62 additions and 38 deletions

View File

@ -2,7 +2,7 @@
# ------ # ------
# A list of all compatible block and item names: http://bit.ly/AmJgMb. # A list of all compatible block and item names: http://bit.ly/AmJgMb.
# ------ # ------
# allowed-blocks: Set the blocks you want to be able to sit down on. Currently, only stairs-blocks are working. # allowed-blocks: Set the blocks you want to be able to sit down on. Use descriptive name or item ID.
# auto-rotate: If set to true, you are automatically rotated to the descending face of the stairs-block when sitting down. # auto-rotate: If set to true, you are automatically rotated to the descending face of the stairs-block when sitting down.
# sneaking: If set to true, you have to sneak to sit down on a chair. # sneaking: If set to true, you have to sneak to sit down on a chair.
# max-chair-width: Define how many blocks a chair can be long (set to number <= 0 for unlimited width). # max-chair-width: Define how many blocks a chair can be long (set to number <= 0 for unlimited width).
@ -31,4 +31,5 @@ sitting-height: 0.7
permissions: true permissions: true
notify-player: true notify-player: true
upside-down-check: true upside-down-check: true
seat-occupied-check: true seat-occupied-check: true
upper-step-check: true

View File

@ -5,8 +5,9 @@
package net.spoothie.chairs; package net.spoothie.chairs;
import java.util.ArrayList; import java.util.ArrayList;
import net.minecraft.server.DataWatcher; import net.minecraft.server.v1_4_5.DataWatcher;
import net.minecraft.server.WatchableObject; import net.minecraft.server.v1_4_5.WatchableObject;
/** /**
* *

View File

@ -6,21 +6,21 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import net.minecraft.server.Packet40EntityMetadata; import net.minecraft.server.v1_4_5.Packet40EntityMetadata;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_4_5.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public class Chairs extends JavaPlugin { public class Chairs extends JavaPlugin {
public List<Material> allowedBlocks = new ArrayList<Material>(); public List<Material> allowedBlocks = new ArrayList<Material>();
public boolean sneaking, autoRotate, signCheck, permissions, notifyplayer, invertedStairCheck, seatOccupiedCheck; public boolean sneaking, autoRotate, signCheck, permissions, notifyplayer, invertedStairCheck, seatOccupiedCheck, invertedStepCheck;
public double sittingHeight, distance; public double sittingHeight, distance;
public int maxChairWidth; public int maxChairWidth;
private File pluginFolder; private File pluginFolder;
@ -33,6 +33,7 @@ public class Chairs extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
pluginFolder = getDataFolder(); pluginFolder = getDataFolder();
configFile = new File(pluginFolder, "config.yml"); configFile = new File(pluginFolder, "config.yml");
createConfig(); createConfig();
@ -65,7 +66,7 @@ public class Chairs extends JavaPlugin {
} }
} }
private void loadConfig() { private void loadConfig() {
autoRotate = getConfig().getBoolean("auto-rotate"); autoRotate = getConfig().getBoolean("auto-rotate");
sneaking = getConfig().getBoolean("sneaking"); sneaking = getConfig().getBoolean("sneaking");
signCheck = getConfig().getBoolean("sign-check"); signCheck = getConfig().getBoolean("sign-check");
@ -76,10 +77,15 @@ public class Chairs extends JavaPlugin {
notifyplayer = getConfig().getBoolean("notify-player"); notifyplayer = getConfig().getBoolean("notify-player");
invertedStairCheck = getConfig().getBoolean("upside-down-check"); invertedStairCheck = getConfig().getBoolean("upside-down-check");
seatOccupiedCheck = getConfig().getBoolean("seat-occupied-check"); seatOccupiedCheck = getConfig().getBoolean("seat-occupied-check");
invertedStepCheck = getConfig().getBoolean("upper-step-check");
for (String type : getConfig().getStringList("allowed-blocks")) { for (String type : getConfig().getStringList("allowed-blocks")) {
try { try {
allowedBlocks.add(Material.getMaterial(type)); if (type.matches("\\d+")) {
allowedBlocks.add(Material.getMaterial(Integer.parseInt(type)));
} else {
allowedBlocks.add(Material.getMaterial(type));
}
} }
catch (Exception e) { catch (Exception e) {
logInfo("ERROR: " + e.getMessage()); logInfo("ERROR: " + e.getMessage());
@ -126,7 +132,7 @@ public class Chairs extends JavaPlugin {
// Send stand packet to all online players // Send stand packet to all online players
public void sendStand(Player p) { public void sendStand(Player p) {
if (sit.containsKey(p.getName())) { if (sit.containsKey(p.getName())) {
if (notifyplayer) { if (notifyplayer) {
p.sendMessage(ChatColor.GRAY + "You are no longer sitting."); p.sendMessage(ChatColor.GRAY + "You are no longer sitting.");
} }
sit.remove(p.getName()); sit.remove(p.getName());
@ -144,4 +150,5 @@ public class Chairs extends JavaPlugin {
public void logError(String _message) { public void logError(String _message) {
log.log(Level.SEVERE, String.format("%s %s", LOG_HEADER, _message)); log.log(Level.SEVERE, String.format("%s %s", LOG_HEADER, _message));
} }
} }

View File

@ -1,5 +1,6 @@
package net.spoothie.chairs; package net.spoothie.chairs;
import java.util.ArrayList;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -19,6 +20,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.material.Stairs; import org.bukkit.material.Stairs;
import org.bukkit.material.Step;
public class EventListener implements Listener { public class EventListener implements Listener {
@ -36,7 +38,7 @@ public class EventListener implements Listener {
Location from = player.getLocation(); Location from = player.getLocation();
Location to = plugin.sit.get(pname); Location to = plugin.sit.get(pname);
if (from.getWorld() == to.getWorld()) { if (from.getWorld() == to.getWorld()) {
if (from.distance(to) > 1) { if (from.distance(to) > 1.5) {
plugin.sendStand(player); plugin.sendStand(player);
} else { } else {
plugin.sendSit(player); plugin.sendSit(player);
@ -75,12 +77,17 @@ public class EventListener implements Listener {
public void onBlockDestroy(BlockBreakEvent event) { public void onBlockDestroy(BlockBreakEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
if (!plugin.sit.isEmpty()) { if (!plugin.sit.isEmpty()) {
ArrayList<String> standList = new ArrayList<String>();
for (String s : plugin.sit.keySet()) { for (String s : plugin.sit.keySet()) {
if (plugin.sit.get(s).equals(block.getLocation())) { if (plugin.sit.get(s).equals(block.getLocation())) {
Player player = Bukkit.getPlayer(s); standList.add(s);
plugin.sendStand(player);
} }
} }
for (String s : standList) {
Player player = Bukkit.getPlayer(s);
plugin.sendStand(player);
}
standList.clear();
} }
} }
@ -89,36 +96,40 @@ public class EventListener implements Listener {
if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block block = event.getClickedBlock(); Block block = event.getClickedBlock();
Stairs stairs = null; Stairs stairs = null;
Step step = null;
double sh = plugin.sittingHeight;
if (block.getState().getData() instanceof Stairs) { if (block.getState().getData() instanceof Stairs) {
stairs = (Stairs) block.getState().getData(); stairs = (Stairs) block.getState().getData();
} else if (block.getState().getData() instanceof Step) {
step = (Step) block.getState().getData();
} else {
sh += 1.0;
} }
if (plugin.allowedBlocks.contains(block.getType())) { Player player = event.getPlayer();
Player player = event.getPlayer(); // Permissions Check
if (plugin.permissions) {
if (!player.hasPermission("chairs.sit")) {
return;
}
}
if (plugin.allowedBlocks.contains(block.getType())
|| player.hasPermission("chairs.sit." + block.getTypeId())
|| player.hasPermission("chairs.sit." + block.getType().toString()) ) {
int chairwidth = 1; int chairwidth = 1;
// Check if block beneath chair is solid. // Check if block beneath chair is solid.
if (block.getRelative(BlockFace.DOWN).getType() == Material.AIR) { if (block.getRelative(BlockFace.DOWN).isLiquid()) {
return; return;
} }
if (block.getRelative(BlockFace.DOWN).getType() == Material.WATER) { if (block.getRelative(BlockFace.DOWN).isEmpty()) {
return; return;
} }
if (block.getRelative(BlockFace.DOWN).getType() == Material.LAVA) { if (!net.minecraft.server.v1_4_5.Block.byId[block.getTypeId()].material.isSolid()) {
return; return;
} }
if (!net.minecraft.server.Block.byId[block.getTypeId()].material.isSolid()) {
return;
}
// Permissions Check
if (plugin.permissions) {
if (!player.hasPermission("chairs.sit")) {
return;
}
}
// Check if player is sitting. // Check if player is sitting.
if (plugin.sit.containsKey(event.getPlayer().getName())) { if (plugin.sit.containsKey(event.getPlayer().getName())) {
plugin.sit.remove(player.getName()); plugin.sit.remove(player.getName());
event.setCancelled(true); event.setCancelled(true);
@ -139,6 +150,11 @@ public class EventListener implements Listener {
return; return;
} }
} }
if (step != null) {
if (step.isInverted() && plugin.invertedStepCheck) {
return;
}
}
// Check for signs. // Check for signs.
if (plugin.signCheck == true && stairs != null) { if (plugin.signCheck == true && stairs != null) {
@ -193,7 +209,7 @@ public class EventListener implements Listener {
// Rotate the player's view to the descending side of the block. // Rotate the player's view to the descending side of the block.
if (plugin.autoRotate && stairs != null) { if (plugin.autoRotate && stairs != null) {
Location plocation = block.getLocation().clone(); Location plocation = block.getLocation().clone();
plocation.add(0.5D, (plugin.sittingHeight - 0.5), 0.5D); plocation.add(0.5D, (sh - 0.5D), 0.5D);
switch (stairs.getDescendingDirection()) { switch (stairs.getDescendingDirection()) {
case NORTH: case NORTH:
plocation.setYaw(90); plocation.setYaw(90);
@ -207,11 +223,11 @@ public class EventListener implements Listener {
case WEST: case WEST:
plocation.setYaw(0); plocation.setYaw(0);
} }
player.teleport(plocation); player.teleport(plocation);
} else { } else {
player.teleport(block.getLocation().add(0.5D, 0.0D, 0.5D)); Location plocation = block.getLocation().clone();
plocation.setYaw(player.getLocation().getYaw());
player.teleport(plocation.add(0.5D, (sh - 0.5D), 0.5D));
} }
player.setSneaking(true); player.setSneaking(true);
if (plugin.notifyplayer) { if (plugin.notifyplayer) {
@ -222,8 +238,7 @@ public class EventListener implements Listener {
Timer timer = new Timer(); Timer timer = new Timer();
long delay = 1 * 2000; long delay = 1 * 2000;
timer.schedule(new sendSitTask(), delay); timer.schedule(new sendSitTask(), delay);
//plugin.sendSit(player);
} }
} }
} }

View File

@ -1,5 +1,5 @@
name: Chairs name: Chairs
version: 1.10.1 version: 1.13.0
description: Let players sit on blocks. description: Let players sit on blocks.
authors: authors:
- spoothie - spoothie