Make gui's work (but player settings are always recreated on login cus idk how to make the db work)
register listeners Added back button to particle selection gui
This commit is contained in:
@@ -1,44 +0,0 @@
|
||||
package com.alttd.gui;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
public class GUIListener implements Listener {
|
||||
|
||||
/**
|
||||
* Handles clicking inside a gui
|
||||
* @param event gui click event
|
||||
*/
|
||||
@EventHandler
|
||||
public void onClick(InventoryClickEvent event){
|
||||
if (!(event.getWhoClicked() instanceof Player player)){
|
||||
return;
|
||||
}
|
||||
|
||||
GUI gui = GUI.GUIByUUID.get(player.getUniqueId());
|
||||
if (gui == null || gui.getInventory() == null)
|
||||
return;
|
||||
if (!gui.getInventory().equals(event.getInventory()))
|
||||
return;
|
||||
event.setCancelled(true);
|
||||
GUIAction action = gui.getAction(event.getSlot());
|
||||
|
||||
if (action != null){
|
||||
action.click(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClose(InventoryCloseEvent event) {
|
||||
GUI.GUIByUUID.remove(event.getPlayer().getUniqueId());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent event){
|
||||
GUI.GUIByUUID.remove(event.getPlayer().getUniqueId());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.alttd.gui.actions;
|
||||
|
||||
import com.alttd.gui.GUIAction;
|
||||
import com.alttd.objects.ParticleSet;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class ActivateParticleSet implements GUIAction {
|
||||
|
||||
ParticleSet particleSet;
|
||||
|
||||
public ActivateParticleSet(ParticleSet particleSet) {
|
||||
this.particleSet = particleSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(Player player) {
|
||||
//TODO activate particle
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.alttd.gui.actions;
|
||||
|
||||
import com.alttd.AltitudeParticles;
|
||||
import com.alttd.gui.GUIAction;
|
||||
import com.alttd.gui.windows.ChooseParticleGUI;
|
||||
import com.alttd.objects.APartType;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class EnterParticleMenu implements GUIAction {
|
||||
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
@@ -17,7 +19,12 @@ public class EnterParticleMenu implements GUIAction {
|
||||
|
||||
@Override
|
||||
public void click(Player player) {
|
||||
ChooseParticleGUI chooseParticleGUI = new ChooseParticleGUI(aPartType, miniMessage.deserialize(aPartType.getName()));
|
||||
chooseParticleGUI.open(player);
|
||||
ChooseParticleGUI chooseParticleGUI = new ChooseParticleGUI(aPartType, miniMessage.deserialize(aPartType.getName()), player);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
chooseParticleGUI.open(player);
|
||||
}
|
||||
}.runTaskLater(AltitudeParticles.getInstance(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,54 @@
|
||||
package com.alttd.gui.windows;
|
||||
|
||||
import com.alttd.AltitudeParticles;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.gui.DefaultGUI;
|
||||
import com.alttd.gui.actions.ActivateParticleSet;
|
||||
import com.alttd.objects.APartType;
|
||||
import com.alttd.objects.ParticleSet;
|
||||
import com.alttd.storage.ParticleStorage;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ChooseParticleGUI extends DefaultGUI {
|
||||
public ChooseParticleGUI(APartType aPartType, Component name) {
|
||||
|
||||
static ItemStack backButton;
|
||||
|
||||
static {
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
|
||||
backButton = new ItemStack(Material.OAK_DOOR);
|
||||
ItemMeta itemMeta = backButton.getItemMeta();
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.BACK_BUTTON));
|
||||
backButton.setItemMeta(itemMeta);
|
||||
}
|
||||
|
||||
public ChooseParticleGUI(APartType aPartType, Component name, Player player) {
|
||||
super(name);
|
||||
List<ParticleSet> availableParticles = ParticleStorage.getParticleSets(aPartType).stream()
|
||||
.filter(particleSet -> player.hasPermission(particleSet.getPermission()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
int i = 0;
|
||||
for (ParticleSet particleSet : availableParticles) {
|
||||
if (i >= 25) //leave the last 2 slots of the inventory open
|
||||
return;
|
||||
setItem(i++, particleSet.getItemStack(), new ActivateParticleSet(particleSet));
|
||||
}
|
||||
|
||||
setItem(26, backButton, clickingPlayer -> new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
new OpenParticleGUI(clickingPlayer).open(clickingPlayer);
|
||||
}
|
||||
}.runTaskLater(AltitudeParticles.getInstance(), 0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,14 +39,12 @@ public class OpenParticleGUI extends DefaultGUI {
|
||||
setItem(i++, particlesType.getItemStack(), new EnterParticleMenu(particlesType));
|
||||
}
|
||||
PlayerSettings playerSettings = PlayerSettings.getPlayer(player.getUniqueId());
|
||||
if (playerSettings == null)
|
||||
return;
|
||||
setItem(17, playerSettings.isSeeingParticles() ? seeOthersOn : seeOthersOff, new ToggleSeeParticles(this, playerSettings));
|
||||
setItem(25, playerSettings.isSeeingParticles() ? seeOthersOn : seeOthersOff, new ToggleSeeParticles(this, playerSettings));
|
||||
setItem(26, playerSettings.hasActiveParticles() ? particlesOn : particlesOff, new ToggleParticlesActive(this, playerSettings));
|
||||
}
|
||||
|
||||
public void updateSettingSlots(PlayerSettings playerSettings) {
|
||||
setItem(17, playerSettings.isSeeingParticles() ? seeOthersOn : seeOthersOff, new ToggleSeeParticles(this, playerSettings));
|
||||
setItem(25, playerSettings.isSeeingParticles() ? seeOthersOn : seeOthersOff, new ToggleSeeParticles(this, playerSettings));
|
||||
setItem(26, playerSettings.hasActiveParticles() ? particlesOn : particlesOff, new ToggleParticlesActive(this, playerSettings));
|
||||
}
|
||||
|
||||
@@ -80,13 +78,13 @@ public class OpenParticleGUI extends DefaultGUI {
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.SEE_OTHERS_OFF_DESC));
|
||||
seeOthersOff.setItemMeta(itemMeta);
|
||||
|
||||
particlesOn = new ItemStack(Material.PLAYER_HEAD);
|
||||
particlesOn = new ItemStack(Material.LIGHT);
|
||||
itemMeta = particlesOn.getItemMeta();
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.PARTICLES_ON));
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.PARTICLES_ON_DESC));
|
||||
particlesOn.setItemMeta(itemMeta);
|
||||
|
||||
particlesOff = new ItemStack(Material.PLAYER_HEAD);
|
||||
particlesOff = new ItemStack(Material.BARRIER);
|
||||
itemMeta = particlesOff.getItemMeta();
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.PARTICLES_OFF));
|
||||
itemMeta.displayName(miniMessage.deserialize(Config.PARTICLES_OFF_DESC));
|
||||
|
||||
Reference in New Issue
Block a user