mirror of
https://github.com/JEFF-Media-GbR/ChestSort.git
synced 2025-02-08 08:21:36 +01:00
.
This commit is contained in:
parent
15b494b4ba
commit
c4abf4ea9e
@ -8,43 +8,38 @@ import org.bukkit.entity.Player;
|
||||
public class JeffChestSortCommandExecutor implements CommandExecutor {
|
||||
|
||||
JeffChestSortPlugin plugin;
|
||||
|
||||
JeffChestSortCommandExecutor(JeffChestSortPlugin plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
JeffChestSortCommandExecutor(JeffChestSortPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] arg3) {
|
||||
if(!(sender instanceof Player))
|
||||
{
|
||||
if (!(sender instanceof Player)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(arg1.getName().equalsIgnoreCase("chestsort"))
|
||||
{
|
||||
if ( !(sender instanceof Player)) {
|
||||
|
||||
if (arg1.getName().equalsIgnoreCase("chestsort")) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(plugin.msg.MSG_PLAYERSONLY);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Player p = (Player) sender;
|
||||
JeffChestSortPlayerSetting setting = plugin.PerPlayerSettings.get(p.getUniqueId().toString());
|
||||
setting.sortingEnabled = !setting.sortingEnabled;
|
||||
|
||||
if(setting.sortingEnabled) {
|
||||
|
||||
if (setting.sortingEnabled) {
|
||||
p.sendMessage(plugin.msg.MSG_ACTIVATED);
|
||||
} else {
|
||||
p.sendMessage(plugin.msg.MSG_DEACTIVATED);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -20,138 +20,130 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class JeffChestSortListener implements Listener {
|
||||
|
||||
|
||||
JeffChestSortPlugin plugin;
|
||||
|
||||
JeffChestSortListener(JeffChestSortPlugin plugin){
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
UUID uniqueId=event.getPlayer().getUniqueId();
|
||||
if(!plugin.PerPlayerSettings.containsKey(uniqueId.toString())) {
|
||||
|
||||
File playerFile = new File(plugin.getDataFolder() + File.separator + "playerdata" ,event.getPlayer().getUniqueId().toString() + ".yml");
|
||||
YamlConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
|
||||
|
||||
boolean activeForThisPlayer;
|
||||
|
||||
if(!playerFile.exists()) {
|
||||
activeForThisPlayer = plugin.getConfig().getBoolean("sorting-enabled-by-default");
|
||||
} else {
|
||||
activeForThisPlayer = playerConfig.getBoolean("sortingEnabled");
|
||||
}
|
||||
|
||||
JeffChestSortPlayerSetting newSettings = new JeffChestSortPlayerSetting(activeForThisPlayer);
|
||||
if (!plugin.getConfig().getBoolean("show-message-again-after-logout")) {
|
||||
newSettings.hasSeenMessage = playerConfig.getBoolean("hasSeenMessage");
|
||||
}
|
||||
plugin.PerPlayerSettings.put(uniqueId.toString(),newSettings);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
UUID uniqueId=event.getPlayer().getUniqueId();
|
||||
if(plugin.PerPlayerSettings.containsKey(uniqueId.toString())) {
|
||||
JeffChestSortPlayerSetting setting = plugin.PerPlayerSettings.get(event.getPlayer().getUniqueId().toString());
|
||||
File playerFile = new File(plugin.getDataFolder() + File.separator + "playerdata" ,event.getPlayer().getUniqueId().toString() + ".yml");
|
||||
YamlConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
|
||||
playerConfig.set("sortingEnabled", setting.sortingEnabled);
|
||||
playerConfig.set("hasSeenMessage", setting.hasSeenMessage);
|
||||
try {
|
||||
playerConfig.save(playerFile);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
JeffChestSortPlugin plugin;
|
||||
|
||||
plugin.PerPlayerSettings.remove(uniqueId.toString());
|
||||
JeffChestSortListener(JeffChestSortPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
UUID uniqueId = event.getPlayer().getUniqueId();
|
||||
if (!plugin.PerPlayerSettings.containsKey(uniqueId.toString())) {
|
||||
|
||||
File playerFile = new File(plugin.getDataFolder() + File.separator + "playerdata",
|
||||
event.getPlayer().getUniqueId().toString() + ".yml");
|
||||
YamlConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
|
||||
|
||||
boolean activeForThisPlayer;
|
||||
|
||||
if (!playerFile.exists()) {
|
||||
activeForThisPlayer = plugin.getConfig().getBoolean("sorting-enabled-by-default");
|
||||
} else {
|
||||
activeForThisPlayer = playerConfig.getBoolean("sortingEnabled");
|
||||
}
|
||||
|
||||
JeffChestSortPlayerSetting newSettings = new JeffChestSortPlayerSetting(activeForThisPlayer);
|
||||
if (!plugin.getConfig().getBoolean("show-message-again-after-logout")) {
|
||||
newSettings.hasSeenMessage = playerConfig.getBoolean("hasSeenMessage");
|
||||
}
|
||||
plugin.PerPlayerSettings.put(uniqueId.toString(), newSettings);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
UUID uniqueId = event.getPlayer().getUniqueId();
|
||||
if (plugin.PerPlayerSettings.containsKey(uniqueId.toString())) {
|
||||
JeffChestSortPlayerSetting setting = plugin.PerPlayerSettings
|
||||
.get(event.getPlayer().getUniqueId().toString());
|
||||
File playerFile = new File(plugin.getDataFolder() + File.separator + "playerdata",
|
||||
event.getPlayer().getUniqueId().toString() + ".yml");
|
||||
YamlConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
|
||||
playerConfig.set("sortingEnabled", setting.sortingEnabled);
|
||||
playerConfig.set("hasSeenMessage", setting.hasSeenMessage);
|
||||
try {
|
||||
playerConfig.save(playerFile);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
plugin.PerPlayerSettings.remove(uniqueId.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClose(InventoryCloseEvent event) {
|
||||
|
||||
if (!(event.getPlayer() instanceof Player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Player p = (Player) event.getPlayer();
|
||||
JeffChestSortPlayerSetting setting = plugin.PerPlayerSettings.get(p.getUniqueId().toString());
|
||||
|
||||
if (!(event.getInventory().getHolder() instanceof Chest)
|
||||
&& !(event.getInventory().getHolder() instanceof DoubleChest)
|
||||
&& !(event.getInventory().getHolder() instanceof ShulkerBox)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!plugin.sortingEnabled(p)) {
|
||||
if (!setting.hasSeenMessage) {
|
||||
setting.hasSeenMessage = true;
|
||||
if (plugin.getConfig().getBoolean("show-message-when-using-chest")) {
|
||||
p.sendMessage(plugin.msg.MSG_COMMANDMESSAGE);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Inventory inv = event.getInventory();
|
||||
ItemStack[] items = inv.getContents();
|
||||
event.getInventory().clear();
|
||||
String[] itemList = new String[inv.getSize()];
|
||||
|
||||
int i = 0;
|
||||
for (ItemStack item : items) {
|
||||
if (item != null) {
|
||||
itemList[i] = item.getType().name() + "," + String.valueOf(item.hashCode());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClose(InventoryCloseEvent event)
|
||||
{
|
||||
|
||||
if(!(event.getPlayer() instanceof Player)) {
|
||||
return;
|
||||
// count all items that are not null
|
||||
int count = 0;
|
||||
for (String s : itemList) {
|
||||
if (s != null) {
|
||||
count++;
|
||||
}
|
||||
|
||||
Player p = (Player) event.getPlayer();
|
||||
JeffChestSortPlayerSetting setting = plugin.PerPlayerSettings.get(p.getUniqueId().toString());
|
||||
|
||||
if(!(event.getInventory().getHolder() instanceof Chest)
|
||||
&& !(event.getInventory().getHolder() instanceof DoubleChest)
|
||||
&& !(event.getInventory().getHolder() instanceof ShulkerBox))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!plugin.sortingEnabled(p)) {
|
||||
if(!setting.hasSeenMessage) {
|
||||
setting.hasSeenMessage = true;
|
||||
if(plugin.getConfig().getBoolean("show-message-when-using-chest")) {
|
||||
//p.sendMessage(JeffChestSortMessages.MSG_COMMANDMESSAGE);
|
||||
p.sendMessage(plugin.msg.MSG_COMMANDMESSAGE);
|
||||
}
|
||||
|
||||
// create new array with just the size we need
|
||||
String[] shortenedArray = new String[count];
|
||||
|
||||
// fill new array with items
|
||||
for (int j = 0; j < count; j++) {
|
||||
shortenedArray[j] = itemList[j];
|
||||
}
|
||||
|
||||
// sort array alphabetically
|
||||
Arrays.sort(shortenedArray);
|
||||
|
||||
// put everything back in the inventory
|
||||
for (String s : shortenedArray) {
|
||||
// System.out.println(s);
|
||||
for (ItemStack item : items) {
|
||||
if (item != null && s != null) {
|
||||
if (item.hashCode() == Integer.parseInt(s.split(",")[1])) {
|
||||
inv.addItem(item);
|
||||
item = null;
|
||||
s = null;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Inventory inv = event.getInventory();
|
||||
ItemStack[] items = inv.getContents();
|
||||
event.getInventory().clear();
|
||||
String[] itemList = new String[inv.getSize()];
|
||||
|
||||
int i=0;
|
||||
for(ItemStack item : items)
|
||||
{
|
||||
if(item!=null)
|
||||
{
|
||||
itemList[i] = item.getType().name() + "," + String.valueOf(item.hashCode());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
// count all items that are not null
|
||||
int count = 0;
|
||||
for(String s: itemList)
|
||||
{
|
||||
if(s!=null)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
// create new array with just the size we need
|
||||
String[] shortenedArray = new String[count];
|
||||
|
||||
// fill new array with items
|
||||
for(int j=0; j < count; j++)
|
||||
{
|
||||
shortenedArray[j] = itemList[j];
|
||||
}
|
||||
|
||||
// sort array alphabetically
|
||||
Arrays.sort(shortenedArray);
|
||||
|
||||
// put everything back in the inventory
|
||||
for(String s : shortenedArray)
|
||||
{
|
||||
//System.out.println(s);
|
||||
for(ItemStack item : items) {
|
||||
if(item!=null && s != null) {
|
||||
if(item.hashCode() == Integer.parseInt(s.split(",")[1])) {
|
||||
inv.addItem(item);
|
||||
item = null;
|
||||
s = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,20 +3,22 @@ package de.jeffclan.JeffChestSort;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public class JeffChestSortMessages {
|
||||
|
||||
|
||||
JeffChestSortPlugin plugin;
|
||||
|
||||
|
||||
final String MSG_ACTIVATED, MSG_DEACTIVATED, MSG_COMMANDMESSAGE, MSG_PLAYERSONLY;
|
||||
|
||||
|
||||
JeffChestSortMessages(JeffChestSortPlugin plugin) {
|
||||
this.plugin=plugin;
|
||||
|
||||
|
||||
MSG_ACTIVATED=ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("message-sorting-enabled"));
|
||||
MSG_DEACTIVATED=ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("message-sorting-disabled"));
|
||||
MSG_COMMANDMESSAGE=ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("message-when-using-chest"));
|
||||
MSG_PLAYERSONLY=ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("message-error-players-only"));
|
||||
this.plugin = plugin;
|
||||
|
||||
MSG_ACTIVATED = ChatColor.translateAlternateColorCodes('&',
|
||||
plugin.getConfig().getString("message-sorting-enabled"));
|
||||
MSG_DEACTIVATED = ChatColor.translateAlternateColorCodes('&',
|
||||
plugin.getConfig().getString("message-sorting-disabled"));
|
||||
MSG_COMMANDMESSAGE = ChatColor.translateAlternateColorCodes('&',
|
||||
plugin.getConfig().getString("message-when-using-chest"));
|
||||
MSG_PLAYERSONLY = ChatColor.translateAlternateColorCodes('&',
|
||||
plugin.getConfig().getString("message-error-players-only"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
package de.jeffclan.JeffChestSort;
|
||||
|
||||
public class JeffChestSortPlayerSetting {
|
||||
|
||||
|
||||
// Sorting enabled for this player?
|
||||
boolean sortingEnabled;
|
||||
|
||||
|
||||
// Did we already show the message how to activate sorting?
|
||||
boolean hasSeenMessage = false;
|
||||
|
||||
|
||||
JeffChestSortPlayerSetting(boolean sortingEnabled) {
|
||||
this.sortingEnabled = sortingEnabled;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -9,29 +9,29 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class JeffChestSortPlugin extends JavaPlugin {
|
||||
|
||||
|
||||
Map<String, JeffChestSortPlayerSetting> PerPlayerSettings = new HashMap<String, JeffChestSortPlayerSetting>();
|
||||
FileConfiguration config = getConfig();
|
||||
JeffChestSortMessages msg;
|
||||
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
createConfig();
|
||||
msg = new JeffChestSortMessages(this);
|
||||
getServer().getPluginManager().registerEvents(new JeffChestSortListener(this), this);
|
||||
JeffChestSortCommandExecutor commandExecutor = new JeffChestSortCommandExecutor(this);
|
||||
JeffChestSortCommandExecutor commandExecutor = new JeffChestSortCommandExecutor(this);
|
||||
this.getCommand("chestsort").setExecutor(commandExecutor);
|
||||
}
|
||||
|
||||
|
||||
public boolean sortingEnabled(Player p) {
|
||||
return PerPlayerSettings.get(p.getUniqueId().toString()).sortingEnabled;
|
||||
}
|
||||
|
||||
|
||||
void createConfig() {
|
||||
this.saveDefaultConfig();
|
||||
File playerDataFolder = new File(getDataFolder().getPath() + File.separator+"playerdata");
|
||||
if(!playerDataFolder.exists())
|
||||
playerDataFolder.mkdir();
|
||||
File playerDataFolder = new File(getDataFolder().getPath() + File.separator + "playerdata");
|
||||
if (!playerDataFolder.exists())
|
||||
playerDataFolder.mkdir();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user