Map gui works
This commit is contained in:
parent
9938367f72
commit
27c61fa74b
|
@ -1,10 +1,14 @@
|
||||||
package xyz.twovb.sgm.commands.impl;
|
package xyz.twovb.sgm.commands.impl;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 5/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by 2vb - 2/7/2024
|
* Created by 2vb - 2/7/2024
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
|
|
||||||
import dev.rollczi.litecommands.annotations.argument.Arg;
|
import dev.rollczi.litecommands.annotations.argument.Arg;
|
||||||
import dev.rollczi.litecommands.annotations.command.Command;
|
import dev.rollczi.litecommands.annotations.command.Command;
|
||||||
import dev.rollczi.litecommands.annotations.context.Context;
|
import dev.rollczi.litecommands.annotations.context.Context;
|
||||||
|
@ -12,11 +16,8 @@ import dev.rollczi.litecommands.annotations.execute.Execute;
|
||||||
import dev.rollczi.litecommands.annotations.permission.Permission;
|
import dev.rollczi.litecommands.annotations.permission.Permission;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import xyz.twovb.sgm.SGM;
|
import xyz.twovb.sgm.SGM;
|
||||||
import xyz.twovb.sgm.games.Minigame;
|
import xyz.twovb.sgm.games.Minigame;
|
||||||
import xyz.twovb.sgm.games.impl.TestGame;
|
|
||||||
import xyz.twovb.sgm.games.impl.capturethebrick.CTB;
|
|
||||||
import xyz.twovb.sgm.guis.InitGameGui;
|
import xyz.twovb.sgm.guis.InitGameGui;
|
||||||
import xyz.twovb.toolbox.api.CustomPlayer;
|
import xyz.twovb.toolbox.api.CustomPlayer;
|
||||||
import xyz.twovb.toolbox.utils.ChatUtils;
|
import xyz.twovb.toolbox.utils.ChatUtils;
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package xyz.twovb.sgm.games;
|
package xyz.twovb.sgm.games;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 5/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by 2vb - 4/6/2024
|
* Created by 2vb - 4/6/2024
|
||||||
*/
|
*/
|
||||||
|
@ -11,8 +16,8 @@ import xyz.twovb.sgm.SGM;
|
||||||
import xyz.twovb.toolbox.managers.PlaceholderManager;
|
import xyz.twovb.toolbox.managers.PlaceholderManager;
|
||||||
import xyz.twovb.toolbox.utils.ChatUtils;
|
import xyz.twovb.toolbox.utils.ChatUtils;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -25,19 +30,12 @@ public class GameManager {
|
||||||
@Getter
|
@Getter
|
||||||
private final ArrayList<String> registeredGames = new ArrayList<String>();
|
private final ArrayList<String> registeredGames = new ArrayList<String>();
|
||||||
|
|
||||||
|
private final Map<String, Class<? extends Minigame>> gameMappings = new HashMap<>();
|
||||||
|
|
||||||
public static Minigame findGame(UUID gameId) {
|
public static Minigame findGame(UUID gameId) {
|
||||||
return activeGames.get(gameId);
|
return activeGames.get(gameId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Minigame findGame(Player player) {
|
|
||||||
for (Minigame game : activeGames.values()) {
|
|
||||||
if (game.getPlayers().contains(player)) {
|
|
||||||
return game;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isInGame(Player player) {
|
public static boolean isInGame(Player player) {
|
||||||
for (Minigame game : activeGames.values()) {
|
for (Minigame game : activeGames.values()) {
|
||||||
if (game.getPlayers().contains(player)) {
|
if (game.getPlayers().contains(player)) {
|
||||||
|
@ -47,16 +45,37 @@ public class GameManager {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initGame(Minigame game, CommandSender owner, String level) {
|
public Minigame findGame(Player player) {
|
||||||
|
for (Minigame game : activeGames.values()) {
|
||||||
|
if (game.getPlayers().contains(player)) {
|
||||||
|
return game;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initGame(String internalName, CommandSender owner, String level) {
|
||||||
try {
|
try {
|
||||||
|
Minigame game = createGameInstance(internalName);
|
||||||
game.init(owner, level);
|
game.init(owner, level);
|
||||||
} catch (IOException e) {
|
activeGames.put(game.getGameId(), game);
|
||||||
|
} catch (InstantiationException | IllegalAccessException | IOException | NoSuchMethodException |
|
||||||
|
InvocationTargetException e) {
|
||||||
SGM.getInstance().getCLogger().error(e.getMessage());
|
SGM.getInstance().getCLogger().error(e.getMessage());
|
||||||
owner.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.game.cant-start"), owner)));
|
owner.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.game.cant-start"), owner)));
|
||||||
}
|
}
|
||||||
activeGames.put(game.getGameId(), game);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public void initGame(Minigame game, CommandSender owner, String level) {
|
||||||
|
// try {
|
||||||
|
// game.init(owner, level);
|
||||||
|
// } catch (IOException e) {
|
||||||
|
// SGM.getInstance().getCLogger().error(e.getMessage());
|
||||||
|
// owner.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.game.cant-start"), owner)));
|
||||||
|
// }
|
||||||
|
// activeGames.put(game.getGameId(), game);
|
||||||
|
// }
|
||||||
|
|
||||||
public void addPlayerToGame(Player player, UUID gameId) {
|
public void addPlayerToGame(Player player, UUID gameId) {
|
||||||
Minigame game = findGame(gameId);
|
Minigame game = findGame(gameId);
|
||||||
if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) {
|
if (game.getState() == Minigame.GameState.READY && !game.getPlayers().contains(player) && !isInGame(player)) {
|
||||||
|
@ -69,17 +88,28 @@ public class GameManager {
|
||||||
game.removePlayer(player);
|
game.removePlayer(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Minigame createGameInstance(String internalName) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
|
||||||
|
Class<? extends Minigame> gameClass = gameMappings.get(internalName);
|
||||||
|
if (gameClass != null) {
|
||||||
|
return gameClass.getDeclaredConstructor().newInstance();
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("No game registered with internal name: " + internalName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void registerGame(Minigame game) {
|
public void registerGame(Minigame game) {
|
||||||
String intName = game.getName().toLowerCase();
|
String intName = game.getName().toLowerCase();
|
||||||
try {
|
try {
|
||||||
SGM.getInstance().getConfigManager().loadConfig("games/" + intName + "/options.yml");
|
SGM.getInstance().getConfigManager().loadConfig("games/" + intName + "/options.yml");
|
||||||
registeredGames.add(intName);
|
registeredGames.add(intName);
|
||||||
|
gameMappings.put(intName, game.getClass());
|
||||||
SGM.getInstance().getCLogger().log("Registered game " + game.getName());
|
SGM.getInstance().getCLogger().log("Registered game " + game.getName());
|
||||||
} catch(IllegalArgumentException error) {
|
} catch (IllegalArgumentException error) {
|
||||||
String errMsg = error.getMessage();
|
String errMsg = error.getMessage();
|
||||||
if (errMsg.contains("The embedded resource") && errMsg.contains("cannot be found")) {
|
if (errMsg.contains("The embedded resource") && errMsg.contains("cannot be found")) {
|
||||||
SGM.getInstance().getCLogger().log(game.getName() + "'s game options are nowhere to be found. Please ensure this is intended behaviour.");
|
SGM.getInstance().getCLogger().log(game.getName() + "'s game options are nowhere to be found. Please ensure this is intended behaviour.");
|
||||||
registeredGames.add(intName);
|
registeredGames.add(intName);
|
||||||
|
gameMappings.put(intName, game.getClass());
|
||||||
} else {
|
} else {
|
||||||
SGM.getInstance().getCLogger().error("Failed to register game " + game.getName() + ". Reason: " + errMsg);
|
SGM.getInstance().getCLogger().error("Failed to register game " + game.getName() + ". Reason: " + errMsg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package xyz.twovb.sgm.games.impl.capturethebrick;
|
package xyz.twovb.sgm.games.impl.capturethebrick;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 5/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by 2vb - 3/7/2024
|
* Created by 2vb - 3/7/2024
|
||||||
*/
|
*/
|
||||||
|
@ -152,7 +157,7 @@ public class CTB implements Minigame {
|
||||||
for (Player player : players) {
|
for (Player player : players) {
|
||||||
player.teleport(this.spawnLoc);
|
player.teleport(this.spawnLoc);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < bricks; i++) {
|
for (int i = 0; i <= bricks; i++) {
|
||||||
for (Location brickLoc : redBrickSpawns) {
|
for (Location brickLoc : redBrickSpawns) {
|
||||||
placeBrick(brickLoc, "red");
|
placeBrick(brickLoc, "red");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package xyz.twovb.sgm.guis;
|
package xyz.twovb.sgm.guis;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 5/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||||
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
|
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.OutlinePane;
|
import com.github.stefvanschie.inventoryframework.pane.OutlinePane;
|
||||||
|
@ -49,8 +54,6 @@ public class MapGui {
|
||||||
|
|
||||||
public void globalClick(InventoryClickEvent event) {
|
public void globalClick(InventoryClickEvent event) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
// event.getWhoClicked().sendMessage(this.game);
|
|
||||||
// gui.getInventory().clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMaps() {
|
public void addMaps() {
|
||||||
|
@ -67,7 +70,9 @@ public class MapGui {
|
||||||
// Handle click event if needed
|
// Handle click event if needed
|
||||||
// Example: navigate to the map or show map details
|
// Example: navigate to the map or show map details
|
||||||
Player player = (Player) event.getWhoClicked();
|
Player player = (Player) event.getWhoClicked();
|
||||||
player.sendMessage("Clicked on map: " + mapName);
|
SGM.getInstance().getGameManager().initGame(this.game, player, mapName);
|
||||||
|
player.closeInventory();
|
||||||
|
// player.sendMessage("Clicked on map: " + mapName);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package xyz.twovb.sgm.levels;
|
package xyz.twovb.sgm.levels;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 5/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Created by 2vb - 4/6/2024
|
* Created by 2vb - 4/6/2024
|
||||||
*/
|
*/
|
||||||
|
@ -177,8 +182,6 @@ public class LevelManager {
|
||||||
block.setType(Material.STONE);
|
block.setType(Material.STONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Block block = location.subtract(0, 2, 0).getBlock();
|
|
||||||
// block.setType(Material.STONE);
|
|
||||||
world.setSpawnLocation(location);
|
world.setSpawnLocation(location);
|
||||||
world.setSpawnFlags(false, false);
|
world.setSpawnFlags(false, false);
|
||||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user