nullpointer + settingsinv

This commit is contained in:
LunarAkai 2024-05-13 22:13:44 +02:00
commit 75768ea587
5 changed files with 129 additions and 182 deletions

View file

@ -48,7 +48,7 @@ public class MinecleanerListener implements Listener {
hasRightClicked = true; hasRightClicked = true;
} }
if(!arena.getCurrentMinecleanerGame().gameover && (arena.getArenaStatus() == ArenaStatus.PLAYING || arena.getArenaStatus() == ArenaStatus.COMPLETED)) { if(arena.getCurrentMinecleanerGame() != null && !arena.getCurrentMinecleanerGame().gameover && (arena.getArenaStatus() == ArenaStatus.PLAYING || arena.getArenaStatus() == ArenaStatus.COMPLETED)) {
if(arena.getArenaStatus() == ArenaStatus.PLAYING) { if(arena.getArenaStatus() == ArenaStatus.PLAYING) {
int d0x = arena.getOrientation().getModX(); int d0x = arena.getOrientation().getModX();
int d0z = arena.getOrientation().getModZ(); int d0z = arena.getOrientation().getModZ();
@ -131,117 +131,6 @@ public class MinecleanerListener implements Listener {
} }
} }
} }
if(e.getInventory().equals(plugin.getManager().getSettingsInventory())) {
int slot = e.getRawSlot();
switch (slot) {
case 10: {
if(plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) {
plugin.getManager().updateSettingsValue("allowmanualreset", 1, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
} else {
plugin.getManager().updateSettingsValue("allowmanualreset", 0, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
}
break;
}
case 12: {
if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) {
plugin.getManager().updateSettingsValue("additionaldisplay", 1, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
} else {
plugin.getManager().updateSettingsValue("additionaldisplay", 0, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
}
break;
}
case 14: {
if(plugin.getManager().getSettingsValue("timer", player) == 0) {
plugin.getManager().updateSettingsValue("timer", 1, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
} else {
plugin.getManager().updateSettingsValue("timer", 0, player);
if(arena != null) {
arena.updateIngameInfoTexts();
}
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
}
break;
}
case 16: {
switch (plugin.getManager().getSettingsValue("resettime", player)) {
case 1: {
plugin.getManager().updateSettingsValue("resettime", 2, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 2: {
plugin.getManager().updateSettingsValue("resettime", 3, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 3: {
plugin.getManager().updateSettingsValue("resettime", 4, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 4: {
plugin.getManager().updateSettingsValue("resettime", 5, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 5: {
plugin.getManager().updateSettingsValue("resettime", 6, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 6: {
plugin.getManager().updateSettingsValue("resettime", 7, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 7: {
plugin.getManager().updateSettingsValue("resettime", 8, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 8: {
plugin.getManager().updateSettingsValue("resettime", 9, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 9: {
plugin.getManager().updateSettingsValue("resettime", 10, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
case 10: {
plugin.getManager().updateSettingsValue("resettime", 1, player);
player.closeInventory();
player.openInventory(plugin.getManager().showSettingsInventory(player));
break;
}
}
}
default: {
break;
}
}
}
} }
} }

View file

@ -373,75 +373,6 @@ public class MinecleanerManager {
} }
} }
public Inventory showSettingsInventory(Player player) {
int current = getSettingsValue("allowmanualreset", player);
if(current == 0) {
settingsInventory.setItem(10,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.SHEARS), ChatColor.RED + "Manuelles Resetten deaktiviert")));
} else {
settingsInventory.setItem(10,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.SHEARS), ChatColor.GREEN + "Manuelles Resetten aktiviert")));
}
current = getSettingsValue("additionaldisplay", player);
if(current == 0) {
settingsInventory.setItem(12,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.RED + "Zusätzliche Anzeige in der Action Bar deaktiviert")));
} else {
settingsInventory.setItem(12,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.GREEN + "Zusätzliche Anzeige in der Action Bar aktiviert")));
}
current = getSettingsValue("timer", player);
if(current == 0) {
settingsInventory.setItem(14,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CLOCK), ChatColor.RED + "Timer wird nicht angezeigt")));
} else {
settingsInventory.setItem(14,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CLOCK), ChatColor.GREEN + "Timer wird angezeigt")));
}
current = getSettingsValue("resettime", player);
switch (current) {
case 1:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "1s")));
break;
case 2:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "2s")));
break;
case 3:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "3s")));
break;
case 4:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "4s")));
break;
case 5:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "5s")));
break;
case 6:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "6s")));
break;
case 7:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "7s")));
break;
case 8:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "8s")));
break;
case 9:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "9s")));
break;
case 10:
settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "10s")));
break;
}
return settingsInventory;
}
public int getSettingsValue(String settingsKeyString, Player player) { public int getSettingsValue(String settingsKeyString, Player player) {
PlayerStatistics playerStatistics = plugin.getCubesideStatistics().getStatistics(player.getUniqueId()); PlayerStatistics playerStatistics = plugin.getCubesideStatistics().getStatistics(player.getUniqueId());
SettingKey settingKey = plugin.getCubesideStatistics().getSettingKey("minecleaner.settings." + settingsKeyString); SettingKey settingKey = plugin.getCubesideStatistics().getSettingKey("minecleaner.settings." + settingsKeyString);

View file

@ -0,0 +1,124 @@
package de.lunarakai.minecleaner;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import de.lunarakai.minecleaner.utils.ItemUtil;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
public class MinecleanerSettingsInventory extends AbstractWindow {
private static final int SETTINGS_ALLOW_MANUEL_RESET = 10;
private static final int SETTINGS_ADDITIONAL_DISPLAY = 12;
private static final int SETTINGS_TIMER = 14;
private static final int SETTINGS_RESETTIME = 16;
private static final int WINDOW_SIZE = 27;
private MinecleanerPlugin plugin;
public MinecleanerSettingsInventory(Player player, MinecleanerPlugin plugin) {
super(player, Bukkit.createInventory(player, InventoryType.CHEST, plugin.getDisplayedPluginName() + " Einstellungen"));
this.plugin = plugin;
}
@Override
protected void rebuildInventory() {
Player player = getPlayer();
for (int i = 0; i < WINDOW_SIZE; i++) {
ItemStack item;
switch (i) {
case SETTINGS_ALLOW_MANUEL_RESET -> {
if (plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) {
item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.RED + "Manuelles Resetten deaktiviert");
} else {
item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.GREEN + "Manuelles Resetten aktiviert");
}
}
case SETTINGS_ADDITIONAL_DISPLAY -> {
if (plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) {
item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.RED + "Zusätzliche Anzeige in der Action Bar deaktiviert\"");
} else {
item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.GREEN + "Zusätzliche Anzeige in der Action Bar aktiviert\"");
}
}
case SETTINGS_TIMER -> {
if (plugin.getManager().getSettingsValue("timer", player) == 0) {
item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.RED + "Timer wird nicht angezeigt");
} else {
item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer wird angezeigt");
}
}
case SETTINGS_RESETTIME -> {
int current = plugin.getManager().getSettingsValue("resettime", player);
item = ItemUtil.createGuiItem(Material.CANDLE, ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + current + "s");
}
default -> item = ItemUtil.EMPTY_ICON;
}
this.getInventory().setItem(i, item);
}
}
@Override
public void onItemClicked(InventoryClickEvent event) {
if (!mayAffectThisInventory(event)) {
return;
}
event.setCancelled(true);
if (!getInventory().equals(event.getClickedInventory())) {
return;
}
Player player = getPlayer();
int slot = event.getSlot();
switch (slot) {
case SETTINGS_ALLOW_MANUEL_RESET -> {
if(plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) {
plugin.getManager().updateSettingsValue("allowmanualreset", 1, player);
} else {
plugin.getManager().updateSettingsValue("allowmanualreset", 0, player);
}
rebuildInventory();
}
case SETTINGS_ADDITIONAL_DISPLAY -> {
if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) {
plugin.getManager().updateSettingsValue("additionaldisplay", 1, player);
} else {
plugin.getManager().updateSettingsValue("additionaldisplay", 0, player);
}
rebuildInventory();
}
case SETTINGS_TIMER -> {
if(plugin.getManager().getSettingsValue("timer", player) == 0) {
plugin.getManager().updateSettingsValue("timer", 1, player);
} else {
MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player);
plugin.getManager().updateSettingsValue("timer", 0, player);
if(arena != null) {
arena.updateIngameInfoTexts();
}
}
rebuildInventory();
}
case SETTINGS_RESETTIME -> {
int current = plugin.getManager().getSettingsValue("resettime", player);
if(plugin.getManager().getSettingsValue("resettime", player) < 10) {
plugin.getManager().updateSettingsValue("resettime", current + 1, player);
} else {
plugin.getManager().updateSettingsValue("resettime", 1, player);
}
rebuildInventory();
}
default -> {
}
}
}
}

View file

@ -8,6 +8,7 @@ import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException;
import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException;
import de.iani.cubesideutils.commands.ArgsParser; import de.iani.cubesideutils.commands.ArgsParser;
import de.lunarakai.minecleaner.MinecleanerPlugin; import de.lunarakai.minecleaner.MinecleanerPlugin;
import de.lunarakai.minecleaner.MinecleanerSettingsInventory;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -39,7 +40,7 @@ public class SettingsCommand extends SubCommand {
public boolean onCommand(CommandSender sender, Command command, String s, String s1, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { public boolean onCommand(CommandSender sender, Command command, String s, String s1, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException {
Player player = (Player) sender; Player player = (Player) sender;
player.openInventory(plugin.getManager().showSettingsInventory(player)); new MinecleanerSettingsInventory(player, plugin).open();
return true; return true;
} }
} }

View file

@ -1,5 +1,7 @@
package de.lunarakai.minecleaner.utils; package de.lunarakai.minecleaner.utils;
import de.iani.cubesideutils.StringUtil;
public class MinecleanerStringUtil { public class MinecleanerStringUtil {
private MinecleanerStringUtil() { private MinecleanerStringUtil() {
} }