Update menu on status(name, color, material) change
This commit is contained in:
parent
9b9b3d827c
commit
f8a6df8479
3 changed files with 34 additions and 16 deletions
|
@ -8,6 +8,7 @@ import nl.iobyte.menuapi.multi.MenuPage;
|
||||||
import nl.iobyte.menuapi.multi.MultiMenu;
|
import nl.iobyte.menuapi.multi.MultiMenu;
|
||||||
import nl.iobyte.themepark.ThemePark;
|
import nl.iobyte.themepark.ThemePark;
|
||||||
import nl.iobyte.themepark.api.ThemeParkAPI;
|
import nl.iobyte.themepark.api.ThemeParkAPI;
|
||||||
|
import nl.iobyte.themepark.api.attraction.enums.Status;
|
||||||
import nl.iobyte.themepark.api.attraction.objects.Attraction;
|
import nl.iobyte.themepark.api.attraction.objects.Attraction;
|
||||||
import nl.iobyte.themepark.api.attraction.objects.Region;
|
import nl.iobyte.themepark.api.attraction.objects.Region;
|
||||||
import nl.iobyte.themepark.api.config.enums.StorageKey;
|
import nl.iobyte.themepark.api.config.enums.StorageKey;
|
||||||
|
@ -17,10 +18,7 @@ import nl.iobyte.themepark.api.message.MessageKey;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class StatusMenu {
|
public class StatusMenu {
|
||||||
|
|
||||||
|
@ -96,10 +94,7 @@ public class StatusMenu {
|
||||||
if(attraction == null)
|
if(attraction == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!attraction_index.containsKey(attraction.getID()))
|
int slot = attraction_index.getOrDefault(attraction.getID(), 0);
|
||||||
return;
|
|
||||||
|
|
||||||
int slot = attraction_index.get(attraction.getID());
|
|
||||||
if(slot < 1)
|
if(slot < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -107,6 +102,21 @@ public class StatusMenu {
|
||||||
menu.updateItem(slot);
|
menu.updateItem(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update Attraction item where Status
|
||||||
|
* @param status Status
|
||||||
|
*/
|
||||||
|
public void updateStatus(Status status) {
|
||||||
|
for(Map.Entry<String, Attraction> entry : ThemePark.getInstance().getAPI().getAttractionService().getAttractionsByStatus(status).entrySet()) {
|
||||||
|
int slot = attraction_index.getOrDefault(entry.getKey(), 0);
|
||||||
|
if(slot < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu.setItem(slot, getAttraction(entry.getValue()));
|
||||||
|
menu.updateItem(slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open menu on first page for Player
|
* Open menu on first page for Player
|
||||||
* @param player Player
|
* @param player Player
|
||||||
|
|
|
@ -6,7 +6,6 @@ import nl.iobyte.commandapi.objects.SubCommand;
|
||||||
import nl.iobyte.themepark.api.attraction.enums.Status;
|
import nl.iobyte.themepark.api.attraction.enums.Status;
|
||||||
import nl.iobyte.themepark.api.message.Text;
|
import nl.iobyte.themepark.api.message.Text;
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class StatusNameCommand extends SubCommand {
|
public class StatusNameCommand extends SubCommand {
|
||||||
|
@ -24,7 +23,7 @@ public class StatusNameCommand extends SubCommand {
|
||||||
Status status = (Status) list.get(0);
|
Status status = (Status) list.get(0);
|
||||||
String name = (String) list.get(1);
|
String name = (String) list.get(1);
|
||||||
status.setName(name);
|
status.setName(name);
|
||||||
sender.sendMessage(Text.color("&6&lThemeParkMC &f➢ &aSuccessfully changed the name of status &f"+status.toString()));
|
sender.sendMessage(Text.color("&6&lThemeParkMC &f➢ &aSuccessfully changed the name of status &f"+ status));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,16 +11,19 @@ import java.util.HashMap;
|
||||||
public class StatusListener implements Listener {
|
public class StatusListener implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onNameChange(StatusColorChangeEvent e) {
|
public void onColorChange(StatusColorChangeEvent e) {
|
||||||
//Update Sign
|
|
||||||
for(Attraction attraction : ThemePark.getInstance().getAPI().getAttractionService().getAttractionsByStatus(e.getStatus()).values())
|
|
||||||
ThemePark.getInstance().getAPI().getSignManager().update(attraction);
|
|
||||||
|
|
||||||
ThemePark.getInstance().getAPI().getConfigurationManager().set(
|
ThemePark.getInstance().getAPI().getConfigurationManager().set(
|
||||||
StorageLocation.STATUS_SETTINGS,
|
StorageLocation.STATUS_SETTINGS,
|
||||||
"states."+e.getStatus().toString()+".color",
|
"states."+e.getStatus().toString()+".color",
|
||||||
e.getCurrent()
|
e.getCurrent()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//Update menu
|
||||||
|
ThemePark.getInstance().getAPI().getMenuService().getStatusMenu().updateStatus(e.getStatus());
|
||||||
|
|
||||||
|
//Update Sign
|
||||||
|
for(Attraction attraction : ThemePark.getInstance().getAPI().getAttractionService().getAttractionsByStatus(e.getStatus()).values())
|
||||||
|
ThemePark.getInstance().getAPI().getSignManager().update(attraction);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -41,6 +44,9 @@ public class StatusListener implements Listener {
|
||||||
e.getCurrent()
|
e.getCurrent()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//Update menu
|
||||||
|
ThemePark.getInstance().getAPI().getMenuService().getStatusMenu().updateStatus(e.getStatus());
|
||||||
|
|
||||||
//Update Sign
|
//Update Sign
|
||||||
for(Attraction attraction : ThemePark.getInstance().getAPI().getAttractionService().getAttractionsByStatus(e.getStatus()).values())
|
for(Attraction attraction : ThemePark.getInstance().getAPI().getAttractionService().getAttractionsByStatus(e.getStatus()).values())
|
||||||
ThemePark.getInstance().getAPI().getSignManager().update(attraction);
|
ThemePark.getInstance().getAPI().getSignManager().update(attraction);
|
||||||
|
@ -52,7 +58,7 @@ public class StatusListener implements Listener {
|
||||||
ThemePark.getInstance().getAPI().getDatabaseService().executeAsync(
|
ThemePark.getInstance().getAPI().getDatabaseService().executeAsync(
|
||||||
"remote",
|
"remote",
|
||||||
"UPDATE states SET color=? WHERE id=?",
|
"UPDATE states SET color=? WHERE id=?",
|
||||||
new HashMap<Integer, Object>() {{
|
new HashMap<>() {{
|
||||||
put(1, e.getCurrent());
|
put(1, e.getCurrent());
|
||||||
put(2, e.getStatus().getID());
|
put(2, e.getStatus().getID());
|
||||||
}}
|
}}
|
||||||
|
@ -81,6 +87,9 @@ public class StatusListener implements Listener {
|
||||||
"states."+e.getStatus().toString()+".material",
|
"states."+e.getStatus().toString()+".material",
|
||||||
e.getCurrent().toString()
|
e.getCurrent().toString()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//Update menu
|
||||||
|
ThemePark.getInstance().getAPI().getMenuService().getStatusMenu().updateStatus(e.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue