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