fixed various bugs, added flight speed changer
This commit is contained in:
parent
139ff42250
commit
969178366e
@ -1,6 +1,5 @@
|
|||||||
package eu.mhsl.minecraft.WorldMuseum;
|
package eu.mhsl.minecraft.WorldMuseum;
|
||||||
|
|
||||||
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.WorldSelector;
|
|
||||||
import eu.mhsl.minecraft.WorldMuseum.listener.ChatListener;
|
import eu.mhsl.minecraft.WorldMuseum.listener.ChatListener;
|
||||||
import eu.mhsl.minecraft.WorldMuseum.listener.PlayerListener;
|
import eu.mhsl.minecraft.WorldMuseum.listener.PlayerListener;
|
||||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
||||||
@ -20,14 +19,12 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
public class Main extends JavaPlugin {
|
public class Main extends JavaPlugin {
|
||||||
private static Main instance;
|
private static Main instance;
|
||||||
private static Logger logger;
|
|
||||||
|
|
||||||
private final List<ViewableWorld> worlds = new ArrayList<>();
|
private final List<ViewableWorld> worlds = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
Main.instance = this;
|
Main.instance = this;
|
||||||
logger = logger();
|
|
||||||
this.saveDefaultConfig();
|
this.saveDefaultConfig();
|
||||||
|
|
||||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
@ -35,8 +32,7 @@ public class Main extends JavaPlugin {
|
|||||||
List<Listener> listeners = List.of(
|
List<Listener> listeners = List.of(
|
||||||
new PlayerListener(),
|
new PlayerListener(),
|
||||||
new ChatListener(),
|
new ChatListener(),
|
||||||
new ViewableWorldListener(),
|
new ViewableWorldListener()
|
||||||
new WorldSelector()
|
|
||||||
);
|
);
|
||||||
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this));
|
listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, this));
|
||||||
|
|
||||||
@ -60,11 +56,11 @@ public class Main extends JavaPlugin {
|
|||||||
//noinspection ResultOfMethodCallIgnored
|
//noinspection ResultOfMethodCallIgnored
|
||||||
worldFolder.mkdirs();
|
worldFolder.mkdirs();
|
||||||
Arrays.stream(Objects.requireNonNull(worldFolder.listFiles())).forEach(file -> {
|
Arrays.stream(Objects.requireNonNull(worldFolder.listFiles())).forEach(file -> {
|
||||||
logger.info("[Worldmuseum] Loading world " + file.getName());
|
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
|
getLogger().info("Loading world " + file.getName());
|
||||||
this.worlds.add(new ViewableWorld(file));
|
this.worlds.add(new ViewableWorld(file));
|
||||||
} else {
|
} else {
|
||||||
logger.info( "[Worldmuseum] " + file.getName() + " is not a directory and therefore not a valid world!");
|
getLogger().info( file.getName() + " is not a directory and therefore not a valid world!");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.worlds.forEach(ViewableWorld::loadWorld);
|
this.worlds.forEach(ViewableWorld::loadWorld);
|
||||||
@ -79,7 +75,6 @@ public class Main extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Logger logger() {
|
public static Logger logger() {
|
||||||
if(logger == null) throw new RuntimeException("Plugin not initialized yet");
|
return Main.instance().getLogger();
|
||||||
return logger;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,35 +1,39 @@
|
|||||||
package eu.mhsl.minecraft.WorldMuseum.items;
|
package eu.mhsl.minecraft.WorldMuseum.items;
|
||||||
|
|
||||||
|
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||||
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.*;
|
import eu.mhsl.minecraft.WorldMuseum.items.actionItems.*;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ActionItemManager {
|
public class ActionItemManager {
|
||||||
private static ActionItemManager INSTANCE;
|
private static ActionItemManager instance;
|
||||||
private final List<IActionItem> actionObjects = new ArrayList<>();
|
private final List<IActionItem> actionObjects = new ArrayList<>();
|
||||||
|
|
||||||
public ActionItemManager() {
|
private ActionItemManager() {
|
||||||
initItems();
|
List<IActionItem> actionItems = List.of(
|
||||||
}
|
new WorldSelector(),
|
||||||
|
new LeaveItem(),
|
||||||
|
new FlightChanger(),
|
||||||
|
new SpawnTeleport(),
|
||||||
|
new SpeedChanger()
|
||||||
|
);
|
||||||
|
|
||||||
private void initItems() {
|
actionItems.forEach(actionItem -> Bukkit.getPluginManager().registerEvents(actionItem, Main.instance()));
|
||||||
actionObjects.add(new WorldSelector());
|
actionObjects.addAll(actionItems); }
|
||||||
actionObjects.add(new LeaveItem());
|
|
||||||
actionObjects.add(new FlightChanger());
|
|
||||||
actionObjects.add(new SpawnTeleport());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ActionItemManager getInstance() {
|
public static ActionItemManager getInstance() {
|
||||||
if (INSTANCE == null) INSTANCE = new ActionItemManager();
|
if (instance == null) instance = new ActionItemManager();
|
||||||
return INSTANCE;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void givePlayerItems(Player p) {
|
public void givePlayerItems(Player p) {
|
||||||
actionObjects.forEach(actionObject -> p.getInventory().setItem(actionObject.getItemLocation(), actionObject.getItem()));
|
actionObjects.forEach(actionObject -> p.getInventory().setItem(actionObject.getItemLocation(), actionObject.getItem()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IActionItem> getActionObjects() {
|
public List<IActionItem> getActionItems() {
|
||||||
return actionObjects;
|
return actionObjects;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,14 @@ public class FlightChanger implements IActionItem{
|
|||||||
private ItemStack generateItem() {
|
private ItemStack generateItem() {
|
||||||
ItemStack item = new ItemStack(Material.ELYTRA);
|
ItemStack item = new ItemStack(Material.ELYTRA);
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.displayName(Component.text("Enable/Disable Flight "));
|
meta.displayName(Component.text("Aktiviere/Deaktiviere Fliegen"));
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void action(@NotNull Player player) {
|
public void action(@NotNull Player player) {
|
||||||
player.setAllowFlight(!player.getAllowFlight());
|
player.setFlying(!player.isFlying());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -30,7 +30,6 @@ public class FlightChanger implements IActionItem{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemLocation() {
|
public int getItemLocation() {
|
||||||
// Item will be placed in the second hotbar slot
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public interface IActionItem {
|
public interface IActionItem extends Listener {
|
||||||
void action(@NotNull Player player);
|
void action(@NotNull Player player);
|
||||||
ItemStack getItem();
|
ItemStack getItem();
|
||||||
int getItemLocation();
|
int getItemLocation();
|
||||||
|
@ -6,14 +6,13 @@ import net.kyori.adventure.text.Component;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class LeaveItem implements Listener, IActionItem {
|
public class LeaveItem implements IActionItem {
|
||||||
private final ItemStack item = generateItem();
|
private final ItemStack item = generateItem();
|
||||||
|
|
||||||
private ItemStack generateItem() {
|
private ItemStack generateItem() {
|
||||||
@ -48,7 +47,6 @@ public class LeaveItem implements Listener, IActionItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemLocation() {
|
public int getItemLocation() {
|
||||||
//Item will be placed in the last hotbar slot
|
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -13,7 +14,7 @@ public class SpawnTeleport implements IActionItem {
|
|||||||
private ItemStack generateItem() {
|
private ItemStack generateItem() {
|
||||||
ItemStack item = new ItemStack(Material.ENDER_PEARL);
|
ItemStack item = new ItemStack(Material.ENDER_PEARL);
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
meta.displayName(Component.text("Teleport back to spawn"));
|
meta.displayName(Component.text("Zum Spawn", NamedTextColor.GOLD));
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@ -30,7 +31,6 @@ public class SpawnTeleport implements IActionItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemLocation() {
|
public int getItemLocation() {
|
||||||
// Item will be placed in the second last hotbar slot
|
|
||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
public class SpeedChanger implements IActionItem {
|
||||||
|
List<Float> flySpeeds = List.of(0.2f, 0.4f, 0.6f, 0.8f);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(@NotNull Player player) {
|
||||||
|
IntStream.range(0, flySpeeds.size())
|
||||||
|
.filter(i -> flySpeeds.get(i).equals(player.getFlySpeed()))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresentOrElse(
|
||||||
|
newFlyMode -> setFlySpeed(player, (newFlyMode + 1) % flySpeeds.size()),
|
||||||
|
() -> setFlySpeed(player, 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFlySpeed(Player player, int mode) {
|
||||||
|
player.setFlySpeed(flySpeeds.get(mode));
|
||||||
|
player.sendActionBar(Component.text(String.format("Fluggeschwindigkeit: %s", mode), NamedTextColor.GOLD));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItem() {
|
||||||
|
ItemStack item = new ItemStack(Material.FEATHER);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.displayName(Component.text("Fluggeschwindigkeit"));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemLocation() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
@ -3,11 +3,11 @@ package eu.mhsl.minecraft.WorldMuseum.items.actionItems;
|
|||||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||||
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -16,18 +16,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class WorldSelector implements Listener, IActionItem {
|
public class WorldSelector implements IActionItem {
|
||||||
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() {
|
private Inventory generateWorldSelectorInventory() {
|
||||||
List<ViewableWorld> worlds = Main.instance().getWorlds();
|
List<ViewableWorld> worlds = Main.instance().getWorlds();
|
||||||
|
|
||||||
@ -57,11 +46,13 @@ public class WorldSelector implements Listener, IActionItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void action(@NotNull Player player) {
|
public void action(@NotNull Player player) {
|
||||||
player.openInventory(INVENTORY);
|
player.openInventory(generateWorldSelectorInventory());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInteract(InventoryClickEvent event) {
|
public void onInteract(InventoryClickEvent event) {
|
||||||
|
List<ItemStack> worldItems = Main.instance().getWorlds().stream().map(ViewableWorld::getItem).toList();
|
||||||
|
if(!worldItems.contains(event.getCurrentItem())) return;
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
Main.instance().getWorlds().stream()
|
Main.instance().getWorlds().stream()
|
||||||
@ -72,13 +63,16 @@ public class WorldSelector implements Listener, IActionItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getItem() {
|
public ItemStack getItem() {
|
||||||
return ITEM;
|
ItemStack item = new ItemStack(Material.GRASS_BLOCK);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.displayName(Component.text("Weltenliste", NamedTextColor.GOLD));
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemLocation() {
|
public int getItemLocation() {
|
||||||
int itemLocation = 0; // Item will be placed into the first hotbar slot
|
return 0;
|
||||||
return itemLocation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,19 @@ package eu.mhsl.minecraft.WorldMuseum.listener;
|
|||||||
|
|
||||||
import eu.mhsl.minecraft.WorldMuseum.Main;
|
import eu.mhsl.minecraft.WorldMuseum.Main;
|
||||||
import eu.mhsl.minecraft.WorldMuseum.items.ActionItemManager;
|
import eu.mhsl.minecraft.WorldMuseum.items.ActionItemManager;
|
||||||
|
import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld;
|
||||||
import net.kyori.adventure.util.Ticks;
|
import net.kyori.adventure.util.Ticks;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
@ -19,19 +22,30 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PlayerListener implements Listener {
|
public class PlayerListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onJoin(PlayerJoinEvent event) {
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
player.setAllowFlight(true);
|
player.setAllowFlight(true);
|
||||||
player.setInvulnerable(true);
|
player.setInvulnerable(true);
|
||||||
Main.instance().getWorlds().forEach(world -> {
|
player.setFoodLevel(20);
|
||||||
if (world.isDefaultWorld()) world.addViewer(event.getPlayer());
|
player.setHealth(20);
|
||||||
});
|
player.setAllowFlight(true);
|
||||||
|
|
||||||
|
Main.instance().getWorlds().stream()
|
||||||
|
.filter(ViewableWorld::isDefaultWorld)
|
||||||
|
.findFirst()
|
||||||
|
.orElseGet(() -> Main.instance().getWorlds().stream().findFirst().orElseThrow())
|
||||||
|
.addViewer(player);
|
||||||
|
|
||||||
event.getPlayer().addPotionEffect(
|
event.getPlayer().addPotionEffect(
|
||||||
new PotionEffect(PotionEffectType.HASTE, PotionEffect.INFINITE_DURATION, 15, false, false, false)
|
new PotionEffect(PotionEffectType.HASTE, PotionEffect.INFINITE_DURATION, 15, false, false, false)
|
||||||
);
|
);
|
||||||
|
|
||||||
ActionItemManager.getInstance().givePlayerItems(event.getPlayer());
|
ActionItemManager.getInstance().givePlayerItems(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,9 +53,13 @@ public class PlayerListener implements Listener {
|
|||||||
public void onBreak(BlockBreakEvent event) {
|
public void onBreak(BlockBreakEvent event) {
|
||||||
event.setDropItems(false);
|
event.setDropItems(false);
|
||||||
Material material = event.getBlock().getType();
|
Material material = event.getBlock().getType();
|
||||||
|
BlockData blockData = event.getBlock().getBlockData();
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(
|
Bukkit.getScheduler().scheduleSyncDelayedTask(
|
||||||
Main.instance(),
|
Main.instance(),
|
||||||
() -> event.getBlock().getWorld().setType(event.getBlock().getLocation(), material),
|
() -> {
|
||||||
|
event.getBlock().setType(material);
|
||||||
|
event.getBlock().setBlockData(blockData);
|
||||||
|
},
|
||||||
Ticks.TICKS_PER_SECOND * 5
|
Ticks.TICKS_PER_SECOND * 5
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -60,14 +78,21 @@ public class PlayerListener implements Listener {
|
|||||||
public void onInteract(PlayerInteractEvent event) {
|
public void onInteract(PlayerInteractEvent event) {
|
||||||
ActionItemManager actionItemManager = ActionItemManager.getInstance();
|
ActionItemManager actionItemManager = ActionItemManager.getInstance();
|
||||||
|
|
||||||
event.setCancelled(true);
|
if(event.getItem() == null) return;
|
||||||
|
if(!List.of(Action.RIGHT_CLICK_BLOCK, Action.RIGHT_CLICK_AIR).contains(event.getAction())) return;
|
||||||
|
|
||||||
Player p = event.getPlayer();
|
Player p = event.getPlayer();
|
||||||
Action a = event.getAction();
|
|
||||||
ItemStack item = event.getItem();
|
ItemStack item = event.getItem();
|
||||||
if ((a != Action.RIGHT_CLICK_AIR) || (event.getItem() == null)) return;
|
|
||||||
actionItemManager.getActionObjects().forEach(object -> {
|
actionItemManager.getActionItems().forEach(actionItem -> {
|
||||||
assert item != null;
|
if (!item.equals(actionItem.getItem())) return;
|
||||||
if (item.equals(object.getItem())) object.action(p);
|
event.setCancelled(true);
|
||||||
|
actionItem.action(p);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onItemMove(InventoryClickEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,15 +36,15 @@ public class ViewableWorld {
|
|||||||
this.icon = Material.valueOf(config.getString("icon"));
|
this.icon = Material.valueOf(config.getString("icon"));
|
||||||
this.isDefaultWorld = config.getBoolean("isDefaultWorld");
|
this.isDefaultWorld = config.getBoolean("isDefaultWorld");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("[WorldMuseum] Could not find config.yml");
|
System.out.println("Could not find config.yml");
|
||||||
try {
|
try {
|
||||||
//noinspection ResultOfMethodCallIgnored
|
//noinspection ResultOfMethodCallIgnored
|
||||||
configFile.createNewFile();
|
configFile.createNewFile();
|
||||||
FileConfiguration data = YamlConfiguration.loadConfiguration(configFile);
|
FileConfiguration data = YamlConfiguration.loadConfiguration(configFile);
|
||||||
data.set("enabled", false);
|
data.set("enabled", this.enabled);
|
||||||
data.set("name", this.name);
|
data.set("name", this.name);
|
||||||
data.set("icon", this.icon.name());
|
data.set("icon", this.icon.name());
|
||||||
data.set("isDefaultWorld", false);
|
data.set("isDefaultWorld", this.isDefaultWorld);
|
||||||
data.save(configFile);
|
data.save(configFile);
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
package eu.mhsl.minecraft.WorldMuseum.viewableWorld;
|
package eu.mhsl.minecraft.WorldMuseum.viewableWorld;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.event.player.PlayerTeleportEndGatewayEvent;
|
||||||
import io.papermc.paper.event.entity.EntityMoveEvent;
|
import io.papermc.paper.event.entity.EntityMoveEvent;
|
||||||
|
import io.papermc.paper.event.player.PlayerOpenSignEvent;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockFromToEvent;
|
import org.bukkit.event.block.BlockFromToEvent;
|
||||||
import org.bukkit.event.block.BlockGrowEvent;
|
import org.bukkit.event.block.BlockGrowEvent;
|
||||||
import org.bukkit.event.block.BlockRedstoneEvent;
|
import org.bukkit.event.block.BlockRedstoneEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.*;
|
||||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerPortalEvent;
|
import org.bukkit.event.player.PlayerPortalEvent;
|
||||||
|
import org.bukkit.event.player.PlayerUnleashEntityEvent;
|
||||||
import org.bukkit.event.world.ChunkUnloadEvent;
|
import org.bukkit.event.world.ChunkUnloadEvent;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ViewableWorldListener implements Listener {
|
public class ViewableWorldListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void disableRedstone(BlockRedstoneEvent event) {
|
public void disableRedstone(BlockRedstoneEvent event) {
|
||||||
@ -44,4 +51,46 @@ public class ViewableWorldListener implements Listener {
|
|||||||
public void preventPortal(PlayerPortalEvent event) {
|
public void preventPortal(PlayerPortalEvent event) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void preventEntityPortal(EntityPortalEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noSleep(PlayerBedEnterEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noHunger(FoodLevelChangeEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noItemPickup(EntityPickupItemEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noTnt(ExplosionPrimeEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noCreeper(EntityExplodeEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noSignEdit(PlayerOpenSignEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noUnleash(PlayerUnleashEntityEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noEndGateway(PlayerTeleportEndGatewayEvent event) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
@EventHandler
|
||||||
|
public void noInteract(PlayerInteractEvent event) {
|
||||||
|
if(event.getClickedBlock() == null) return;
|
||||||
|
if(!List.of(Material.CHEST, Material.SHULKER_BOX).contains(event.getClickedBlock().getType())) return;
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user