added WorldSelectItem to players inventory
This commit is contained in:
parent
7091db6484
commit
d405c3f233
@ -4,7 +4,6 @@ import eu.mhsl.minecraft.WorldMuseum.listener.ChatListener;
|
||||
import eu.mhsl.minecraft.WorldMuseum.listener.PlayerListener;
|
||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorldListener;
|
||||
import eu.mhsl.minecraft.WorldMuseum.worldSelector.WorldSelectListener;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -32,7 +31,7 @@ public class Main extends JavaPlugin {
|
||||
List<Listener> listeners = List.of(
|
||||
new PlayerListener(),
|
||||
new ChatListener(),
|
||||
new WorldSelectListener(),
|
||||
// new WorldSelectListener(),
|
||||
new ViewableWorldListener()
|
||||
);
|
||||
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this));
|
||||
|
@ -0,0 +1,33 @@
|
||||
package eu.mhsl.minecraft.WorldMuseum.items;
|
||||
|
||||
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.WorldSelector;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class ActionItemManager {
|
||||
private static ActionItemManager INSTANCE;
|
||||
private WorldSelector worldSelector;
|
||||
|
||||
|
||||
public ActionItemManager() {
|
||||
initItems();
|
||||
|
||||
}
|
||||
|
||||
private void initItems() {
|
||||
worldSelector = new WorldSelector();
|
||||
}
|
||||
|
||||
|
||||
public static ActionItemManager getInstance() {
|
||||
if (INSTANCE == null) INSTANCE = new ActionItemManager();
|
||||
return INSTANCE;
|
||||
}
|
||||
public void givePlayerItems(Player p) {
|
||||
p.getInventory().setItem(0, worldSelector.getITEM());
|
||||
}
|
||||
|
||||
|
||||
public WorldSelector getWorldSelector() {
|
||||
return worldSelector;
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
||||
|
||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WorldSelector {
|
||||
private final ItemStack ITEM = generateWorldSelectorItem();
|
||||
private final Inventory INVENTORY = generateWorldSelectorInventory();
|
||||
|
||||
private ItemStack generateWorldSelectorItem() {
|
||||
ItemStack item = new ItemStack(Material.GRASS_BLOCK);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.displayName(Component.text("Worldselector"));
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
private Inventory generateWorldSelectorInventory() {
|
||||
List<ViewableWorld> worlds = Main.instance().getWorlds();
|
||||
|
||||
int itemCount = worlds.size() + 1;
|
||||
int inventoryRows = Math.max(itemCount / 9, 1);
|
||||
int inventorySize = inventoryRows * 9;
|
||||
Inventory inventory = Bukkit.createInventory(null, inventorySize, Component.text("Weltenmuseum"));
|
||||
|
||||
worlds.stream()
|
||||
.filter(ViewableWorld::isEnabled)
|
||||
.forEach(viewableWorld -> inventory.addItem(viewableWorld.getItem()));
|
||||
|
||||
boolean canExit = Main.instance().getConfig().getBoolean("bungee.enabled");
|
||||
if(canExit) inventory.setItem(inventorySize - 1, exitItem());
|
||||
|
||||
return inventory;
|
||||
}
|
||||
|
||||
public static ItemStack exitItem() {
|
||||
ItemStack stack = ItemStack.of(Material.OAK_DOOR);
|
||||
ItemMeta meta = stack.getItemMeta();
|
||||
meta.displayName(Component.text("Zurück zum Server"));
|
||||
meta.setEnchantmentGlintOverride(true);
|
||||
stack.setItemMeta(meta);
|
||||
return stack;
|
||||
}
|
||||
|
||||
public ItemStack getITEM() {
|
||||
return ITEM;
|
||||
}
|
||||
|
||||
public void action(@NotNull Player player) {
|
||||
player.openInventory(INVENTORY);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.minecraft.WorldMuseum.worldSelector;
|
||||
package eu.mhsl.minecraft.WorldMuseum.items.worldSelector;
|
||||
|
||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.minecraft.WorldMuseum.worldSelector;
|
||||
package eu.mhsl.minecraft.WorldMuseum.items.worldSelector;
|
||||
|
||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||
import eu.mhsl.minecraft.WorldMuseum.util.BungeeCord;
|
@ -1,14 +1,19 @@
|
||||
package eu.mhsl.minecraft.WorldMuseum.listener;
|
||||
|
||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||
import eu.mhsl.minecraft.WorldMuseum.items.ActionItemManager;
|
||||
import net.kyori.adventure.util.Ticks;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
@ -25,10 +30,12 @@ public class PlayerListener implements Listener {
|
||||
event.getPlayer().addPotionEffect(
|
||||
new PotionEffect(PotionEffectType.HASTE, PotionEffect.INFINITE_DURATION, 15, false, false, false)
|
||||
);
|
||||
ActionItemManager.getInstance().givePlayerItems(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBreak(BlockBreakEvent event) {
|
||||
event.setDropItems(false);
|
||||
Material material = event.getBlock().getType();
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(
|
||||
Main.instance(),
|
||||
@ -40,4 +47,20 @@ public class PlayerListener implements Listener {
|
||||
public void onPlace(BlockPlaceEvent event) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDrop(PlayerDropItemEvent event) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInteract(PlayerInteractEvent event) {
|
||||
ActionItemManager actionItems = ActionItemManager.getInstance();
|
||||
|
||||
event.setCancelled(true);
|
||||
Player p = event.getPlayer();
|
||||
Action a = event.getAction();
|
||||
if ((a != Action.RIGHT_CLICK_AIR) || (event.getItem() == null)) return;
|
||||
if (event.getItem().equals(actionItems.getWorldSelector().getITEM())) actionItems.getWorldSelector().action(p);
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,6 @@ public class ViewableWorld {
|
||||
this.world = worldCreator.createWorld();
|
||||
Objects.requireNonNull(this.world);
|
||||
this.world.setAutoSave(false);
|
||||
// Bukkit.unloadWorld(this.world, false);
|
||||
}
|
||||
|
||||
public void unloadWorld() {
|
||||
|
@ -7,6 +7,7 @@ import org.bukkit.event.block.BlockFromToEvent;
|
||||
import org.bukkit.event.block.BlockGrowEvent;
|
||||
import org.bukkit.event.block.BlockRedstoneEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
import org.bukkit.event.world.ChunkUnloadEvent;
|
||||
|
||||
public class ViewableWorldListener implements Listener {
|
||||
@EventHandler
|
||||
@ -29,4 +30,8 @@ public class ViewableWorldListener implements Listener {
|
||||
public void preventGrowth(BlockGrowEvent event) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onChunkUnload(ChunkUnloadEvent event) {
|
||||
event.setSaveChunk(false);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user