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:
2022-01-12 22:26:22 +01:00
parent bc74d35faa
commit cc8ec26c66
12 changed files with 187 additions and 38 deletions
@@ -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));