add flightChanger and spawn teleporter

This commit is contained in:
Martin Olischläger 2024-09-21 14:54:30 +02:00
parent eaccdec4a8
commit c95bf95375
6 changed files with 83 additions and 48 deletions

View File

@ -32,7 +32,6 @@ public class Main extends JavaPlugin {
List<Listener> listeners = List.of( List<Listener> listeners = List.of(
new PlayerListener(), new PlayerListener(),
new ChatListener(), new ChatListener(),
// new WorldSelectListener(),
new ViewableWorldListener(), new ViewableWorldListener(),
new WorldSelector() new WorldSelector()
); );
@ -45,6 +44,10 @@ public class Main extends JavaPlugin {
public void onDisable() { public void onDisable() {
this.worlds.forEach(ViewableWorld::unloadWorld); this.worlds.forEach(ViewableWorld::unloadWorld);
} }
// @Override
// public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
// return new CustomChunkGenerator();
// }
private void loadWorlds() { private void loadWorlds() {
File worldFolder = new File(getDataFolder().getAbsolutePath() + "/worlds"); File worldFolder = new File(getDataFolder().getAbsolutePath() + "/worlds");

View File

@ -1,8 +1,6 @@
package eu.mhsl.minecraft.WorldMuseum.items; package eu.mhsl.minecraft.WorldMuseum.items;
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.IActionItem; import eu.mhsl.minecraft.WorldMuseum.items.actionItems.*;
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.LeaveItem;
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.WorldSelector;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList; import java.util.ArrayList;
@ -19,6 +17,8 @@ public class ActionItemManager {
private void initItems() { private void initItems() {
actionObjects.add(new WorldSelector()); actionObjects.add(new WorldSelector());
actionObjects.add(new LeaveItem()); actionObjects.add(new LeaveItem());
actionObjects.add(new GamemodeChanger());
actionObjects.add(new SpawnTeleport());
} }
public static ActionItemManager getInstance() { public static ActionItemManager getInstance() {

View File

@ -0,0 +1,36 @@
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
public class GamemodeChanger implements IActionItem{
private final ItemStack item = generateItem();
private ItemStack generateItem() {
ItemStack item = new ItemStack(Material.ELYTRA);
ItemMeta meta = item.getItemMeta();
meta.displayName(Component.text("Enable/Disable Flight "));
item.setItemMeta(meta);
return item;
}
@Override
public void action(@NotNull Player player) {
player.setAllowFlight(!player.getAllowFlight());
}
@Override
public ItemStack getItem() {
return item;
}
@Override
public int getItemLocation() {
// Item will be placed in the second hotbar slot
return 1;
}
}

View File

@ -30,7 +30,8 @@ public class LeaveItem implements Listener, IActionItem {
Objects.requireNonNull(bungeeSettings); Objects.requireNonNull(bungeeSettings);
if(!(bungeeSettings.getBoolean("enabled", false))) { if(!(bungeeSettings.getBoolean("enabled", false))) {
player.sendMessage(Component.text("Bungeecord is not enabled. You can't be transpered ")); player.sendMessage(Component.text("Bungeecord is not enabled. You can't be transferred."));
return;
} }
if(!bungeeSettings.getBoolean("returnOnSelectExit")) return; if(!bungeeSettings.getBoolean("returnOnSelectExit")) return;
sendPlayerToExit(player); sendPlayerToExit(player);
@ -47,7 +48,7 @@ public class LeaveItem implements Listener, IActionItem {
@Override @Override
public int getItemLocation() { public int getItemLocation() {
int itemLocation = 8; //Item will be placed in the last hotbar slot //Item will be placed in the last hotbar slot
return itemLocation; return 8;
} }
} }

View File

@ -0,0 +1,36 @@
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
public class SpawnTeleport implements IActionItem {
private final ItemStack item = generateItem();
private ItemStack generateItem() {
ItemStack item = new ItemStack(Material.ENDER_PEARL);
ItemMeta meta = item.getItemMeta();
meta.displayName(Component.text("Teleport back to spawn"));
item.setItemMeta(meta);
return item;
}
@Override
public void action(@NotNull Player player) {
player.teleport(player.getWorld().getSpawnLocation());
}
@Override
public ItemStack getItem() {
return item;
}
@Override
public int getItemLocation() {
// Item will be placed in the second last hotbar slot
return 7;
}
}

View File

@ -1,41 +0,0 @@
package eu.mhsl.minecraft.WorldMuseum.items.worldSelector;
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.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
public class WorldSelectInventory {
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 static Inventory generateInventory() {
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;
}
}