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:
parent
bc74d35faa
commit
cc8ec26c66
|
|
@ -3,8 +3,12 @@ package com.alttd;
|
|||
import com.alttd.commands.CommandManager;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.config.DatabaseConfig;
|
||||
import com.alttd.database.Database;
|
||||
import com.alttd.listeners.GUIListener;
|
||||
import com.alttd.listeners.BlockBreakListener;
|
||||
import com.alttd.listeners.BlockPlaceListener;
|
||||
import com.alttd.listeners.PlayerJoinListener;
|
||||
import com.alttd.util.Logger;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class AltitudeParticles extends JavaPlugin {
|
||||
|
|
@ -24,11 +28,20 @@ public class AltitudeParticles extends JavaPlugin {
|
|||
public void onEnable() {
|
||||
Config.reload();
|
||||
DatabaseConfig.reload();
|
||||
Database.getDatabase().init();
|
||||
// Database.getDatabase().init();
|
||||
new CommandManager();
|
||||
registerEvents();
|
||||
Logger.info("--------------------------------------------------");
|
||||
Logger.info("Altitude Particles started");
|
||||
Logger.info("--------------------------------------------------");
|
||||
}
|
||||
|
||||
private void registerEvents() {
|
||||
PluginManager pluginManager = getServer().getPluginManager();
|
||||
pluginManager.registerEvents(new PlayerJoinListener(), this);
|
||||
pluginManager.registerEvents(new BlockBreakListener(), this);
|
||||
pluginManager.registerEvents(new BlockPlaceListener(), this);
|
||||
pluginManager.registerEvents(new GUIListener(), this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,8 +57,18 @@ public final class Config extends AbstractConfig {
|
|||
public static String PARTICLES_ON_DESC = "<dark_aqua>Click to disable particles</dark_aqua>";
|
||||
public static String PARTICLES_OFF = "<red>Particles off</red>";
|
||||
public static String PARTICLES_OFF_DESC = "<dark_aqua>Click to enable particles</dark_aqua>";
|
||||
private static void loadGUIButtons() {
|
||||
public static String BACK_BUTTON = "<yellow>Back</yellow>";
|
||||
|
||||
private static void loadGUIButtons() {
|
||||
config.getString("gui-buttons.see-others-on", SEE_OTHERS_ON);
|
||||
config.getString("gui-buttons.see-others-on-desc", SEE_OTHERS_ON_DESC);
|
||||
config.getString("gui-buttons.see-others-off", SEE_OTHERS_OFF);
|
||||
config.getString("gui-buttons.see-others-off-desc", SEE_OTHERS_OFF_DESC);
|
||||
config.getString("gui-buttons.particles-on", PARTICLES_ON);
|
||||
config.getString("gui-buttons.particles-on-desc", PARTICLES_ON_DESC);
|
||||
config.getString("gui-buttons.particles-off", PARTICLES_OFF);
|
||||
config.getString("gui-buttons.particles-off-desc", PARTICLES_OFF_DESC);
|
||||
config.getString("gui-buttons.back-button", BACK_BUTTON);
|
||||
}
|
||||
|
||||
public static boolean DEBUG = false;
|
||||
|
|
|
|||
|
|
@ -14,10 +14,6 @@ public class Database {
|
|||
private static Database instance = null;
|
||||
public static Connection connection = null;
|
||||
|
||||
private Database() {
|
||||
|
||||
}
|
||||
|
||||
public static Database getDatabase(){
|
||||
if (instance == null)
|
||||
instance = new Database();
|
||||
|
|
@ -57,11 +53,25 @@ public class Database {
|
|||
|
||||
connection = DriverManager.getConnection(
|
||||
"jdbc:mysql://" + DatabaseConfig.IP + ":" + DatabaseConfig.PORT + "/" + DatabaseConfig.DATABASE_NAME +
|
||||
"?autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true",
|
||||
"?autoReconnect=true&useSSL=false",
|
||||
DatabaseConfig.USERNAME, DatabaseConfig.PASSWORD);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the connection for the database
|
||||
* @return Returns the connection.
|
||||
*/
|
||||
public static Connection getConnection() {
|
||||
try {
|
||||
instance.openConnection();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
private static void createActiveParticlesTable() {
|
||||
try {
|
||||
String sql = "CREATE TABLE IF NOT EXISTS active_particles(" +
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ public class Queries {
|
|||
public static PlayerSettings getPlayerSettings(UUID uuid) {
|
||||
String sql = "SELECT * FROM user_settings WHERE uuid = ?";
|
||||
try {
|
||||
PreparedStatement preparedStatement = Database.connection.prepareStatement(sql);
|
||||
PreparedStatement preparedStatement = Database.getConnection().prepareStatement(sql);
|
||||
preparedStatement.setString(1, uuid.toString());
|
||||
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
|
|
|
|||
19
src/main/java/com/alttd/gui/actions/ActivateParticleSet.java
Normal file
19
src/main/java/com/alttd/gui/actions/ActivateParticleSet.java
Normal file
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
package com.alttd.gui;
|
||||
package com.alttd.listeners;
|
||||
|
||||
import com.alttd.AltitudeParticles;
|
||||
import com.alttd.gui.GUI;
|
||||
import com.alttd.gui.GUIAction;
|
||||
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;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class GUIListener implements Listener {
|
||||
|
||||
|
|
@ -27,9 +31,14 @@ public class GUIListener implements Listener {
|
|||
event.setCancelled(true);
|
||||
GUIAction action = gui.getAction(event.getSlot());
|
||||
|
||||
if (action != null){
|
||||
action.click(player);
|
||||
}
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (action != null){
|
||||
action.click(player);
|
||||
}
|
||||
}
|
||||
}.runTaskAsynchronously(AltitudeParticles.getInstance());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
|
@ -3,6 +3,7 @@ package com.alttd.listeners;
|
|||
import com.alttd.AltitudeParticles;
|
||||
import com.alttd.database.Queries;
|
||||
import com.alttd.storage.PlayerSettings;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
|
@ -11,17 +12,19 @@ import java.util.UUID;
|
|||
|
||||
public class PlayerJoinListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
|
||||
if (playerSettings == null) Queries.getPlayerSettings(uuid);
|
||||
|
||||
//TODO activate particles sync/async???
|
||||
}
|
||||
}.runTaskAsynchronously(AltitudeParticles.getInstance());
|
||||
new PlayerSettings(true, true, event.getPlayer().getUniqueId()); //TODO REMOVE
|
||||
// new BukkitRunnable() { //TODO uncomment
|
||||
// @Override
|
||||
// public void run() {
|
||||
// UUID uuid = event.getPlayer().getUniqueId();
|
||||
// PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
|
||||
// if (playerSettings == null) Queries.getPlayerSettings(uuid);
|
||||
//
|
||||
// //TODO activate particles sync/async???
|
||||
// }
|
||||
// }.runTaskAsynchronously(AltitudeParticles.getInstance());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,23 +5,28 @@ import com.alttd.frameSpawners.FrameSpawnerLocation;
|
|||
import com.alttd.frameSpawners.FrameSpawnerPlayer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ParticleSet {
|
||||
|
||||
List<Frame> frames;
|
||||
int delay, repeat;
|
||||
APartType particlesType;
|
||||
boolean shouldRepeat;
|
||||
int ticksUntilNextFrame;
|
||||
private final List<Frame> frames;
|
||||
private final int delay, repeat;
|
||||
private final APartType particlesType;
|
||||
private final boolean shouldRepeat;
|
||||
private final String permission;
|
||||
private final ItemStack itemStack;
|
||||
private int ticksUntilNextFrame;
|
||||
|
||||
public ParticleSet(List<Frame> frames, int delay, int repeat, APartType particlesType) {
|
||||
public ParticleSet(List<Frame> frames, int delay, int repeat, APartType particlesType, String permission, ItemStack itemStack) {
|
||||
this.frames = frames;
|
||||
this.delay = delay;
|
||||
this.repeat = repeat;
|
||||
this.particlesType = particlesType;
|
||||
this.shouldRepeat = repeat < 0;
|
||||
this.permission = permission;
|
||||
this.itemStack = itemStack;
|
||||
ticksUntilNextFrame = delay;
|
||||
}
|
||||
|
||||
|
|
@ -34,4 +39,12 @@ public class ParticleSet {
|
|||
FrameSpawnerPlayer frameSpawnerPlayer = new FrameSpawnerPlayer(repeat, frames, player);
|
||||
frameSpawnerPlayer.runTaskTimerAsynchronously(AltitudeParticles.getInstance(), 0, delay);
|
||||
}
|
||||
|
||||
public String getPermission() {
|
||||
return permission;
|
||||
}
|
||||
|
||||
public ItemStack getItemStack() {
|
||||
return itemStack;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
24
src/main/java/com/alttd/storage/ParticleStorage.java
Normal file
24
src/main/java/com/alttd/storage/ParticleStorage.java
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
package com.alttd.storage;
|
||||
|
||||
import com.alttd.objects.APartType;
|
||||
import com.alttd.objects.ParticleSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class ParticleStorage {
|
||||
private static final HashMap<APartType, List<ParticleSet>> particles = new HashMap<>();
|
||||
|
||||
public static void addParticleSet(APartType aPartType, ParticleSet particleSet) {
|
||||
List<ParticleSet> particleSets = particles.getOrDefault(aPartType, new ArrayList<>());
|
||||
if (particleSets.contains(particleSet))
|
||||
return;
|
||||
particleSets.add(particleSet);
|
||||
particles.put(aPartType, particleSets);
|
||||
}
|
||||
|
||||
public static List<ParticleSet> getParticleSets(APartType aPartType) {
|
||||
return particles.getOrDefault(aPartType, new ArrayList<>());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user