Clean up
This commit is contained in:
parent
28e483267d
commit
e838c79941
@ -17,69 +17,69 @@ import com.cnaude.chairs.core.Chairs;
|
||||
*/
|
||||
public class ChairsCommand implements CommandExecutor {
|
||||
|
||||
private final Chairs plugin;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
private final Chairs plugin;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
|
||||
public ChairsCommand(Chairs instance, ChairsIgnoreList ignoreList) {
|
||||
this.plugin = instance;
|
||||
this.ignoreList = ignoreList;
|
||||
}
|
||||
public ChairsCommand(Chairs instance, ChairsIgnoreList ignoreList) {
|
||||
this.plugin = instance;
|
||||
this.ignoreList = ignoreList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length == 0) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (sender.hasPermission("chairs.reload") || !(sender instanceof Player)) {
|
||||
plugin.loadConfig();
|
||||
if (plugin.sitHealEnabled) {
|
||||
plugin.chairEffects.restartHealing();
|
||||
} else {
|
||||
plugin.chairEffects.cancelHealing();
|
||||
}
|
||||
if (plugin.sitPickupEnabled) {
|
||||
plugin.chairEffects.restartPickup();
|
||||
} else {
|
||||
plugin.chairEffects.cancelPickup();
|
||||
}
|
||||
if (!plugin.msgReloaded.isEmpty()) {
|
||||
sender.sendMessage(plugin.msgReloaded);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
sender.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player p = (Player) sender;
|
||||
if (args[0].equalsIgnoreCase("on")) {
|
||||
if (p.hasPermission("chairs.self")) {
|
||||
ignoreList.removePlayer(p.getName());
|
||||
if (!plugin.msgEnabled.isEmpty()) {
|
||||
p.sendMessage(plugin.msgEnabled);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
p.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("off")) {
|
||||
if (p.hasPermission("chairs.self")) {
|
||||
ignoreList.addPlayer(p.getName());
|
||||
if (!plugin.msgDisabled.isEmpty()) {
|
||||
p.sendMessage(plugin.msgDisabled);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
p.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length == 0) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (sender.hasPermission("chairs.reload") || !(sender instanceof Player)) {
|
||||
plugin.loadConfig();
|
||||
if (plugin.sitHealEnabled) {
|
||||
plugin.chairEffects.restartHealing();
|
||||
} else {
|
||||
plugin.chairEffects.cancelHealing();
|
||||
}
|
||||
if (plugin.sitPickupEnabled) {
|
||||
plugin.chairEffects.restartPickup();
|
||||
} else {
|
||||
plugin.chairEffects.cancelPickup();
|
||||
}
|
||||
if (!plugin.msgReloaded.isEmpty()) {
|
||||
sender.sendMessage(plugin.msgReloaded);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
sender.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player p = (Player) sender;
|
||||
if (args[0].equalsIgnoreCase("on")) {
|
||||
if (p.hasPermission("chairs.self")) {
|
||||
ignoreList.removePlayer(p.getName());
|
||||
if (!plugin.msgEnabled.isEmpty()) {
|
||||
p.sendMessage(plugin.msgEnabled);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
p.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("off")) {
|
||||
if (p.hasPermission("chairs.self")) {
|
||||
ignoreList.addPlayer(p.getName());
|
||||
if (!plugin.msgDisabled.isEmpty()) {
|
||||
p.sendMessage(plugin.msgDisabled);
|
||||
}
|
||||
} else {
|
||||
if (!plugin.msgNoPerm.isEmpty()) {
|
||||
p.sendMessage(plugin.msgNoPerm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -20,67 +20,67 @@ import com.cnaude.chairs.core.Chairs;
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class ChairsIgnoreList implements Serializable{
|
||||
private static ArrayList<String> ignoreList = new ArrayList<String>();
|
||||
private static final String IGNORE_FILE = "plugins/Chairs/ignores.ser";
|
||||
private static ArrayList<String> ignoreList = new ArrayList<String>();
|
||||
private static final String IGNORE_FILE = "plugins/Chairs/ignores.ser";
|
||||
|
||||
private Chairs plugin;
|
||||
public ChairsIgnoreList(Chairs plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
private Chairs plugin;
|
||||
public ChairsIgnoreList(Chairs plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void load() {
|
||||
File file = new File(IGNORE_FILE);
|
||||
if (!file.exists()) {
|
||||
plugin.logInfo("Ignore file '"+file.getAbsolutePath()+"' does not exist.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
FileInputStream f_in = new FileInputStream(file);
|
||||
ObjectInputStream obj_in = new ObjectInputStream (f_in);
|
||||
ignoreList = (ArrayList<String>) obj_in.readObject();
|
||||
obj_in.close();
|
||||
plugin.logInfo("Loaded ignore list. (Count = "+ignoreList.size()+")");
|
||||
}
|
||||
catch(Exception e) {
|
||||
plugin.logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
public void load() {
|
||||
File file = new File(IGNORE_FILE);
|
||||
if (!file.exists()) {
|
||||
plugin.logInfo("Ignore file '"+file.getAbsolutePath()+"' does not exist.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
FileInputStream f_in = new FileInputStream(file);
|
||||
ObjectInputStream obj_in = new ObjectInputStream (f_in);
|
||||
ignoreList = (ArrayList<String>) obj_in.readObject();
|
||||
obj_in.close();
|
||||
plugin.logInfo("Loaded ignore list. (Count = "+ignoreList.size()+")");
|
||||
}
|
||||
catch(Exception e) {
|
||||
plugin.logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void save() {
|
||||
try {
|
||||
File file = new File(IGNORE_FILE);
|
||||
FileOutputStream f_out = new FileOutputStream (file);
|
||||
ObjectOutputStream obj_out = new ObjectOutputStream (f_out);
|
||||
obj_out.writeObject (ignoreList);
|
||||
obj_out.close();
|
||||
plugin.logInfo("Saved ignore list. (Count = "+ignoreList.size()+")");
|
||||
}
|
||||
catch(Exception e) {
|
||||
plugin.logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
public void save() {
|
||||
try {
|
||||
File file = new File(IGNORE_FILE);
|
||||
FileOutputStream f_out = new FileOutputStream (file);
|
||||
ObjectOutputStream obj_out = new ObjectOutputStream (f_out);
|
||||
obj_out.writeObject (ignoreList);
|
||||
obj_out.close();
|
||||
plugin.logInfo("Saved ignore list. (Count = "+ignoreList.size()+")");
|
||||
}
|
||||
catch(Exception e) {
|
||||
plugin.logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(String s) {
|
||||
if (ignoreList.contains(s)) {
|
||||
return;
|
||||
}
|
||||
//Chairs.get().logInfo("Adding " + s + " to ignore list.");
|
||||
ignoreList.add(s);
|
||||
}
|
||||
public void addPlayer(String s) {
|
||||
if (ignoreList.contains(s)) {
|
||||
return;
|
||||
}
|
||||
//Chairs.get().logInfo("Adding " + s + " to ignore list.");
|
||||
ignoreList.add(s);
|
||||
}
|
||||
|
||||
public void removePlayer(String s) {
|
||||
//Chairs.get().logInfo("Removing " + s + " from ignore list.");
|
||||
ignoreList.remove(s);
|
||||
}
|
||||
public void removePlayer(String s) {
|
||||
//Chairs.get().logInfo("Removing " + s + " from ignore list.");
|
||||
ignoreList.remove(s);
|
||||
}
|
||||
|
||||
public boolean isIgnored(String s) {
|
||||
if (ignoreList.contains(s)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public boolean isIgnored(String s) {
|
||||
if (ignoreList.contains(s)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -11,20 +11,20 @@ import org.bukkit.Material;
|
||||
* @author cnaude
|
||||
*/
|
||||
public class ChairBlock {
|
||||
private Material mat;
|
||||
private double sitHeight;
|
||||
private Material mat;
|
||||
private double sitHeight;
|
||||
|
||||
public ChairBlock(Material m, double s) {
|
||||
mat = m;
|
||||
sitHeight = s;
|
||||
}
|
||||
public ChairBlock(Material m, double s) {
|
||||
mat = m;
|
||||
sitHeight = s;
|
||||
}
|
||||
|
||||
public Material getMat() {
|
||||
return mat;
|
||||
}
|
||||
public Material getMat() {
|
||||
return mat;
|
||||
}
|
||||
|
||||
public double getSitHeight() {
|
||||
return sitHeight;
|
||||
}
|
||||
public double getSitHeight() {
|
||||
return sitHeight;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,153 +25,153 @@ import com.cnaude.chairs.sitaddons.CommandRestrict;
|
||||
import com.cnaude.chairs.vehiclearrow.NMSAccess;
|
||||
|
||||
public class Chairs extends JavaPlugin {
|
||||
public ChairEffects chairEffects;
|
||||
public List<ChairBlock> allowedBlocks;
|
||||
public List<Material> validSigns;
|
||||
public boolean autoRotate, signCheck, notifyplayer;
|
||||
public boolean ignoreIfBlockInHand;
|
||||
public double distance;
|
||||
public HashSet<String> disabledRegions = new HashSet<String>();
|
||||
public int maxChairWidth;
|
||||
public boolean sitHealEnabled;
|
||||
public int sitMaxHealth;
|
||||
public int sitHealthPerInterval;
|
||||
public int sitHealInterval;
|
||||
public boolean sitPickupEnabled;
|
||||
public boolean sitDisableAllCommands = false;
|
||||
public HashSet<String> sitDisabledCommands = new HashSet<String>();
|
||||
private Logger log;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
public String msgSitting, msgStanding, msgOccupied, msgNoPerm, msgReloaded, msgDisabled, msgEnabled, msgCommandRestricted;
|
||||
public ChairEffects chairEffects;
|
||||
public List<ChairBlock> allowedBlocks;
|
||||
public List<Material> validSigns;
|
||||
public boolean autoRotate, signCheck, notifyplayer;
|
||||
public boolean ignoreIfBlockInHand;
|
||||
public double distance;
|
||||
public HashSet<String> disabledRegions = new HashSet<String>();
|
||||
public int maxChairWidth;
|
||||
public boolean sitHealEnabled;
|
||||
public int sitMaxHealth;
|
||||
public int sitHealthPerInterval;
|
||||
public int sitHealInterval;
|
||||
public boolean sitPickupEnabled;
|
||||
public boolean sitDisableAllCommands = false;
|
||||
public HashSet<String> sitDisabledCommands = new HashSet<String>();
|
||||
private Logger log;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
public String msgSitting, msgStanding, msgOccupied, msgNoPerm, msgReloaded, msgDisabled, msgEnabled, msgCommandRestricted;
|
||||
|
||||
|
||||
|
||||
private PlayerSitData psitdata;
|
||||
public PlayerSitData getPlayerSitData() {
|
||||
return psitdata;
|
||||
}
|
||||
private NMSAccess nmsaccess = new NMSAccess();
|
||||
protected NMSAccess getNMSAccess() {
|
||||
return nmsaccess;
|
||||
}
|
||||
private PlayerSitData psitdata;
|
||||
public PlayerSitData getPlayerSitData() {
|
||||
return psitdata;
|
||||
}
|
||||
private NMSAccess nmsaccess = new NMSAccess();
|
||||
protected NMSAccess getNMSAccess() {
|
||||
return nmsaccess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
log = this.getLogger();
|
||||
@Override
|
||||
public void onEnable() {
|
||||
log = this.getLogger();
|
||||
try {
|
||||
nmsaccess.setupVehicleArrow();
|
||||
nmsaccess.setupVehicleArrow();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.severe("Failed to generate VehicleArrow class, exiting");
|
||||
getServer().getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
}
|
||||
chairEffects = new ChairEffects(this);
|
||||
ignoreList = new ChairsIgnoreList(this);
|
||||
ignoreList.load();
|
||||
psitdata = new PlayerSitData(this);
|
||||
getConfig().options().copyDefaults(true);
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
if (sitHealEnabled) {
|
||||
chairEffects.startHealing();
|
||||
}
|
||||
if (sitPickupEnabled) {
|
||||
chairEffects.startPickup();
|
||||
}
|
||||
getServer().getPluginManager().registerEvents(new NANLoginListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new TrySitEventListener(this, ignoreList), this);
|
||||
getServer().getPluginManager().registerEvents(new TryUnsitEventListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(new CommandRestrict(this), this);
|
||||
getCommand("chairs").setExecutor(new ChairsCommand(this, ignoreList));
|
||||
new ChairsAPI(getPlayerSitData());
|
||||
}
|
||||
chairEffects = new ChairEffects(this);
|
||||
ignoreList = new ChairsIgnoreList(this);
|
||||
ignoreList.load();
|
||||
psitdata = new PlayerSitData(this);
|
||||
getConfig().options().copyDefaults(true);
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
if (sitHealEnabled) {
|
||||
chairEffects.startHealing();
|
||||
}
|
||||
if (sitPickupEnabled) {
|
||||
chairEffects.startPickup();
|
||||
}
|
||||
getServer().getPluginManager().registerEvents(new NANLoginListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new TrySitEventListener(this, ignoreList), this);
|
||||
getServer().getPluginManager().registerEvents(new TryUnsitEventListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(new CommandRestrict(this), this);
|
||||
getCommand("chairs").setExecutor(new ChairsCommand(this, ignoreList));
|
||||
new ChairsAPI(getPlayerSitData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
for (Player player : getServer().getOnlinePlayers()) {
|
||||
if (psitdata.isSitting(player)) {
|
||||
psitdata.unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
if (ignoreList != null) {
|
||||
ignoreList.save();
|
||||
}
|
||||
if (chairEffects != null) {
|
||||
chairEffects.cancelHealing();
|
||||
chairEffects.cancelPickup();
|
||||
chairEffects = null;
|
||||
}
|
||||
log = null;
|
||||
nmsaccess = null;
|
||||
psitdata = null;
|
||||
}
|
||||
@Override
|
||||
public void onDisable() {
|
||||
for (Player player : getServer().getOnlinePlayers()) {
|
||||
if (psitdata.isSitting(player)) {
|
||||
psitdata.unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
if (ignoreList != null) {
|
||||
ignoreList.save();
|
||||
}
|
||||
if (chairEffects != null) {
|
||||
chairEffects.cancelHealing();
|
||||
chairEffects.cancelPickup();
|
||||
chairEffects = null;
|
||||
}
|
||||
log = null;
|
||||
nmsaccess = null;
|
||||
psitdata = null;
|
||||
}
|
||||
|
||||
public void loadConfig() {
|
||||
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(this.getDataFolder(),"config.yml"));
|
||||
autoRotate = config.getBoolean("auto-rotate");
|
||||
signCheck = config.getBoolean("sign-check");
|
||||
distance = config.getDouble("distance");
|
||||
maxChairWidth = config.getInt("max-chair-width");
|
||||
notifyplayer = config.getBoolean("notify-player");
|
||||
ignoreIfBlockInHand = config.getBoolean("ignore-if-item-in-hand");
|
||||
public void loadConfig() {
|
||||
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(this.getDataFolder(),"config.yml"));
|
||||
autoRotate = config.getBoolean("auto-rotate");
|
||||
signCheck = config.getBoolean("sign-check");
|
||||
distance = config.getDouble("distance");
|
||||
maxChairWidth = config.getInt("max-chair-width");
|
||||
notifyplayer = config.getBoolean("notify-player");
|
||||
ignoreIfBlockInHand = config.getBoolean("ignore-if-item-in-hand");
|
||||
|
||||
disabledRegions = new HashSet<String>(config.getStringList("disabledWGRegions"));
|
||||
disabledRegions = new HashSet<String>(config.getStringList("disabledWGRegions"));
|
||||
|
||||
sitHealEnabled = config.getBoolean("sit-effects.healing.enabled", false);
|
||||
sitHealInterval = config.getInt("sit-effects.healing.interval",20);
|
||||
sitMaxHealth = config.getInt("sit-effects.healing.max-percent",100);
|
||||
sitHealthPerInterval = config.getInt("sit-effects.healing.amount",1);
|
||||
sitHealEnabled = config.getBoolean("sit-effects.healing.enabled", false);
|
||||
sitHealInterval = config.getInt("sit-effects.healing.interval",20);
|
||||
sitMaxHealth = config.getInt("sit-effects.healing.max-percent",100);
|
||||
sitHealthPerInterval = config.getInt("sit-effects.healing.amount",1);
|
||||
|
||||
sitPickupEnabled = config.getBoolean("sit-effects.itempickup.enabled", false);
|
||||
sitPickupEnabled = config.getBoolean("sit-effects.itempickup.enabled", false);
|
||||
|
||||
sitDisableAllCommands = config.getBoolean("sit-restrictions.commands.all");
|
||||
sitDisabledCommands = new HashSet<String>(config.getStringList("sit-restrictions.commands.list"));
|
||||
sitDisableAllCommands = config.getBoolean("sit-restrictions.commands.all");
|
||||
sitDisabledCommands = new HashSet<String>(config.getStringList("sit-restrictions.commands.list"));
|
||||
|
||||
msgSitting = ChatColor.translateAlternateColorCodes('&',config.getString("messages.sitting"));
|
||||
msgStanding = ChatColor.translateAlternateColorCodes('&',config.getString("messages.standing"));
|
||||
msgOccupied = ChatColor.translateAlternateColorCodes('&',config.getString("messages.occupied"));
|
||||
msgNoPerm = ChatColor.translateAlternateColorCodes('&',config.getString("messages.no-permission"));
|
||||
msgEnabled = ChatColor.translateAlternateColorCodes('&',config.getString("messages.enabled"));
|
||||
msgDisabled = ChatColor.translateAlternateColorCodes('&',config.getString("messages.disabled"));
|
||||
msgReloaded = ChatColor.translateAlternateColorCodes('&',config.getString("messages.reloaded"));
|
||||
msgCommandRestricted = ChatColor.translateAlternateColorCodes('&',config.getString("messages.command-restricted"));
|
||||
msgSitting = ChatColor.translateAlternateColorCodes('&',config.getString("messages.sitting"));
|
||||
msgStanding = ChatColor.translateAlternateColorCodes('&',config.getString("messages.standing"));
|
||||
msgOccupied = ChatColor.translateAlternateColorCodes('&',config.getString("messages.occupied"));
|
||||
msgNoPerm = ChatColor.translateAlternateColorCodes('&',config.getString("messages.no-permission"));
|
||||
msgEnabled = ChatColor.translateAlternateColorCodes('&',config.getString("messages.enabled"));
|
||||
msgDisabled = ChatColor.translateAlternateColorCodes('&',config.getString("messages.disabled"));
|
||||
msgReloaded = ChatColor.translateAlternateColorCodes('&',config.getString("messages.reloaded"));
|
||||
msgCommandRestricted = ChatColor.translateAlternateColorCodes('&',config.getString("messages.command-restricted"));
|
||||
|
||||
allowedBlocks = new ArrayList<ChairBlock>();
|
||||
for (String s : config.getStringList("sit-blocks")) {
|
||||
String type;
|
||||
double sh = 0.7;
|
||||
String tmp[] = s.split("[:]");
|
||||
type = tmp[0];
|
||||
if (tmp.length == 2) {
|
||||
sh = Double.parseDouble(tmp[1]);
|
||||
}
|
||||
Material mat = Material.matchMaterial(type);
|
||||
if (mat != null) {
|
||||
logInfo("Allowed block: " + mat.toString() + " => " + sh);
|
||||
allowedBlocks.add(new ChairBlock(mat,sh));
|
||||
} else {
|
||||
logError("Invalid block: " + type);
|
||||
}
|
||||
}
|
||||
allowedBlocks = new ArrayList<ChairBlock>();
|
||||
for (String s : config.getStringList("sit-blocks")) {
|
||||
String type;
|
||||
double sh = 0.7;
|
||||
String tmp[] = s.split("[:]");
|
||||
type = tmp[0];
|
||||
if (tmp.length == 2) {
|
||||
sh = Double.parseDouble(tmp[1]);
|
||||
}
|
||||
Material mat = Material.matchMaterial(type);
|
||||
if (mat != null) {
|
||||
logInfo("Allowed block: " + mat.toString() + " => " + sh);
|
||||
allowedBlocks.add(new ChairBlock(mat,sh));
|
||||
} else {
|
||||
logError("Invalid block: " + type);
|
||||
}
|
||||
}
|
||||
|
||||
validSigns = new ArrayList<Material>();
|
||||
for (String type : config.getStringList("valid-signs")) {
|
||||
try {
|
||||
validSigns.add(Material.matchMaterial(type));
|
||||
}
|
||||
catch (Exception e) {
|
||||
logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
validSigns = new ArrayList<Material>();
|
||||
for (String type : config.getStringList("valid-signs")) {
|
||||
try {
|
||||
validSigns.add(Material.matchMaterial(type));
|
||||
}
|
||||
catch (Exception e) {
|
||||
logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void logInfo(String _message) {
|
||||
log.log(Level.INFO, _message);
|
||||
}
|
||||
public void logInfo(String _message) {
|
||||
log.log(Level.INFO, _message);
|
||||
}
|
||||
|
||||
public void logError(String _message) {
|
||||
log.log(Level.SEVERE, _message);
|
||||
}
|
||||
public void logError(String _message) {
|
||||
log.log(Level.SEVERE, _message);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -30,39 +30,39 @@ public class PlayerSitData {
|
||||
public Player getPlayerOnChair(Block chair) {
|
||||
return Bukkit.getPlayerExact(sitblock.get(chair));
|
||||
}
|
||||
public void sitPlayer(Player player, Location sitlocation) {
|
||||
try {
|
||||
if (plugin.notifyplayer) {
|
||||
player.sendMessage(plugin.msgSitting);
|
||||
}
|
||||
Block block = sitlocation.getBlock();
|
||||
sitstopteleportloc.put(player.getName(), player.getLocation());
|
||||
player.teleport(sitlocation);
|
||||
Location arrowloc = block.getLocation().add(0.5, 0 , 0.5);
|
||||
public void sitPlayer(Player player, Location sitlocation) {
|
||||
try {
|
||||
if (plugin.notifyplayer) {
|
||||
player.sendMessage(plugin.msgSitting);
|
||||
}
|
||||
Block block = sitlocation.getBlock();
|
||||
sitstopteleportloc.put(player.getName(), player.getLocation());
|
||||
player.teleport(sitlocation);
|
||||
Location arrowloc = block.getLocation().add(0.5, 0 , 0.5);
|
||||
Entity arrow = sitPlayerOnArrow(player, arrowloc);
|
||||
sit.put(player.getName(), arrow);
|
||||
sitblock.put(block, player.getName());
|
||||
sitblockbr.put(player.getName(), block);
|
||||
startReSitTask(player);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void startReSitTask(final Player player) {
|
||||
int task =
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
reSitPlayer(player);
|
||||
}
|
||||
},1000,1000);
|
||||
sittask.put(player.getName(), task);
|
||||
}
|
||||
public void reSitPlayer(final Player player) {
|
||||
try {
|
||||
final Entity prevarrow = sit.get(player.getName());
|
||||
sit.remove(player.getName());
|
||||
player.eject();
|
||||
sit.put(player.getName(), arrow);
|
||||
sitblock.put(block, player.getName());
|
||||
sitblockbr.put(player.getName(), block);
|
||||
startReSitTask(player);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void startReSitTask(final Player player) {
|
||||
int task =
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
reSitPlayer(player);
|
||||
}
|
||||
},1000,1000);
|
||||
sittask.put(player.getName(), task);
|
||||
}
|
||||
public void reSitPlayer(final Player player) {
|
||||
try {
|
||||
final Entity prevarrow = sit.get(player.getName());
|
||||
sit.remove(player.getName());
|
||||
player.eject();
|
||||
Block block = sitblockbr.get(player.getName());
|
||||
Location arrowloc = block.getLocation().add(0.5, 0 , 0.5);
|
||||
Entity arrow = sitPlayerOnArrow(player, arrowloc);
|
||||
@ -73,51 +73,51 @@ public class PlayerSitData {
|
||||
prevarrow.remove();
|
||||
}
|
||||
},100);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
private Entity sitPlayerOnArrow(Player player, Location arrowloc) throws NoSuchMethodException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException {
|
||||
Entity arrow = plugin.getNMSAccess().spawnArrow(arrowloc);
|
||||
arrow.setPassenger(player);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
private Entity sitPlayerOnArrow(Player player, Location arrowloc) throws NoSuchMethodException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException {
|
||||
Entity arrow = plugin.getNMSAccess().spawnArrow(arrowloc);
|
||||
arrow.setPassenger(player);
|
||||
return arrow;
|
||||
}
|
||||
public void unsitPlayerNormal(Player player) {
|
||||
unsitPlayer(player, false, true, false);
|
||||
}
|
||||
public void unsitPlayerForce(Player player) {
|
||||
unsitPlayer(player, true, true, false);
|
||||
}
|
||||
public void unsitPlayerNow(Player player) {
|
||||
unsitPlayer(player, true, false, true);
|
||||
}
|
||||
private void unsitPlayer(final Player player, boolean eject, boolean restoreposition, boolean correctleaveposition) {
|
||||
final Entity arrow = sit.get(player.getName());
|
||||
}
|
||||
public void unsitPlayerNormal(Player player) {
|
||||
unsitPlayer(player, false, true, false);
|
||||
}
|
||||
public void unsitPlayerForce(Player player) {
|
||||
unsitPlayer(player, true, true, false);
|
||||
}
|
||||
public void unsitPlayerNow(Player player) {
|
||||
unsitPlayer(player, true, false, true);
|
||||
}
|
||||
private void unsitPlayer(final Player player, boolean eject, boolean restoreposition, boolean correctleaveposition) {
|
||||
final Entity arrow = sit.get(player.getName());
|
||||
sit.remove(player.getName());
|
||||
if (eject) {
|
||||
player.eject();
|
||||
}
|
||||
arrow.remove();
|
||||
final Location tploc = sitstopteleportloc.get(player.getName());
|
||||
if (restoreposition) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
@Override
|
||||
arrow.remove();
|
||||
final Location tploc = sitstopteleportloc.get(player.getName());
|
||||
if (restoreposition) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
player.teleport(tploc);
|
||||
player.setSneaking(false);
|
||||
}
|
||||
},1);
|
||||
} else if (correctleaveposition) {
|
||||
player.teleport(tploc);
|
||||
}
|
||||
player.teleport(tploc);
|
||||
player.setSneaking(false);
|
||||
}
|
||||
},1);
|
||||
} else if (correctleaveposition) {
|
||||
player.teleport(tploc);
|
||||
}
|
||||
sitblock.remove(sitblockbr.get(player.getName()));
|
||||
sitblockbr.remove(player.getName());
|
||||
sitstopteleportloc.remove(player.getName());
|
||||
Bukkit.getScheduler().cancelTask(sittask.get(player.getName()));
|
||||
sittask.remove(player.getName());
|
||||
if (plugin.notifyplayer) {
|
||||
player.sendMessage(plugin.msgStanding);
|
||||
}
|
||||
}
|
||||
player.sendMessage(plugin.msgStanding);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,282 +23,282 @@ import com.cnaude.chairs.pluginhooks.WGHook;
|
||||
|
||||
public class TrySitEventListener implements Listener {
|
||||
|
||||
public Chairs plugin;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
public Chairs plugin;
|
||||
public ChairsIgnoreList ignoreList;
|
||||
|
||||
public TrySitEventListener(Chairs plugin, ChairsIgnoreList ignoreList) {
|
||||
this.plugin = plugin;
|
||||
this.ignoreList = ignoreList;
|
||||
}
|
||||
public TrySitEventListener(Chairs plugin, ChairsIgnoreList ignoreList) {
|
||||
this.plugin = plugin;
|
||||
this.ignoreList = ignoreList;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
Block block = event.getClickedBlock();
|
||||
if (sitAllowed(player, block)) {
|
||||
event.setCancelled(true);
|
||||
Location sitLocation = getSitLocation(block, player.getLocation().getYaw());
|
||||
plugin.getPlayerSitData().sitPlayer(player, sitLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
Block block = event.getClickedBlock();
|
||||
if (sitAllowed(player, block)) {
|
||||
event.setCancelled(true);
|
||||
Location sitLocation = getSitLocation(block, player.getLocation().getYaw());
|
||||
plugin.getPlayerSitData().sitPlayer(player, sitLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sitAllowed(Player player, Block block) {
|
||||
// Check for permissions
|
||||
if (!player.hasPermission("chairs.sit")) {
|
||||
return false;
|
||||
}
|
||||
private boolean sitAllowed(Player player, Block block) {
|
||||
// Check for permissions
|
||||
if (!player.hasPermission("chairs.sit")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for already sitting
|
||||
if (isSitting(player)) {
|
||||
return false;
|
||||
}
|
||||
// Check for already sitting
|
||||
if (isSitting(player)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for item in hand
|
||||
if (plugin.ignoreIfBlockInHand && player.getItemInHand().getType() != Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
// Check for item in hand
|
||||
if (plugin.ignoreIfBlockInHand && player.getItemInHand().getType() != Material.AIR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for sneaking
|
||||
if (player.isSneaking()) {
|
||||
return false;
|
||||
}
|
||||
// Check for sneaking
|
||||
if (player.isSneaking()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for /chairs off
|
||||
if (ignoreList.isIgnored(player.getName())) {
|
||||
return false;
|
||||
}
|
||||
// Check for /chairs off
|
||||
if (ignoreList.isIgnored(player.getName())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Sit occupied check
|
||||
if (plugin.getPlayerSitData().isBlockOccupied(block)) {
|
||||
player.sendMessage(plugin.msgOccupied.replace("%PLAYER%", plugin.getPlayerSitData().getPlayerOnChair(block).getName()));
|
||||
return false;
|
||||
}
|
||||
// Sit occupied check
|
||||
if (plugin.getPlayerSitData().isBlockOccupied(block)) {
|
||||
player.sendMessage(plugin.msgOccupied.replace("%PLAYER%", plugin.getPlayerSitData().getPlayerOnChair(block).getName()));
|
||||
return false;
|
||||
}
|
||||
|
||||
// Region allowance check
|
||||
if (!WGHook.isAllowedInRegion(plugin.disabledRegions, block.getLocation())) {
|
||||
return false;
|
||||
}
|
||||
// Region allowance check
|
||||
if (!WGHook.isAllowedInRegion(plugin.disabledRegions, block.getLocation())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Stairs stairs = null;
|
||||
Step step = null;
|
||||
WoodenStep wStep = null;
|
||||
Stairs stairs = null;
|
||||
Step step = null;
|
||||
WoodenStep wStep = null;
|
||||
|
||||
// Check for block is chair
|
||||
if (
|
||||
isValidChair(block) ||
|
||||
(
|
||||
!player.hasPermission("chairs.sit.antiopcheck") &&
|
||||
player.hasPermission("chairs.sit." + block.getType().toString())
|
||||
)
|
||||
)
|
||||
{
|
||||
if (block.getState().getData() instanceof Stairs) {
|
||||
stairs = (Stairs) block.getState().getData();
|
||||
} else if (block.getState().getData() instanceof Step) {
|
||||
step = (Step) block.getState().getData();
|
||||
} else if (block.getState().getData() instanceof WoodenStep) {
|
||||
wStep = (WoodenStep) block.getState().getData();
|
||||
}
|
||||
// Check for block is chair
|
||||
if (
|
||||
isValidChair(block) ||
|
||||
(
|
||||
!player.hasPermission("chairs.sit.antiopcheck") &&
|
||||
player.hasPermission("chairs.sit." + block.getType().toString())
|
||||
)
|
||||
)
|
||||
{
|
||||
if (block.getState().getData() instanceof Stairs) {
|
||||
stairs = (Stairs) block.getState().getData();
|
||||
} else if (block.getState().getData() instanceof Step) {
|
||||
step = (Step) block.getState().getData();
|
||||
} else if (block.getState().getData() instanceof WoodenStep) {
|
||||
wStep = (WoodenStep) block.getState().getData();
|
||||
}
|
||||
|
||||
int chairwidth = 1;
|
||||
int chairwidth = 1;
|
||||
|
||||
// Check if block beneath chair is solid.
|
||||
if (block.getRelative(BlockFace.DOWN).isLiquid()) {
|
||||
return false;
|
||||
}
|
||||
if (block.getRelative(BlockFace.DOWN).isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
if (!block.getRelative(BlockFace.DOWN).getType().isSolid()) {
|
||||
return false;
|
||||
}
|
||||
// Check if block beneath chair is solid.
|
||||
if (block.getRelative(BlockFace.DOWN).isLiquid()) {
|
||||
return false;
|
||||
}
|
||||
if (block.getRelative(BlockFace.DOWN).isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
if (!block.getRelative(BlockFace.DOWN).getType().isSolid()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for distance distance between player and chair.
|
||||
if (plugin.distance > 0 && player.getLocation().distance(block.getLocation().add(0.5, 0, 0.5)) > plugin.distance) {
|
||||
return false;
|
||||
}
|
||||
// Check for distance distance between player and chair.
|
||||
if (plugin.distance > 0 && player.getLocation().distance(block.getLocation().add(0.5, 0, 0.5)) > plugin.distance) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if block is inverted
|
||||
if (stairs != null && stairs.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
if (step != null && step.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
if (wStep != null && wStep.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
// Check if block is inverted
|
||||
if (stairs != null && stairs.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
if (step != null && step.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
if (wStep != null && wStep.isInverted()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for signs (only for stairs)
|
||||
if (plugin.signCheck && stairs != null) {
|
||||
boolean sign1 = false;
|
||||
boolean sign2 = false;
|
||||
// Check for signs (only for stairs)
|
||||
if (plugin.signCheck && stairs != null) {
|
||||
boolean sign1 = false;
|
||||
boolean sign2 = false;
|
||||
|
||||
if (stairs.getDescendingDirection() == BlockFace.NORTH || stairs.getDescendingDirection() == BlockFace.SOUTH) {
|
||||
sign1 = checkSign(block, BlockFace.EAST) || checkFrame(block, BlockFace.EAST, player);
|
||||
sign2 = checkSign(block, BlockFace.WEST) || checkFrame(block, BlockFace.WEST, player);
|
||||
} else if (stairs.getDescendingDirection() == BlockFace.EAST || stairs.getDescendingDirection() == BlockFace.WEST) {
|
||||
sign1 = checkSign(block, BlockFace.NORTH) || checkFrame(block, BlockFace.NORTH, player);
|
||||
sign2 = checkSign(block, BlockFace.SOUTH) || checkFrame(block, BlockFace.SOUTH, player);
|
||||
}
|
||||
if (stairs.getDescendingDirection() == BlockFace.NORTH || stairs.getDescendingDirection() == BlockFace.SOUTH) {
|
||||
sign1 = checkSign(block, BlockFace.EAST) || checkFrame(block, BlockFace.EAST, player);
|
||||
sign2 = checkSign(block, BlockFace.WEST) || checkFrame(block, BlockFace.WEST, player);
|
||||
} else if (stairs.getDescendingDirection() == BlockFace.EAST || stairs.getDescendingDirection() == BlockFace.WEST) {
|
||||
sign1 = checkSign(block, BlockFace.NORTH) || checkFrame(block, BlockFace.NORTH, player);
|
||||
sign2 = checkSign(block, BlockFace.SOUTH) || checkFrame(block, BlockFace.SOUTH, player);
|
||||
}
|
||||
|
||||
if (!(sign1 && sign2)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!(sign1 && sign2)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Check for maximal chair width (only for stairs)
|
||||
if (plugin.maxChairWidth > 0 && stairs != null) {
|
||||
if (stairs.getDescendingDirection() == BlockFace.NORTH || stairs.getDescendingDirection() == BlockFace.SOUTH) {
|
||||
chairwidth += getChairWidth(block, BlockFace.EAST);
|
||||
chairwidth += getChairWidth(block, BlockFace.WEST);
|
||||
} else if (stairs.getDescendingDirection() == BlockFace.EAST || stairs.getDescendingDirection() == BlockFace.WEST) {
|
||||
chairwidth += getChairWidth(block, BlockFace.NORTH);
|
||||
chairwidth += getChairWidth(block, BlockFace.SOUTH);
|
||||
}
|
||||
// Check for maximal chair width (only for stairs)
|
||||
if (plugin.maxChairWidth > 0 && stairs != null) {
|
||||
if (stairs.getDescendingDirection() == BlockFace.NORTH || stairs.getDescendingDirection() == BlockFace.SOUTH) {
|
||||
chairwidth += getChairWidth(block, BlockFace.EAST);
|
||||
chairwidth += getChairWidth(block, BlockFace.WEST);
|
||||
} else if (stairs.getDescendingDirection() == BlockFace.EAST || stairs.getDescendingDirection() == BlockFace.WEST) {
|
||||
chairwidth += getChairWidth(block, BlockFace.NORTH);
|
||||
chairwidth += getChairWidth(block, BlockFace.SOUTH);
|
||||
}
|
||||
|
||||
if (chairwidth > plugin.maxChairWidth) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (chairwidth > plugin.maxChairWidth) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private Location getSitLocation(Block block, Float playerYaw)
|
||||
{
|
||||
double sh = 0.7;
|
||||
private Location getSitLocation(Block block, Float playerYaw)
|
||||
{
|
||||
double sh = 0.7;
|
||||
|
||||
for (ChairBlock cb : plugin.allowedBlocks) {
|
||||
if (cb.getMat().equals(block.getType())) {
|
||||
sh = cb.getSitHeight();
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (ChairBlock cb : plugin.allowedBlocks) {
|
||||
if (cb.getMat().equals(block.getType())) {
|
||||
sh = cb.getSitHeight();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Stairs stairs = null;
|
||||
if (block.getState().getData() instanceof Stairs) {
|
||||
stairs = (Stairs) block.getState().getData();
|
||||
}
|
||||
Stairs stairs = null;
|
||||
if (block.getState().getData() instanceof Stairs) {
|
||||
stairs = (Stairs) block.getState().getData();
|
||||
}
|
||||
|
||||
Location plocation = block.getLocation().clone();
|
||||
plocation.add(0.5D, (sh - 0.5D), 0.5D);
|
||||
Location plocation = block.getLocation().clone();
|
||||
plocation.add(0.5D, (sh - 0.5D), 0.5D);
|
||||
|
||||
// Rotate the player's view to the descending side of the block.
|
||||
if (plugin.autoRotate && stairs != null) {
|
||||
switch (stairs.getDescendingDirection()) {
|
||||
case NORTH:
|
||||
plocation.setYaw(180);
|
||||
break;
|
||||
case EAST:
|
||||
plocation.setYaw(-90);
|
||||
break;
|
||||
case SOUTH:
|
||||
plocation.setYaw(0);
|
||||
break;
|
||||
case WEST:
|
||||
plocation.setYaw(90);
|
||||
// Rotate the player's view to the descending side of the block.
|
||||
if (plugin.autoRotate && stairs != null) {
|
||||
switch (stairs.getDescendingDirection()) {
|
||||
case NORTH:
|
||||
plocation.setYaw(180);
|
||||
break;
|
||||
case EAST:
|
||||
plocation.setYaw(-90);
|
||||
break;
|
||||
case SOUTH:
|
||||
plocation.setYaw(0);
|
||||
break;
|
||||
case WEST:
|
||||
plocation.setYaw(90);
|
||||
default:
|
||||
;
|
||||
}
|
||||
} else {
|
||||
plocation.setYaw(playerYaw);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
plocation.setYaw(playerYaw);
|
||||
}
|
||||
return plocation;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private boolean isValidChair(Block block) {
|
||||
for (ChairBlock cb : plugin.allowedBlocks) {
|
||||
if (cb.getMat().equals(block.getType())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean isValidChair(Block block) {
|
||||
for (ChairBlock cb : plugin.allowedBlocks) {
|
||||
if (cb.getMat().equals(block.getType())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isSitting(Player player) {
|
||||
return plugin.getPlayerSitData().isSitting(player);
|
||||
}
|
||||
private boolean isSitting(Player player) {
|
||||
return plugin.getPlayerSitData().isSitting(player);
|
||||
}
|
||||
|
||||
private int getChairWidth(Block block, BlockFace face) {
|
||||
int width = 0;
|
||||
private int getChairWidth(Block block, BlockFace face) {
|
||||
int width = 0;
|
||||
|
||||
// Go through the blocks next to the clicked block and check if there are any further stairs.
|
||||
for (int i = 1; i <= plugin.maxChairWidth; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (relative.getState().getData() instanceof Stairs) {
|
||||
if (isValidChair(relative) && ((Stairs) relative.getState().getData()).getDescendingDirection() == ((Stairs) block.getState().getData()).getDescendingDirection()) {
|
||||
width++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Go through the blocks next to the clicked block and check if there are any further stairs.
|
||||
for (int i = 1; i <= plugin.maxChairWidth; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (relative.getState().getData() instanceof Stairs) {
|
||||
if (isValidChair(relative) && ((Stairs) relative.getState().getData()).getDescendingDirection() == ((Stairs) block.getState().getData()).getDescendingDirection()) {
|
||||
width++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return width;
|
||||
}
|
||||
return width;
|
||||
}
|
||||
|
||||
private boolean checkSign(Block block, BlockFace face) {
|
||||
// Go through the blocks next to the clicked block and check if are signs on the end.
|
||||
for (int i = 1; i <= 100; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (checkDirection(block, relative)) {
|
||||
continue;
|
||||
}
|
||||
if (plugin.validSigns.contains(relative.getType())) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean checkSign(Block block, BlockFace face) {
|
||||
// Go through the blocks next to the clicked block and check if are signs on the end.
|
||||
for (int i = 1; i <= 100; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (checkDirection(block, relative)) {
|
||||
continue;
|
||||
}
|
||||
if (plugin.validSigns.contains(relative.getType())) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkDirection(Block block1, Block block2) {
|
||||
if (block1.getState().getData() instanceof Stairs
|
||||
&& block2.getState().getData() instanceof Stairs) {
|
||||
if (((Stairs) block1.getState().getData()).getDescendingDirection()
|
||||
.equals(((Stairs) block2.getState().getData()).getDescendingDirection())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private boolean checkDirection(Block block1, Block block2) {
|
||||
if (block1.getState().getData() instanceof Stairs
|
||||
&& block2.getState().getData() instanceof Stairs) {
|
||||
if (((Stairs) block1.getState().getData()).getDescendingDirection()
|
||||
.equals(((Stairs) block2.getState().getData()).getDescendingDirection())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkFrame(Block block, BlockFace face, Player player) {
|
||||
// Go through the blocks next to the clicked block and check if are signs on the end.
|
||||
private boolean checkFrame(Block block, BlockFace face, Player player) {
|
||||
// Go through the blocks next to the clicked block and check if are signs on the end.
|
||||
|
||||
for (int i = 1; i <= 100; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (checkDirection(block, relative)) {
|
||||
continue;
|
||||
}
|
||||
if (relative.getType().equals(Material.AIR)) {
|
||||
int x = relative.getLocation().getBlockX();
|
||||
int y = relative.getLocation().getBlockY();
|
||||
int z = relative.getLocation().getBlockZ();
|
||||
for (Entity e : player.getNearbyEntities(plugin.distance, plugin.distance, plugin.distance)) {
|
||||
if (e instanceof ItemFrame && plugin.validSigns.contains(Material.ITEM_FRAME)) {
|
||||
int x2 = e.getLocation().getBlockX();
|
||||
int y2 = e.getLocation().getBlockY();
|
||||
int z2 = e.getLocation().getBlockZ();
|
||||
if (x == x2 && y == y2 && z == z2) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
for (int i = 1; i <= 100; i++) {
|
||||
Block relative = block.getRelative(face, i);
|
||||
if (checkDirection(block, relative)) {
|
||||
continue;
|
||||
}
|
||||
if (relative.getType().equals(Material.AIR)) {
|
||||
int x = relative.getLocation().getBlockX();
|
||||
int y = relative.getLocation().getBlockY();
|
||||
int z = relative.getLocation().getBlockZ();
|
||||
for (Entity e : player.getNearbyEntities(plugin.distance, plugin.distance, plugin.distance)) {
|
||||
if (e instanceof ItemFrame && plugin.validSigns.contains(Material.ITEM_FRAME)) {
|
||||
int x2 = e.getLocation().getBlockX();
|
||||
int y2 = e.getLocation().getBlockY();
|
||||
int z2 = e.getLocation().getBlockZ();
|
||||
if (x == x2 && y == y2 && z == z2) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -15,53 +15,53 @@ import com.cnaude.chairs.core.Chairs;
|
||||
|
||||
public class TryUnsitEventListener implements Listener {
|
||||
|
||||
public Chairs plugin;
|
||||
public Chairs plugin;
|
||||
|
||||
public TryUnsitEventListener(Chairs plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
public TryUnsitEventListener(Chairs plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player player = event.getEntity();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player player = event.getEntity();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNow(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onExitVehicle(VehicleExitEvent e) {
|
||||
if (e.getVehicle().getPassenger() instanceof Player) {
|
||||
final Player player = (Player) e.getVehicle().getPassenger();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNormal(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onExitVehicle(VehicleExitEvent e) {
|
||||
if (e.getVehicle().getPassenger() instanceof Player) {
|
||||
final Player player = (Player) e.getVehicle().getPassenger();
|
||||
if (plugin.getPlayerSitData().isSitting(player)) {
|
||||
plugin.getPlayerSitData().unsitPlayerNormal(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true)
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
Block b = event.getBlock();
|
||||
if (plugin.getPlayerSitData().isBlockOccupied(b)) {
|
||||
Player player = plugin.getPlayerSitData().getPlayerOnChair(b);
|
||||
plugin.getPlayerSitData().unsitPlayerForce(player);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority=EventPriority.HIGHEST,ignoreCancelled=true)
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
Block b = event.getBlock();
|
||||
if (plugin.getPlayerSitData().isBlockOccupied(b)) {
|
||||
Player player = plugin.getPlayerSitData().getPlayerOnChair(b);
|
||||
plugin.getPlayerSitData().unsitPlayerForce(player);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,119 +21,119 @@ import com.cnaude.chairs.core.Chairs;
|
||||
*/
|
||||
public class ChairEffects {
|
||||
|
||||
private Chairs plugin;
|
||||
private int healTaskID = -1;
|
||||
private int pickupTaskID = -1;
|
||||
private Chairs plugin;
|
||||
private int healTaskID = -1;
|
||||
private int pickupTaskID = -1;
|
||||
|
||||
|
||||
public ChairEffects(Chairs plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
public ChairEffects(Chairs plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void startHealing() {
|
||||
healEffectsTask();
|
||||
}
|
||||
public void startHealing() {
|
||||
healEffectsTask();
|
||||
}
|
||||
|
||||
public void cancelHealing() {
|
||||
if (healTaskID != -1) {
|
||||
plugin.getServer().getScheduler().cancelTask(healTaskID);
|
||||
healTaskID = -1;
|
||||
}
|
||||
}
|
||||
public void cancelHealing() {
|
||||
if (healTaskID != -1) {
|
||||
plugin.getServer().getScheduler().cancelTask(healTaskID);
|
||||
healTaskID = -1;
|
||||
}
|
||||
}
|
||||
|
||||
public void restartHealing() {
|
||||
cancelHealing();
|
||||
startHealing();
|
||||
}
|
||||
public void restartHealing() {
|
||||
cancelHealing();
|
||||
startHealing();
|
||||
}
|
||||
|
||||
private void healEffectsTask() {
|
||||
healTaskID = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (plugin.getPlayerSitData().isSitting(p)) {
|
||||
if (p.hasPermission("chairs.sit.health")) {
|
||||
double pHealthPcnt = (p.getHealth()) / p.getMaxHealth() * 100d;
|
||||
if ((pHealthPcnt < plugin.sitMaxHealth) && (p.getHealth() < p.getMaxHealth())) {
|
||||
double newHealth = plugin.sitHealthPerInterval + p.getHealth();
|
||||
if (newHealth > p.getMaxHealth()) {
|
||||
newHealth = p.getMaxHealth();
|
||||
}
|
||||
p.setHealth(newHealth);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, plugin.sitHealInterval, plugin.sitHealInterval);
|
||||
}
|
||||
private void healEffectsTask() {
|
||||
healTaskID = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (plugin.getPlayerSitData().isSitting(p)) {
|
||||
if (p.hasPermission("chairs.sit.health")) {
|
||||
double pHealthPcnt = (p.getHealth()) / p.getMaxHealth() * 100d;
|
||||
if ((pHealthPcnt < plugin.sitMaxHealth) && (p.getHealth() < p.getMaxHealth())) {
|
||||
double newHealth = plugin.sitHealthPerInterval + p.getHealth();
|
||||
if (newHealth > p.getMaxHealth()) {
|
||||
newHealth = p.getMaxHealth();
|
||||
}
|
||||
p.setHealth(newHealth);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, plugin.sitHealInterval, plugin.sitHealInterval);
|
||||
}
|
||||
|
||||
public void startPickup() {
|
||||
pickupEffectsTask();
|
||||
}
|
||||
public void startPickup() {
|
||||
pickupEffectsTask();
|
||||
}
|
||||
|
||||
public void cancelPickup() {
|
||||
if (pickupTaskID != -1) {
|
||||
public void cancelPickup() {
|
||||
if (pickupTaskID != -1) {
|
||||
plugin.getServer().getScheduler().cancelTask(pickupTaskID);
|
||||
}
|
||||
pickupTaskID = -1;
|
||||
}
|
||||
pickupTaskID = -1;
|
||||
}
|
||||
|
||||
public void restartPickup() {
|
||||
cancelPickup();
|
||||
startPickup();
|
||||
}
|
||||
public void restartPickup() {
|
||||
cancelPickup();
|
||||
startPickup();
|
||||
}
|
||||
|
||||
private void pickupEffectsTask() {
|
||||
pickupTaskID = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
private void pickupEffectsTask() {
|
||||
pickupTaskID = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (plugin.getPlayerSitData().isSitting(p)) {
|
||||
for (Entity entity : p.getNearbyEntities(1, 2, 1)) {
|
||||
if (entity instanceof Item) {
|
||||
Item item = (Item) entity;
|
||||
if (item.getPickupDelay() == 0) {
|
||||
if (p.getInventory().firstEmpty() != -1) {
|
||||
PlayerPickupItemEvent pickupevent = new PlayerPickupItemEvent(p, item, 0);
|
||||
Bukkit.getPluginManager().callEvent(pickupevent);
|
||||
if (!pickupevent.isCancelled()) {
|
||||
p.getInventory().addItem(item.getItemStack());
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (entity instanceof ExperienceOrb) {
|
||||
ExperienceOrb eorb = (ExperienceOrb) entity;
|
||||
int exptoadd = eorb.getExperience();
|
||||
while (exptoadd > 0) {
|
||||
int localexptoadd = 0;
|
||||
if (p.getExpToLevel() < exptoadd) {
|
||||
localexptoadd = p.getExpToLevel();
|
||||
PlayerExpChangeEvent expchangeevent = new PlayerExpChangeEvent(p, localexptoadd);
|
||||
Bukkit.getPluginManager().callEvent(expchangeevent);
|
||||
p.giveExp(expchangeevent.getAmount());
|
||||
if (p.getExpToLevel() <= 0) {
|
||||
PlayerLevelChangeEvent levelchangeevent = new PlayerLevelChangeEvent(p, p.getLevel(), p.getLevel()+1);
|
||||
Bukkit.getPluginManager().callEvent(levelchangeevent);
|
||||
p.setExp(0);
|
||||
p.giveExpLevels(1);
|
||||
}
|
||||
} else {
|
||||
localexptoadd = exptoadd;
|
||||
PlayerExpChangeEvent expchangeevent = new PlayerExpChangeEvent(p, localexptoadd);
|
||||
Bukkit.getPluginManager().callEvent(expchangeevent);
|
||||
p.giveExp(expchangeevent.getAmount());
|
||||
}
|
||||
exptoadd -= localexptoadd;
|
||||
}
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},0,1);
|
||||
}
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (plugin.getPlayerSitData().isSitting(p)) {
|
||||
for (Entity entity : p.getNearbyEntities(1, 2, 1)) {
|
||||
if (entity instanceof Item) {
|
||||
Item item = (Item) entity;
|
||||
if (item.getPickupDelay() == 0) {
|
||||
if (p.getInventory().firstEmpty() != -1) {
|
||||
PlayerPickupItemEvent pickupevent = new PlayerPickupItemEvent(p, item, 0);
|
||||
Bukkit.getPluginManager().callEvent(pickupevent);
|
||||
if (!pickupevent.isCancelled()) {
|
||||
p.getInventory().addItem(item.getItemStack());
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (entity instanceof ExperienceOrb) {
|
||||
ExperienceOrb eorb = (ExperienceOrb) entity;
|
||||
int exptoadd = eorb.getExperience();
|
||||
while (exptoadd > 0) {
|
||||
int localexptoadd = 0;
|
||||
if (p.getExpToLevel() < exptoadd) {
|
||||
localexptoadd = p.getExpToLevel();
|
||||
PlayerExpChangeEvent expchangeevent = new PlayerExpChangeEvent(p, localexptoadd);
|
||||
Bukkit.getPluginManager().callEvent(expchangeevent);
|
||||
p.giveExp(expchangeevent.getAmount());
|
||||
if (p.getExpToLevel() <= 0) {
|
||||
PlayerLevelChangeEvent levelchangeevent = new PlayerLevelChangeEvent(p, p.getLevel(), p.getLevel()+1);
|
||||
Bukkit.getPluginManager().callEvent(levelchangeevent);
|
||||
p.setExp(0);
|
||||
p.giveExpLevels(1);
|
||||
}
|
||||
} else {
|
||||
localexptoadd = exptoadd;
|
||||
PlayerExpChangeEvent expchangeevent = new PlayerExpChangeEvent(p, localexptoadd);
|
||||
Bukkit.getPluginManager().callEvent(expchangeevent);
|
||||
p.giveExp(expchangeevent.getAmount());
|
||||
}
|
||||
exptoadd -= localexptoadd;
|
||||
}
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},0,1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,33 +15,33 @@ public class CommandRestrict implements Listener {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
String playercommand = event.getMessage().toLowerCase();
|
||||
if (plugin.getPlayerSitData().isSitting(player))
|
||||
{
|
||||
@EventHandler(priority=EventPriority.LOWEST)
|
||||
public void onPlayerCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
String playercommand = event.getMessage().toLowerCase();
|
||||
if (plugin.getPlayerSitData().isSitting(player))
|
||||
{
|
||||
if (plugin.sitDisableAllCommands)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(plugin.msgCommandRestricted);
|
||||
return;
|
||||
}
|
||||
for (String disabledCommand : plugin.sitDisabledCommands)
|
||||
{
|
||||
if (disabledCommand.startsWith(playercommand))
|
||||
{
|
||||
String therest = playercommand.replace(disabledCommand, "");
|
||||
if (therest.isEmpty() || therest.startsWith(" "))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(plugin.msgCommandRestricted);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (String disabledCommand : plugin.sitDisabledCommands)
|
||||
{
|
||||
if (disabledCommand.startsWith(playercommand))
|
||||
{
|
||||
String therest = playercommand.replace(disabledCommand, "");
|
||||
if (therest.isEmpty() || therest.startsWith(" "))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(plugin.msgCommandRestricted);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -14,20 +14,20 @@ public class NMSAccess {
|
||||
private Class<?> nmsArrowClass;
|
||||
|
||||
public void setupVehicleArrow() throws Exception {
|
||||
String pkgname = getClass().getPackage().getName();
|
||||
String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
String nmspackageversion = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
switch (nmspackageversion) {
|
||||
case "v1_7_R1": {
|
||||
nmsArrowClass = Class.forName(pkgname+"."+"nms172"+".NMSChairsArrow");
|
||||
return;
|
||||
}
|
||||
case "v1_6_R3": {
|
||||
nmsArrowClass = Class.forName(pkgname+"."+"nms164"+".NMSChairsArrow");
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new Exception("ChairsReloaded is not compatible with your server version");
|
||||
String pkgname = getClass().getPackage().getName();
|
||||
String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
String nmspackageversion = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
switch (nmspackageversion) {
|
||||
case "v1_7_R1": {
|
||||
nmsArrowClass = Class.forName(pkgname+"."+"nms172"+".NMSChairsArrow");
|
||||
return;
|
||||
}
|
||||
case "v1_6_R3": {
|
||||
nmsArrowClass = Class.forName(pkgname+"."+"nms164"+".NMSChairsArrow");
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new Exception("ChairsReloaded is not compatible with your server version");
|
||||
}
|
||||
|
||||
public Arrow spawnArrow(Location location) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.cnaude.chairs.vehiclearrow.nms172;
|
||||
|
||||
import net.minecraft.server.v1_7_R1.EntityArrow;
|
||||
import net.minecraft.server.v1_7_R1.World;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.craftbukkit.v1_7_R1.CraftServer;
|
||||
@ -7,9 +10,6 @@ import org.bukkit.entity.Arrow;
|
||||
|
||||
import com.cnaude.chairs.vehiclearrow.NMSChairsArrowInterface;
|
||||
|
||||
import net.minecraft.server.v1_7_R1.EntityArrow;
|
||||
import net.minecraft.server.v1_7_R1.World;
|
||||
|
||||
public class NMSChairsArrow extends EntityArrow implements NMSChairsArrowInterface {
|
||||
|
||||
public NMSChairsArrow(World world) {
|
||||
@ -20,6 +20,7 @@ public class NMSChairsArrow extends EntityArrow implements NMSChairsArrowInterfa
|
||||
public void h() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBukkitEntity(Server server) {
|
||||
bukkitEntity = new CraftChairsArrow((CraftServer) server, this);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user