diff --git a/src/main/java/fr/openmc/core/OMCPlugin.java b/src/main/java/fr/openmc/core/OMCPlugin.java index 851264b9f..637152d79 100644 --- a/src/main/java/fr/openmc/core/OMCPlugin.java +++ b/src/main/java/fr/openmc/core/OMCPlugin.java @@ -151,12 +151,12 @@ public void onEnable() { public void loadWithItemsAdder() { CustomItemRegistry.init(); CustomUsableItemRegistry.init(); - MilestonesManager.init(); QuestsManager.init(); CityManager.init(); ContestManager.init(); DreamManager.init(); MultiBlockManager.init(); + MilestonesManager.init(); if (WorldGuardHook.isHasWorldGuard()) { ParticleUtils.spawnParticlesInRegion("spawn", Bukkit.getWorld("world"), Particle.CHERRY_LEAVES, 50, 70, 130); ParticleUtils.spawnContestParticlesInRegion("spawn", Bukkit.getWorld("world"), 10, 70, 135); diff --git a/src/main/java/fr/openmc/core/features/city/sub/milestone/commands/CityMilestoneCommands.java b/src/main/java/fr/openmc/core/features/city/sub/milestone/commands/CityMilestoneCommands.java index a7cf8922a..8adff3ed4 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/milestone/commands/CityMilestoneCommands.java +++ b/src/main/java/fr/openmc/core/features/city/sub/milestone/commands/CityMilestoneCommands.java @@ -11,7 +11,7 @@ public class CityMilestoneCommands { @Command({"city milestone", "ville milestone"}) @CommandPermission("omc.commands.city.milestone") - @Description("Ouvre le menu des maires") + @Description("Ouvre le menu du milestone de ville") void milestone(Player sender) { City playerCity = CityManager.getPlayerCity(sender.getUniqueId()); diff --git a/src/main/java/fr/openmc/core/features/dream/DreamManager.java b/src/main/java/fr/openmc/core/features/dream/DreamManager.java index edf3d859e..1969d47c3 100644 --- a/src/main/java/fr/openmc/core/features/dream/DreamManager.java +++ b/src/main/java/fr/openmc/core/features/dream/DreamManager.java @@ -26,6 +26,8 @@ import fr.openmc.core.features.dream.listeners.others.PlayerEatSomnifere; import fr.openmc.core.features.dream.listeners.others.SingularityCraftListener; import fr.openmc.core.features.dream.listeners.registry.DreamItemEquipListener; +import fr.openmc.core.features.dream.listeners.strctures.PlayerEnterStructureListener; +import fr.openmc.core.features.dream.listeners.strctures.PlayerExitStructureListener; import fr.openmc.core.features.dream.mecanism.cloudfishing.CloudFishingManager; import fr.openmc.core.features.dream.mecanism.cold.ColdManager; import fr.openmc.core.features.dream.mecanism.metaldetector.MetalDetectorManager; @@ -49,6 +51,8 @@ import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import java.util.UUID; public class DreamManager { @@ -59,6 +63,7 @@ public class DreamManager { private static final HashMap dreamPlayerData = new HashMap<>(); public static final HashMap cacheDreamPlayer = new HashMap<>(); + public static final Set dreamMilestoneDialogPlayer = new HashSet<>(); private static Dao dreamPlayerDao; private static Dao savePlayerDao; @@ -82,7 +87,9 @@ public static void init() { new CraftingConvertorListener(), new DreamItemEquipListener(), new DreamArmorImplListener(), - new SingularityCraftListener() + new SingularityCraftListener(), + new PlayerEnterStructureListener(), + new PlayerExitStructureListener() ); // ** MANAGERS ** @@ -318,6 +325,18 @@ public static void preloadSavePlayer(Player player, Location dreamLocation) thro ) ); } + + public static void addMilestoneDialogPlayer(Player player) { + dreamMilestoneDialogPlayer.add(player); + } + + public static void removeMilestoneDialogPlayer(Player player) { + dreamMilestoneDialogPlayer.remove(player); + } + + public static boolean isPlayerInMilestoneDialog(Player player) { + return dreamMilestoneDialogPlayer.contains(player); + } public static void setMaxTime(Player player, long maxTime) { DBDreamPlayer cache = DreamManager.getCacheDreamPlayer(player); diff --git a/src/main/java/fr/openmc/core/features/dream/DreamUtils.java b/src/main/java/fr/openmc/core/features/dream/DreamUtils.java index 6ffa02da0..973ec302c 100644 --- a/src/main/java/fr/openmc/core/features/dream/DreamUtils.java +++ b/src/main/java/fr/openmc/core/features/dream/DreamUtils.java @@ -7,6 +7,7 @@ import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; import net.kyori.adventure.text.Component; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -42,9 +43,9 @@ public static void addDreamTime(Player player, Long timeToAdd, boolean sendMessa public static void removeDreamTime(Player player, Long timeToRemove, boolean sendMessage) { DreamPlayer dreamPlayer = DreamManager.getDreamPlayer(player); if (dreamPlayer == null) return; + if (player.getGameMode().equals(GameMode.CREATIVE)) return; dreamPlayer.removeTime(timeToRemove); if (sendMessage) MessagesManager.sendMessage(player, Component.text("Vous avez perdu §a" + DateUtils.convertSecondToTime(timeToRemove) + " §fcar vous avez pris des dégats !"), Prefix.DREAM, MessageType.WARNING, false); - } } diff --git a/src/main/java/fr/openmc/core/features/dream/events/AltarBindEvent.java b/src/main/java/fr/openmc/core/features/dream/events/AltarBindEvent.java new file mode 100644 index 000000000..f095ebc44 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/AltarBindEvent.java @@ -0,0 +1,34 @@ +package fr.openmc.core.features.dream.events; + +import fr.openmc.core.features.dream.mecanism.altar.AltarRecipes; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import lombok.Getter; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +@Getter +public class AltarBindEvent extends PlayerEvent { + private static final HandlerList HANDLERS = new HandlerList(); + private final DreamItem item; + private final AltarRecipes recipe; + private final Location altarLocation; + + public AltarBindEvent(Player player, DreamItem item, AltarRecipes recipe, Location altarLocation) { + super(player); + this.item = item; + this.recipe = recipe; + this.altarLocation = altarLocation; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarCraftingEvent.java b/src/main/java/fr/openmc/core/features/dream/events/AltarCraftingEvent.java similarity index 58% rename from src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarCraftingEvent.java rename to src/main/java/fr/openmc/core/features/dream/events/AltarCraftingEvent.java index 5fd41cff2..a12ec00c2 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarCraftingEvent.java +++ b/src/main/java/fr/openmc/core/features/dream/events/AltarCraftingEvent.java @@ -1,23 +1,22 @@ -package fr.openmc.core.features.dream.mecanism.altar; +package fr.openmc.core.features.dream.events; +import fr.openmc.core.features.dream.mecanism.altar.AltarRecipes; import fr.openmc.core.features.dream.models.registry.items.DreamItem; import lombok.Getter; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; @Getter -public class AltarCraftingEvent extends Event { +public class AltarCraftingEvent extends PlayerEvent { private static final HandlerList HANDLERS = new HandlerList(); - private final Player player; + private final AltarRecipes recipe; private final DreamItem craftedItem; - - /** - * @param player The player whose dream time has ended - */ - public AltarCraftingEvent(Player player, DreamItem craftItem) { - this.player = player; + + public AltarCraftingEvent(Player player, AltarRecipes recipe, DreamItem craftItem) { + super(player); + this.recipe = recipe; this.craftedItem = craftItem; } diff --git a/src/main/java/fr/openmc/core/features/dream/events/DreamEndEvent.java b/src/main/java/fr/openmc/core/features/dream/events/DreamEndEvent.java index fbb21bb00..eee06e2c3 100644 --- a/src/main/java/fr/openmc/core/features/dream/events/DreamEndEvent.java +++ b/src/main/java/fr/openmc/core/features/dream/events/DreamEndEvent.java @@ -2,20 +2,19 @@ import lombok.Getter; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; @Getter -public class DreamEndEvent extends Event { +public class DreamEndEvent extends PlayerEvent { private static final HandlerList HANDLERS = new HandlerList(); - private final Player player; /** * @param player The player whose dream time has ended */ public DreamEndEvent(Player player) { - this.player = player; + super(player); } public static HandlerList getHandlerList() { diff --git a/src/main/java/fr/openmc/core/features/dream/events/DreamEnterEvent.java b/src/main/java/fr/openmc/core/features/dream/events/DreamEnterEvent.java new file mode 100644 index 000000000..d5eab36f3 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/DreamEnterEvent.java @@ -0,0 +1,28 @@ +package fr.openmc.core.features.dream.events; + +import lombok.Getter; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +@Getter +public class DreamEnterEvent extends PlayerEvent { + private static final HandlerList HANDLERS = new HandlerList(); + + /** + * @param player The player whose enter in his dream + */ + public DreamEnterEvent(Player player) { + super(player); + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/events/GlaciteTradeEvent.java b/src/main/java/fr/openmc/core/features/dream/events/GlaciteTradeEvent.java index bb3596c7f..f956075de 100644 --- a/src/main/java/fr/openmc/core/features/dream/events/GlaciteTradeEvent.java +++ b/src/main/java/fr/openmc/core/features/dream/events/GlaciteTradeEvent.java @@ -3,21 +3,20 @@ import fr.openmc.core.features.dream.mecanism.tradernpc.GlaciteTrade; import lombok.Getter; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; import org.jetbrains.annotations.NotNull; @Getter -public class GlaciteTradeEvent extends Event { +public class GlaciteTradeEvent extends PlayerEvent { private static final HandlerList HANDLERS = new HandlerList(); - private final Player player; private final GlaciteTrade trade; /** * @param player The player whose dream time has ended */ public GlaciteTradeEvent(Player player, GlaciteTrade trade) { - this.player = player; + super(player); this.trade = trade; } diff --git a/src/main/java/fr/openmc/core/features/dream/events/MetalDetectorLootEvent.java b/src/main/java/fr/openmc/core/features/dream/events/MetalDetectorLootEvent.java index f39f9a6e8..6ca9b70c2 100644 --- a/src/main/java/fr/openmc/core/features/dream/events/MetalDetectorLootEvent.java +++ b/src/main/java/fr/openmc/core/features/dream/events/MetalDetectorLootEvent.java @@ -2,17 +2,16 @@ import lombok.Getter; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import java.util.List; @Getter -public class MetalDetectorLootEvent extends Event { +public class MetalDetectorLootEvent extends PlayerEvent { private static final HandlerList HANDLERS = new HandlerList(); - private final Player player; private final List loot; /** @@ -20,7 +19,7 @@ public class MetalDetectorLootEvent extends Event { * @param loot The list of ItemStack representing the loot found. */ public MetalDetectorLootEvent(Player player, List loot) { - this.player = player; + super(player); this.loot = loot; } diff --git a/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterBiomeEvent.java b/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterBiomeEvent.java new file mode 100644 index 000000000..1009d67dd --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterBiomeEvent.java @@ -0,0 +1,32 @@ +package fr.openmc.core.features.dream.events; + +import lombok.Getter; +import org.bukkit.block.Biome; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +@Getter +public class PlayerEnterBiomeEvent extends PlayerEvent { + + private static final HandlerList HANDLERS = new HandlerList(); + private final Biome biome; + + /** + * @param player The player whose dream time has ended + */ + public PlayerEnterBiomeEvent(Player player, Biome biome) { + super(player); + this.biome = biome; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterStructureEvent.java b/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterStructureEvent.java new file mode 100644 index 000000000..dc291eaa7 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/PlayerEnterStructureEvent.java @@ -0,0 +1,32 @@ +package fr.openmc.core.features.dream.events; + +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import lombok.Getter; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +@Getter +public class PlayerEnterStructureEvent extends PlayerEvent { + private static final HandlerList HANDLERS = new HandlerList(); + private final DreamStructure structure; + + /** + * @param player The player who enter in the structure + * @param structure The structure where the player enters on + */ + public PlayerEnterStructureEvent(Player player, DreamStructure structure) { + super(player); + this.structure = structure; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/events/PlayerExitStructureEvent.java b/src/main/java/fr/openmc/core/features/dream/events/PlayerExitStructureEvent.java new file mode 100644 index 000000000..5392f6483 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/PlayerExitStructureEvent.java @@ -0,0 +1,32 @@ +package fr.openmc.core.features.dream.events; + +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import lombok.Getter; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.jetbrains.annotations.NotNull; + +@Getter +public class PlayerExitStructureEvent extends PlayerEvent { + private static final HandlerList HANDLERS = new HandlerList(); + private final DreamStructure structure; + + /** + * @param player The player who enter in the structure + * @param structure The structure where the player enters on + */ + public PlayerExitStructureEvent(Player player, DreamStructure structure) { + super(player); + this.structure = structure; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/dream/events/TakeFromSingularityEvent.java b/src/main/java/fr/openmc/core/features/dream/events/TakeFromSingularityEvent.java new file mode 100644 index 000000000..15a307361 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/events/TakeFromSingularityEvent.java @@ -0,0 +1,28 @@ +package fr.openmc.core.features.dream.events; + +import lombok.Getter; +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +@Getter +public class TakeFromSingularityEvent extends PlayerEvent { + private static final HandlerList HANDLERS = new HandlerList(); + private final ItemStack item; + + public TakeFromSingularityEvent(Player player, ItemStack item) { + super(player); + this.item = item; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/generation/structures/DreamStructuresManager.java b/src/main/java/fr/openmc/core/features/dream/generation/structures/DreamStructuresManager.java index 3a2433938..46f28404c 100644 --- a/src/main/java/fr/openmc/core/features/dream/generation/structures/DreamStructuresManager.java +++ b/src/main/java/fr/openmc/core/features/dream/generation/structures/DreamStructuresManager.java @@ -10,6 +10,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.serialization.ConfigurationSerialization; +import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -78,7 +79,7 @@ public static void addStructure(DreamStructure.DreamType type, BlockVector3 min, } } - public static DreamStructure getStructureAt(Location loc) { + public static @Nullable DreamStructure getStructureAt(Location loc) { for (DreamStructure s : structures) { if (s.isInside(loc)) return s; } diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/biomes/PlayerEnteredBiome.java b/src/main/java/fr/openmc/core/features/dream/listeners/biomes/PlayerEnteredBiome.java index 6f35dacdf..5e3e4d87c 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/biomes/PlayerEnteredBiome.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/biomes/PlayerEnteredBiome.java @@ -3,6 +3,7 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.PlayerEnterBiomeEvent; import fr.openmc.core.features.dream.generation.DreamBiome; import fr.openmc.core.features.dream.models.db.DBDreamPlayer; import fr.openmc.core.utils.ParticleUtils; @@ -80,13 +81,14 @@ public void onPlayerMove(PlayerMoveEvent event) { return; } - applyFog(player); + applyEffects(player); spawnParticles(player); }, 0L, 40L ); activeTasks.put(player.getUniqueId(), task); + Bukkit.getServer().getPluginManager().callEvent(new PlayerEnterBiomeEvent(player, biome)); MessagesManager.sendMessage(player, Component.text("Attention, vous êtes dans un biome que vous avez pas encore débloqué, il vous faut l'§b" + ORB_UNLOCKER.get(index)), Prefix.DREAM, MessageType.WARNING, false); } } @@ -96,8 +98,9 @@ private void stopTask(Player player) { if (task != null) task.cancel(); } - private void applyFog(Player player) { + private void applyEffects(Player player) { player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 60, 1, true, false)); + player.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 60, 1, true, false)); } private void spawnParticles(Player player) { diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChangeWorldListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChangeWorldListener.java index 84ba003f7..f237096a8 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChangeWorldListener.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChangeWorldListener.java @@ -1,10 +1,12 @@ package fr.openmc.core.features.dream.listeners.dream; +import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.displays.bossbar.BossbarManager; import fr.openmc.core.features.displays.bossbar.BossbarsType; import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.DreamUtils; import fr.openmc.core.features.dream.displays.DreamBossBar; +import fr.openmc.core.features.dream.events.DreamEnterEvent; import fr.openmc.core.features.dream.models.db.DreamPlayer; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; @@ -44,6 +46,7 @@ public void onDreamEntrered(PlayerTeleportEvent event) { AttributeInstance inst = player.getAttribute(Attribute.MAX_HEALTH); if (inst == null) return; player.setHealth(inst.getBaseValue()); + OMCPlugin.getInstance().getServer().getPluginManager().callEvent(new DreamEnterEvent(player)); } @EventHandler diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChatListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChatListener.java new file mode 100644 index 000000000..d9443cea8 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerChatListener.java @@ -0,0 +1,20 @@ +package fr.openmc.core.features.dream.listeners.dream; + +import fr.openmc.core.features.dream.DreamUtils; +import io.papermc.paper.event.player.AsyncChatEvent; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PlayerChatListener implements Listener { + + @EventHandler + public void onPlayerChat(AsyncChatEvent e) { + if (e.isCancelled()) return; + + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + e.setCancelled(true); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerCommandListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerCommandListener.java index 1f114239f..0a96614a1 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerCommandListener.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerCommandListener.java @@ -15,7 +15,8 @@ public class PlayerCommandListener implements Listener { private final Set allowedCommands = Set.of( "/crafts", "/leave", - "/ia omc_dream" + "/ia omc_dream", + "/milestone" ); @EventHandler(priority = EventPriority.HIGHEST) diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerSleepListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerSleepListener.java index c3a2a52c0..bcadd7da4 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerSleepListener.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/dream/PlayerSleepListener.java @@ -3,7 +3,12 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.models.db.DBDreamPlayer; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.MessagesManager; +import fr.openmc.core.utils.messages.Prefix; +import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -28,23 +33,24 @@ public void onPlayerSleep(PlayerBedEnterEvent event) { if (!event.getBedEnterResult().equals(PlayerBedEnterEvent.BedEnterResult.OK)) return; if (playersDreaming.contains(player.getUniqueId())) return; - - Random random = new Random(); - double randomValue = random.nextDouble(); - - if (randomValue < DreamManager.calculateDreamProbability(player)) return; - - player.addPotionEffect(new PotionEffect( - PotionEffectType.NAUSEA, - 20 * 10, - 1, - false, - false, - false - )); + + if (player.getGameMode().equals(GameMode.CREATIVE)) { + MessagesManager.sendMessage(player, Component.text("§fVous êtes en créatif, dormir vous fait obligatoirement passer dans la §ddimension des rêves"), Prefix.DREAM, MessageType.INFO, true); + } else { + double randomValue = new Random().nextDouble(); + + if (randomValue < DreamManager.calculateDreamProbability(player)) return; + + player.addPotionEffect(new PotionEffect( + PotionEffectType.NAUSEA, + 20 * 10, + 1, + false, + false, + false + )); + } playersDreaming.add(player.getUniqueId()); - - } @EventHandler @@ -53,6 +59,7 @@ public void onNightSkip(TimeSkipEvent event) { Player player = Bukkit.getPlayer(uuid); if (player == null) continue; DBDreamPlayer dbDreamPlayer = DreamManager.getCacheDreamPlayer(player); + long delay = player.getGameMode().equals(GameMode.CREATIVE) ? 0L : 20L * 5; new BukkitRunnable() { @Override public void run() { @@ -62,7 +69,7 @@ public void run() { DreamManager.tpPlayerToLastDreamLocation(player); } } - }.runTaskLater(OMCPlugin.getInstance(), 20L * 5); + }.runTaskLater(OMCPlugin.getInstance(), delay); } playersDreaming.clear(); } diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/orb/PlayerObtainOrb.java b/src/main/java/fr/openmc/core/features/dream/listeners/orb/PlayerObtainOrb.java index 74d3980c4..89c504e82 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/orb/PlayerObtainOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/orb/PlayerObtainOrb.java @@ -3,10 +3,10 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.AltarCraftingEvent; import fr.openmc.core.features.dream.events.GlaciteTradeEvent; import fr.openmc.core.features.dream.events.MetalDetectorLootEvent; import fr.openmc.core.features.dream.generation.DreamBiome; -import fr.openmc.core.features.dream.mecanism.altar.AltarCraftingEvent; import fr.openmc.core.features.dream.mecanism.tradernpc.GlaciteTrade; import fr.openmc.core.features.dream.models.db.DBDreamPlayer; import fr.openmc.core.features.dream.models.db.DreamPlayer; diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/registry/DreamMobDamageListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/registry/DreamMobDamageListener.java index 20912196c..596f9b65b 100644 --- a/src/main/java/fr/openmc/core/features/dream/listeners/registry/DreamMobDamageListener.java +++ b/src/main/java/fr/openmc/core/features/dream/listeners/registry/DreamMobDamageListener.java @@ -1,5 +1,6 @@ package fr.openmc.core.features.dream.listeners.registry; +import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.DreamUtils; import fr.openmc.core.features.dream.models.registry.DreamMob; import fr.openmc.core.features.dream.registries.DreamMobsRegistry; @@ -42,6 +43,7 @@ public void onPlayerDamage(EntityDamageByEntityEvent event) { if (dreamMob == null) return; event.setCancelled(true); + if (DreamManager.isPlayerInMilestoneDialog(p)) return; Vector kb = p.getLocation().toVector() .subtract(livingEntity.getLocation().toVector()) diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerEnterStructureListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerEnterStructureListener.java new file mode 100644 index 000000000..f683ea2fb --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerEnterStructureListener.java @@ -0,0 +1,37 @@ +package fr.openmc.core.features.dream.listeners.strctures; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.PlayerEnterStructureEvent; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.generation.structures.DreamStructuresManager; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.MessagesManager; +import fr.openmc.core.utils.messages.Prefix; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; + +public class PlayerEnterStructureListener implements Listener { + + @EventHandler + public void onPlayerMove(PlayerMoveEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + Location from = e.getFrom(); + Location to = e.getTo(); + if ((from.getBlockX() >> 4) != (to.getBlockX() >> 4) || (from.getBlockZ() >> 4) != (to.getBlockZ() >> 4)) return; + + DreamStructure oldStructure = DreamStructuresManager.getStructureAt(from); + DreamStructure newStructure = DreamStructuresManager.getStructureAt(to); + if (oldStructure == newStructure) return; + if (newStructure == null) return; + + MessagesManager.sendMessage(player, Component.text("§7Vous entrez dans : " + newStructure.type().getName()), Prefix.DREAM, MessageType.INFO, true); + Bukkit.getServer().getPluginManager().callEvent(new PlayerEnterStructureEvent(player, newStructure)); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerExitStructureListener.java b/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerExitStructureListener.java new file mode 100644 index 000000000..57fb8af2e --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/listeners/strctures/PlayerExitStructureListener.java @@ -0,0 +1,37 @@ +package fr.openmc.core.features.dream.listeners.strctures; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.PlayerExitStructureEvent; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.generation.structures.DreamStructuresManager; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.MessagesManager; +import fr.openmc.core.utils.messages.Prefix; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; + +public class PlayerExitStructureListener implements Listener { + + @EventHandler + public void onPlayerMove(PlayerMoveEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + Location from = e.getFrom(); + Location to = e.getTo(); + if ((from.getBlockX() >> 4) != (to.getBlockX() >> 4) || (from.getBlockZ() >> 4) != (to.getBlockZ() >> 4)) return; + + DreamStructure oldStructure = DreamStructuresManager.getStructureAt(from); + DreamStructure newStructure = DreamStructuresManager.getStructureAt(to); + if (oldStructure == newStructure) return; + if (newStructure != null) return; + + MessagesManager.sendMessage(player, Component.text("§7Vous sortez de : " + oldStructure.type().getName()), Prefix.DREAM, MessageType.INFO, true); + Bukkit.getServer().getPluginManager().callEvent(new PlayerExitStructureEvent(player, oldStructure)); + } +} \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarManager.java b/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarManager.java index 8fed4ecd7..c9ba5e44f 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarManager.java +++ b/src/main/java/fr/openmc/core/features/dream/mecanism/altar/AltarManager.java @@ -1,6 +1,8 @@ package fr.openmc.core.features.dream.mecanism.altar; import fr.openmc.core.OMCPlugin; +import fr.openmc.core.features.dream.events.AltarBindEvent; +import fr.openmc.core.features.dream.events.AltarCraftingEvent; import fr.openmc.core.features.dream.models.registry.items.DreamItem; import fr.openmc.core.features.dream.registries.DreamItemRegistry; import fr.openmc.core.utils.ItemUtils; @@ -57,6 +59,7 @@ public static void bindItem(Player player, Location altarLoc, ItemStack item) { floatingItems.put(altarLoc, display); boundPlayers.put(altarLoc, player.getUniqueId()); + Bukkit.getPluginManager().callEvent(new AltarBindEvent(player, dreamItem, recipe, altarLoc)); MessagesManager.sendMessage(player, Component.text("§aVotre objet est lié à l'§5Altar"), Prefix.DREAM, MessageType.ERROR, false); } @@ -104,7 +107,7 @@ public static void tryRitual(Player player, Location altarLoc) { player.getInventory().addItem(recipe.getOutput().getBest()); Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> - Bukkit.getServer().getPluginManager().callEvent(new AltarCraftingEvent(player, recipe.getOutput())) + Bukkit.getServer().getPluginManager().callEvent(new AltarCraftingEvent(player, recipe, recipe.getOutput())) ); unbind(altarLoc); diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/cold/ColdListener.java b/src/main/java/fr/openmc/core/features/dream/mecanism/cold/ColdListener.java index 1bf527bbc..35b2e2d77 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/cold/ColdListener.java +++ b/src/main/java/fr/openmc/core/features/dream/mecanism/cold/ColdListener.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.DreamUtils; import fr.openmc.core.features.dream.generation.DreamBiome; import fr.openmc.core.features.dream.models.db.DreamPlayer; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -17,6 +18,7 @@ public class ColdListener implements Listener { @EventHandler(ignoreCancelled = true) public void onGlaciteGrottoEntered(PlayerMoveEvent event) { Player player = event.getPlayer(); + if (!player.getGameMode().equals(GameMode.SURVIVAL)) return; Location loc = player.getLocation(); if (loc.getBlock().getBiome().equals(DreamBiome.GLACITE_GROTTO.getBiome())) { diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/singularity/SingularityMenu.java b/src/main/java/fr/openmc/core/features/dream/mecanism/singularity/SingularityMenu.java index 3ab65edfe..d45c8e071 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/singularity/SingularityMenu.java +++ b/src/main/java/fr/openmc/core/features/dream/mecanism/singularity/SingularityMenu.java @@ -5,8 +5,10 @@ import fr.openmc.api.menulib.utils.ItemBuilder; import fr.openmc.core.commands.utils.Restart; import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.TakeFromSingularityEvent; import fr.openmc.core.features.dream.models.registry.items.DreamItem; import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; @@ -111,9 +113,7 @@ public void onInventoryClick(InventoryClickEvent event) { // prendre if (current != null && current.getType() != Material.AIR) { - if (currentDream == null) { - return; - } + if (currentDream == null) return; if (inDream) return; @@ -128,6 +128,7 @@ public void onInventoryClick(InventoryClickEvent event) { replacement.setAmount(current.getAmount()); event.setCurrentItem(replacement); + Bukkit.getServer().getPluginManager().callEvent(new TakeFromSingularityEvent(player, replacement)); return; } @@ -143,12 +144,9 @@ public void onInventoryClick(InventoryClickEvent event) { event.setCancelled(true); return; } - if (clickInPlayerInv) return; + if (clickInPlayerInv) return; // Laisser } else if (inDream) { - if (!cursorDream.isTransferable()) { - event.setCancelled(true); - return; - } + if (!cursorDream.isTransferable()) event.setCancelled(true); } } } diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java b/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java new file mode 100644 index 000000000..ab05ca0bb --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java @@ -0,0 +1,62 @@ +package fr.openmc.core.features.dream.milestone; + +import fr.openmc.api.menulib.Menu; +import fr.openmc.core.features.milestones.Milestone; +import fr.openmc.core.features.milestones.MilestoneModel; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.menus.MilestoneMenu; +import net.kyori.adventure.text.Component; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +public class DreamMilestone implements Milestone { + + private static HashMap playerData = new HashMap<>(); + + @Override + public HashMap getPlayerData() { + return playerData; + } + + @Override + public String getName() { + return "Tutoriel de la Dream Dim"; + } + + @Override + public List getDescription() { + return List.of( + Component.text("§7Plongez-vous dans un §6long sommeil §7!"), + Component.text("§7Arpentez vos rêves et gagnez des §6récompenses §7!"), + Component.text("§7Un monde nouveau s'offre à vous,"), + Component.text("§7mais arriverez-vous à vous extraire de ce lieu sombre et chaotique ?") + ); + } + + @Override + public ItemStack getIcon() { + return ItemStack.of(Material.SCULK); + } + + @Override + public List getSteps() { + return Arrays.stream(DreamSteps.values()).map(DreamSteps::getQuest).toList(); + } + + @Override + public MilestoneType getType() { + return MilestoneType.DREAM; + } + + @Override + public Menu getMenu(Player player) { + return new MilestoneMenu(player, this); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/DreamSteps.java b/src/main/java/fr/openmc/core/features/dream/milestone/DreamSteps.java new file mode 100644 index 000000000..718700750 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/DreamSteps.java @@ -0,0 +1,70 @@ +package fr.openmc.core.features.dream.milestone; + +import fr.openmc.core.features.dream.milestone.quests.*; +import fr.openmc.core.features.milestones.MilestoneQuest; +import lombok.Getter; + +@Getter +public enum DreamSteps { + + SLEEP(null), + CRAFTS(null), + CRAFTING_TABLE(null), + GET_HEART(null), + OLD_AXE(null), + DOMINATION_ORB(null), + CUBE_TEMPLE(null), + ALTAR(null), + SOULS(null), + SOUL_ORB(null), + CLOUD_VALLEY(null), + CLOUD_CASTLE(null), + KILL_BREEZY(null), + MUD_BEACH(null), + METAL_DETECTOR(null), + MUD_ORB(null), + CRYSTALLIZED_PICKAXE(null), + ETERNAL_FIRE(null), + GROTTO_CAMP(null), + ILLUSIONIST(null), + EWENITE(null), + MECHANIC_PICKAXE(null), + GLACITE_ORB(null), + SINGULARITY(null), + TRANSFERABLE_OBJECT(null) + ; + + private MilestoneQuest quest; + + DreamSteps(MilestoneQuest quest) { + this.quest = quest; + } + + static { + SLEEP.quest = new SleepQuest(); + CRAFTS.quest = new CraftsQuest(); + CRAFTING_TABLE.quest = new CraftingTableQuest(); + GET_HEART.quest = new CreakingHeartQuest(); + OLD_AXE.quest = new OldAxeQuest(); + DOMINATION_ORB.quest = new CraftDominationOrbQuest(); + CUBE_TEMPLE.quest = new CubeTempleQuest(); + ALTAR.quest = new AltarQuest(); + SOULS.quest = new SoulsQuest(); + SOUL_ORB.quest = new SoulOrbQuest(); + CLOUD_VALLEY.quest = new CloudValleyQuest(); + CLOUD_CASTLE.quest = new CloudCastleQuest(); + KILL_BREEZY.quest = new KillBreezyQuest(); + MUD_BEACH.quest = new MudBeachQuest(); + METAL_DETECTOR.quest = new MetalDetectorQuest(); + MUD_ORB.quest = new MudOrbQuest(); + CRYSTALLIZED_PICKAXE.quest = new CrystallizedPickaxeQuest(); + ETERNAL_FIRE.quest = new CraftEternalFireQuest(); + GROTTO_CAMP.quest = new GrottoCampQuest(); + ILLUSIONIST.quest = new IllusionistQuest(); + EWENITE.quest = new EweniteQuest(); + MECHANIC_PICKAXE.quest = new CraftMechanicPickaxeQuest(); + GLACITE_ORB.quest = new GlaciteOrbQuest(); + SINGULARITY.quest = new CraftSingularityQuest(); + TRANSFERABLE_OBJECT.quest = new TransferableObjectQuest(); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/AltarQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/AltarQuest.java new file mode 100644 index 000000000..3f6727fd9 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/AltarQuest.java @@ -0,0 +1,54 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.AltarBindEvent; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.items.orb.DominationOrb; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class AltarQuest extends MilestoneQuest implements Listener { + public AltarQuest() { + super( + "Début du rituel", + List.of( + "§fDéposer l'§dOrbe de Domination §fsur l'§dAltar", + "§8§oCommençons le rituel de conversion de l'orbe" + ), + Material.ENCHANTING_TABLE, + MilestoneType.DREAM, + DreamSteps.ALTAR, + new QuestTier( + 1, + new QuestTextReward("Hmmm... avec cette table étrange, il est visiblement possible de transformer l'Orbe de Domination. Mais pour en faire quoi !? \n" + + "Ce qui est sur, c'est qui me manque quelque chose pour accomplir ce rituel jusqu'au bout.", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onAltarBind(AltarBindEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = e.getItem(); + if (item == null) return; + if (item instanceof DominationOrb) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + + this.incrementProgressInDream(player.getUniqueId()); + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudCastleQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudCastleQuest.java new file mode 100644 index 000000000..15c55e601 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudCastleQuest.java @@ -0,0 +1,45 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.PlayerEnterStructureEvent; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +import java.util.List; + +public class CloudCastleQuest extends MilestoneQuest { + public CloudCastleQuest() { + super( + "Laputa", + List.of( + "§fEntrer dans le §dChâteau des Nuages", + "§8§oUn nouveau château à conquérir ?" + ), + Material.QUARTZ_PILLAR, + MilestoneType.DREAM, + DreamSteps.CLOUD_CASTLE, + new QuestTier( + 1, + new QuestTextReward("Ce monde regorge de choses cachées. Explorons le château en quête de ressources. Et qui dit château, dit donjon, et donc boss...", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCastleEnter(PlayerEnterStructureEvent e) { + if (e.getStructure().type() != DreamStructure.DreamType.CLOUD_CASTLE) return; + Player player = e.getPlayer(); + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudValleyQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudValleyQuest.java new file mode 100644 index 000000000..3c845f097 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CloudValleyQuest.java @@ -0,0 +1,48 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.PlayerEnterBiomeEvent; +import fr.openmc.core.features.dream.generation.DreamBiome; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class CloudValleyQuest extends MilestoneQuest implements Listener { + public CloudValleyQuest() { + super( + "Montée au septième ciel", + List.of( + "§fDécouvrir la §dVallée des Nuages", + "§8§oCes nuages de ce rêve doivent bien cacher quelque chose..." + ), + Material.SNOW_BLOCK, + MilestoneType.DREAM, + DreamSteps.CLOUD_VALLEY, + new QuestTier( + 1, + new QuestTextReward("Ces nuages sont comme une nouvelle plaine, on peut courir dessus, sauter de nuage en nuage, et si on tombe, ça ne fait même pas mal.\n" + + "Tiens, c'est quoi ça, au loin ? Le château que j'ai cru avoir aperçu tout à l'heure ?", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onEnterBiome(PlayerEnterBiomeEvent e) { + Player player = e.getPlayer(); + + if (!e.getBiome().equals(DreamBiome.CLOUD_LAND.getBiome())) return; + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftDominationOrbQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftDominationOrbQuest.java new file mode 100644 index 000000000..351573af7 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftDominationOrbQuest.java @@ -0,0 +1,58 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.orb.DominationOrb; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class CraftDominationOrbQuest extends MilestoneQuest implements Listener { + public CraftDominationOrbQuest() { + super( + "Dominer, c'est cool", + List.of( + "§fFabriquer l'§dOrbe de Domination", + "§8§o1 sur 5 pour les dominer tous !" + ), + DreamItemRegistry.getByName("omc_dream:domination_orb").getBest(), + MilestoneType.DREAM, + DreamSteps.DOMINATION_ORB, + new QuestTier(1), + List.of( + "§6Voilà l'orbe, que dois-je faire avec ?", + "§3Voyageur : Cette orbe est la première d'une série de §d5§3. Chacune d'elles permet de survivre dans la §dzone suivante§3, " + + "permettant de récupérer une nouvelle orbe et ainsi de suite pour ma euh... notre quête !", + "§6Je dois donc explorer un nouveau biome...", + "§3Voyageur : C'est exact ! Il va falloir trouver le §dTemple §3du maître des lieux. Tu ne devrais pas le louper je pense..." + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + if (e.getWhoClicked() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof DominationOrb) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftEternalFireQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftEternalFireQuest.java new file mode 100644 index 000000000..8f44a8ab3 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftEternalFireQuest.java @@ -0,0 +1,57 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.blocks.EternalCampFire; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class CraftEternalFireQuest extends MilestoneQuest implements Listener { + + public CraftEternalFireQuest() { + super( + "L'ère glacière", + List.of( + "" + ), + DreamItemRegistry.getByName("omc_dream:eternal_campfire").getBest(), + MilestoneType.DREAM, + DreamSteps.ETERNAL_FIRE, + new QuestTier( + 1, + new QuestTextReward("", Prefix.OPENMC, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + if (e.getWhoClicked() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof EternalCampFire) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftMechanicPickaxeQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftMechanicPickaxeQuest.java new file mode 100644 index 000000000..e092591ca --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftMechanicPickaxeQuest.java @@ -0,0 +1,57 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.tools.MecanicPickaxe; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class CraftMechanicPickaxeQuest extends MilestoneQuest implements Listener { + + public CraftMechanicPickaxeQuest() { + super( + "Révolution industrielle", + List.of( + "§fCrafter la §dPioche Mécanique" + ), + DreamItemRegistry.getByName("omc_dream:mecanic_pickaxe").getBest(), + MilestoneType.DREAM, + DreamSteps.MECHANIC_PICKAXE, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + if (e.getWhoClicked() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof MecanicPickaxe) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftSingularityQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftSingularityQuest.java new file mode 100644 index 000000000..50e7332d3 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftSingularityQuest.java @@ -0,0 +1,57 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.orb.Singularity; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class CraftSingularityQuest extends MilestoneQuest implements Listener { + + public CraftSingularityQuest() { + super( + "La finalité ?", + List.of( + "§fCrafter la §dSingularité" + ), + DreamItemRegistry.getByName("omc_dream:singularity").getBest(), + MilestoneType.DREAM, + DreamSteps.SINGULARITY, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + if (e.getWhoClicked() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof Singularity) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftingTableQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftingTableQuest.java new file mode 100644 index 000000000..30b25207e --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftingTableQuest.java @@ -0,0 +1,54 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.Recipe; + +import java.util.List; + +public class CraftingTableQuest extends MilestoneQuest implements Listener { + public CraftingTableQuest() { + super( + "Une nouvelle survie ?", + List.of( + "§fFabriquer une §dtable de craft", + "§8§oBizarre cette survie de nuit... on ne voit pas en dehors des pleines de sculks" + ), + Material.CRAFTING_TABLE, + MilestoneType.DREAM, + DreamSteps.CRAFTING_TABLE, + new QuestTier(1), + List.of( + "§6Bon, maintenant que j'ai la table, cherchons de quoi faire des outils et... " + + "comment se fait-il qu'il y ait des Craqueurs ici !?", + "§3Voyageur : Tu as le bon oeil. Ce monde regorge de créatures étonnantes qui ont un point commun : " + + "elles se nourrissent de §dtemps§3, en te le §dvolant§3.", + "§6C'est donc cela cette barre là haut ?", + "§3Voyageur : Oui, et ce temps n'est pas infini, c'est pourquoi nous devons faire vite. " + + "Profitons d'être au milieu de ces créatures pour récupérer leurs §dcoeurs§3." + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + if (e.getWhoClicked() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + Recipe recipe = e.getRecipe(); + if (recipe.getResult().getType() != Material.CRAFTING_TABLE) return; + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftsQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftsQuest.java new file mode 100644 index 000000000..c26ffb882 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CraftsQuest.java @@ -0,0 +1,49 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import java.util.List; + +public class CraftsQuest extends MilestoneQuest implements Listener { + public CraftsQuest() { + super( + "Apprendre de nouveaux crafts", + List.of( + "§fFaire §d/crafts §fpour voir les crafts disponibles", + "§8§oCette dimension a ses propres règles, je dois les apprendre pour y survivre" + ), + Material.BOOK, + MilestoneType.DREAM, + DreamSteps.CRAFTS, + new QuestTier(1), + List.of( + "§6Cela ressemble à une survie normale, non ?", + "§3Voyageur : En effet, ce monde a beau être sombre, nouveau et complexe, il n'est pas si différent de l'Overworld. Mais une dimension se rajoute : le §dtemps §3! " + + "Pour le moment, tu ne peux qu'accéder à la §dPleine de Sculk§3, mais les autres biomes seront bientôt accessibles.", + "§6Hmmm, cela m'intrigue. Mais tu as dis que l'on manque de temps, alors ne traînons pas. Il me faut une §dtable de craft§6." + ) + ); + } + + @EventHandler + public void onCommand(PlayerCommandPreprocessEvent e) { + String s = e.getMessage(); + if (!s.equals("/crafts")) return; + + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CreakingHeartQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CreakingHeartQuest.java new file mode 100644 index 000000000..8c82095a3 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CreakingHeartQuest.java @@ -0,0 +1,56 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.loots.CreakingHeart; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; + +import java.util.List; + +public class CreakingHeartQuest extends MilestoneQuest implements Listener { + + public CreakingHeartQuest() { + super( + "La résine n'a pas de coeur", + List.of( + "§fRécupérer un §dCoeur de Creaking", + "§8§oOn cherche la résine ou le coeur ?" + ), + Material.RESIN_CLUMP, + MilestoneType.DREAM, + DreamSteps.GET_HEART, + new QuestTier(1), + List.of( + "§6Ah ! Mais c'est vrai qu'il protègent leurs coeurs.", + "§3Voyageur : Oui, et ceux-ci nous seront utiles par la suite, les crafts de ce monde en utilisent beaucoup. " + + "Que ce soit pour les outils, armures, ou objets divers de ce monde. Commence par te faire une §dhache§3.", + "§6Mais quel est le but de ce monde ??", + "§3Voyageur : Je t'expliquerai bientôt, je n'ai pas envie que tu finisses comme moi..." + ) + ); + } + + @EventHandler + public void onPickUp(EntityPickupItemEvent e) { + if (e.getEntity() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = DreamItemRegistry.getByItemStack(e.getItem().getItemStack()); + if (item == null) return; + if (item instanceof CreakingHeart) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CrystallizedPickaxeQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CrystallizedPickaxeQuest.java new file mode 100644 index 000000000..d1d1e8497 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CrystallizedPickaxeQuest.java @@ -0,0 +1,53 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.tools.CrystalizedPickaxe; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; + +import java.util.List; + +public class CrystallizedPickaxeQuest extends MilestoneQuest implements Listener { + + public CrystallizedPickaxeQuest() { + super( + "Le cristal n'est pas un métal", + List.of( + "§fObtenir la §dPioche Cristallisée" + ), + DreamItemRegistry.getByName("omc_dream:crystallized_pickaxe").getBest(), + MilestoneType.DREAM, + DreamSteps.CRYSTALLIZED_PICKAXE, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onPickUp(EntityPickupItemEvent e) { + if (e.getEntity() instanceof Player player) { + if (! DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = DreamItemRegistry.getByItemStack(e.getItem().getItemStack()); + if (item == null) return; + if (item instanceof CrystalizedPickaxe) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/CubeTempleQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CubeTempleQuest.java new file mode 100644 index 000000000..bf475aa34 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/CubeTempleQuest.java @@ -0,0 +1,48 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.PlayerEnterStructureEvent; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class CubeTempleQuest extends MilestoneQuest implements Listener { + public CubeTempleQuest() { + super( + "Vénérer le Cube des Ämes", + List.of( + "§fEntrer dans le §dTemple des Âmes", + "§8§oA la recherche du monument du Cube des Âmes...", + "on est malgré tout dans Minecraft, même dans un rêve !" + ), + Material.POLISHED_BLACKSTONE_BRICKS, + MilestoneType.DREAM, + DreamSteps.CUBE_TEMPLE, + new QuestTier( + 1, + new QuestTextReward("Wow, c'est grand ! Qui a pu construire une temple pareil ? Et pourquoi ? Je dois le découvrir. \n" + + "Tiens... il semble y avoir quelque chose en son centre...", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCastleEnter(PlayerEnterStructureEvent e) { + if (e.getStructure().type() != DreamStructure.DreamType.SOUL_ALTAR) return; + Player player = e.getPlayer(); + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/EweniteQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/EweniteQuest.java new file mode 100644 index 000000000..95399b505 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/EweniteQuest.java @@ -0,0 +1,53 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.loots.Ewenite; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; + +import java.util.List; + +public class EweniteQuest extends MilestoneQuest implements Listener { + + public EweniteQuest() { + super( + "Aywenite, Awyenito ou Ewenite ?", + List.of( + "§fObtenir de l'§dEwenite" + ), + DreamItemRegistry.getByName("omc_dream:ewenite").getBest(), + MilestoneType.DREAM, + DreamSteps.EWENITE, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onPickUp(EntityPickupItemEvent e) { + if (e.getEntity() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = DreamItemRegistry.getByItemStack(e.getItem().getItemStack()); + if (item == null) return; + if (item instanceof Ewenite) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/GlaciteOrbQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/GlaciteOrbQuest.java new file mode 100644 index 000000000..e5803fbc2 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/GlaciteOrbQuest.java @@ -0,0 +1,46 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.GlaciteTradeEvent; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.orb.GlaciteOrb; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class GlaciteOrbQuest extends MilestoneQuest implements Listener { + + public GlaciteOrbQuest() { + super( + "Enfin la dernière ?", + List.of( + "§fEchanger l'§dOrbe de Glace" + ), + DreamItemRegistry.getByName("omc_dream:glacite_orb").getBest(), + MilestoneType.DREAM, + DreamSteps.GLACITE_ORB, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onTrade(GlaciteTradeEvent e) { + Player player = e.getPlayer(); + if (e.getTrade().getResult() instanceof GlaciteOrb) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/GrottoCampQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/GrottoCampQuest.java new file mode 100644 index 000000000..39d5c7d50 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/GrottoCampQuest.java @@ -0,0 +1,46 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.PlayerEnterStructureEvent; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class GrottoCampQuest extends MilestoneQuest implements Listener { + + public GrottoCampQuest() { + super( + "La survie en mode fin du monde ?", + List.of( + "§fTrouver un §dcamp de grotte" + ), + Material.DEEPSLATE, + MilestoneType.DREAM, + DreamSteps.GROTTO_CAMP, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCastleEnter(PlayerEnterStructureEvent e) { + if (e.getStructure().type() != DreamStructure.DreamType.BASE_CAMP) return; + Player player = e.getPlayer(); + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/IllusionistQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/IllusionistQuest.java new file mode 100644 index 000000000..c27e5ff0e --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/IllusionistQuest.java @@ -0,0 +1,47 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import de.oliver.fancynpcs.api.events.NpcInteractEvent; +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class IllusionistQuest extends MilestoneQuest implements Listener { + + public IllusionistQuest() { + super( + "Y'a quelqu'un ?", + List.of( + "§fTrouver et aller voir l'§dIllusioneur" + ), + Material.EVOKER_SPAWN_EGG, + MilestoneType.DREAM, + DreamSteps.ILLUSIONIST, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onInterract(NpcInteractEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + if (!e.getNpc().getData().getName().startsWith("glacite-")) return; + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/KillBreezyQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/KillBreezyQuest.java new file mode 100644 index 000000000..691c47492 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/KillBreezyQuest.java @@ -0,0 +1,55 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.generation.structures.DreamStructure; +import fr.openmc.core.features.dream.generation.structures.DreamStructuresManager; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.registries.mobs.Breezy; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.List; + +public class KillBreezyQuest extends MilestoneQuest implements Listener { + public KillBreezyQuest() { + super( + "L'air du vent", + List.of( + "§fBattre §dBreezy", + "§8§oOn va dompter un des esprits de la montagne de Poncahontas, ou alors c'est Elsa ?" + ), + Material.WIND_CHARGE, + MilestoneType.DREAM, + DreamSteps.KILL_BREEZY, + new QuestTier( + 1, + new QuestTextReward("Difficile ce château, autant de montres au même endroit... " + + "Retournons sur la terre ferme pour prendre du bon temps.", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onKillBreezy(EntityDeathEvent e) { + if (e.getDamageSource().getCausingEntity() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + if (!DreamStructuresManager.isInsideStructure(player.getLocation(), DreamStructure.DreamType.CLOUD_CASTLE)) return; + + if (e.getEntity() instanceof Breezy breezy && breezy.getId().equals("breezy")) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/MetalDetectorQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MetalDetectorQuest.java new file mode 100644 index 000000000..f2d5a2862 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MetalDetectorQuest.java @@ -0,0 +1,55 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.tools.MetalDetector; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class MetalDetectorQuest extends MilestoneQuest implements Listener { + + public MetalDetectorQuest() { + super( + "Coooooooaaaaaaa", + List.of( + "§fCraft le §dDétecteur à métaux", + "" + ), + DreamItemRegistry.getByName("omc_dream:metal_detector").getBest(), + MilestoneType.DREAM, + DreamSteps.METAL_DETECTOR, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCraftItem(CraftItemEvent e) { + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof MetalDetector) { + if (e.getWhoClicked() instanceof Player player) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudBeachQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudBeachQuest.java new file mode 100644 index 000000000..1d79dfedf --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudBeachQuest.java @@ -0,0 +1,51 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.PlayerEnterBiomeEvent; +import fr.openmc.core.features.dream.generation.DreamBiome; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class MudBeachQuest extends MilestoneQuest implements Listener { + public MudBeachQuest() { + super( + "Je préfère la plage", + List.of( + "§fEntrer sur la §dPlage de Boue", + "§8§oProfitons de ce rêve pour aller se dorer la pilule au Soleil.", + "Tiens, pourquoi n'y a-t-il pas d'eau, mais que de la boue ?", + "§8§oEt toujours pas de Soleil !? Cet endroit n'est donc que de la nuit ?" + ), + Material.MUD, + MilestoneType.DREAM, + DreamSteps.MUD_BEACH, + new QuestTier( + 1, + new QuestTextReward("Bon, assez de repos, il serait temps que je cherche la prochaine orbe.", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onEnterBiome(PlayerEnterBiomeEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + if (!e.getBiome().equals(DreamBiome.MUD_BEACH.getBiome())) return; + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudOrbQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudOrbQuest.java new file mode 100644 index 000000000..c145abcc2 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/MudOrbQuest.java @@ -0,0 +1,61 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.orb.MudOrb; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestMethodsReward; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; + +import java.util.List; + +public class MudOrbQuest extends MilestoneQuest implements Listener { + + public MudOrbQuest() { + super( + "Bip Biip Biiiiiiip", + List.of( + "Trouver l'Orbe de Boue" + ), + DreamItemRegistry.getByName("omc_dream:mud_orb").getBest(), + MilestoneType.DREAM, + DreamSteps.MUD_ORB, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS), + new QuestMethodsReward( + player -> { + if (player.getInventory().contains(DreamItemRegistry.getByName("omc_dream:crystallized_pickaxe").getBest())) { + DreamSteps.CRYSTALLIZED_PICKAXE.getQuest().incrementProgressInDream(player.getUniqueId()); + } + } + ) + ) + ); + } + + @EventHandler + public void onPickUp(EntityPickupItemEvent e) { + if (e.getEntity() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = DreamItemRegistry.getByItemStack(e.getItem().getItemStack()); + if (item == null) return; + if (item instanceof MudOrb) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/OldAxeQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/OldAxeQuest.java new file mode 100644 index 000000000..f5fe2f61f --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/OldAxeQuest.java @@ -0,0 +1,57 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.tools.OldCreakingAxe; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class OldAxeQuest extends MilestoneQuest implements Listener { + + public OldAxeQuest() { + super( + "Le premier outil ! Enfin !", + List.of( + "§fFabriquer une §dVieille hache du Creaking", + "§8§oNotre meilleur ami dans ce monde !" + ), + DreamItemRegistry.getByName("omc_dream:old_creaking_axe").getBest(), + MilestoneType.DREAM, + DreamSteps.OLD_AXE, + new QuestTier(1), + List.of( + "§3Voyageur : Une hâche, c'est déjà ça.", + "§6Et maintenant ?", + "§3Voyageur : Maintenant, il faut obtenir l'§dOrbe de Domination§3, puis je t'en expliquerai plus sur ce monde.", + "§6Mais comment obtenir cette Orbe ?", + "§3Voyageur : Ce n'est pas compliqué : elle se fabrique avec la §dtable de craft§3. Fais §d/crafts §3si tu as oublié comment. " + + "Elle te permettra de pouvoir explorer une nouvelle zone de ce rêve." + ) + ); + } + + @EventHandler + public void onCraft(CraftItemEvent e) { + ItemStack item = e.getCurrentItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (dreamItem instanceof OldCreakingAxe) { + if (e.getWhoClicked() instanceof Player player) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/SleepQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SleepQuest.java new file mode 100644 index 000000000..6e805282a --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SleepQuest.java @@ -0,0 +1,47 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.events.DreamEnterEvent; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class SleepQuest extends MilestoneQuest implements Listener { + + public SleepQuest() { + super( + "Dormir, c'est la vie", + List.of( + "§fEntrer dans la §ddimension des rêves", + "§8§oQue c'est bon de dormir pour se reposer de la dure vie des villes..." + ), + Material.RED_BED, + MilestoneType.DREAM, + DreamSteps.SLEEP, + new QuestTier(1), + List.of( + "§6ZZZzzz... que se passe-t-il !? Suis-je en train de rêver ? Ce... monde à l'air si différent de l'Overworld !", + "§3Voyageur : Que..? Comment est-ce possible ??! Je pensais être le seul ici. Et cela fait si longtemps que je n'ai vu personne ici...", + "§6Mais, qui es-tu ? Ou es-tu ? et pourquoi me parles-tu ??", + "§3Voyageur : Et bien, bienvenue. Mais chaque chose en son temps. Temps qui va d'ailleurs nous manquer, il faut faire vite, je t'expliquerai tout au fur et à mesure. " + + "Pour l'heure, il faut que tu comprennes cette dimension, apprends ses règles et ses §dcrafts§3." + ) + ); + } + + @EventHandler + public void onDreamEnter(DreamEnterEvent e) { + Player player = e.getPlayer(); + + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulOrbQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulOrbQuest.java new file mode 100644 index 000000000..de4aed7d7 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulOrbQuest.java @@ -0,0 +1,54 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.AltarCraftingEvent; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.orb.SoulOrb; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.List; + +public class SoulOrbQuest extends MilestoneQuest implements Listener { + public SoulOrbQuest() { + super( + "Il faut un sacrifice !", + List.of( + "§fObtenir l'§dOrbe des Âmes", + "§8§oÂmes dans la poche, permettez moi, par votre pouvoir, d'obtenir votre orbe avec le sacrifice de l'Orbe de Domination." + ), + DreamItemRegistry.getByName("omc_dream:ame_orb").getBest(), + MilestoneType.DREAM, + DreamSteps.SOUL_ORB, + new QuestTier( + 1, + new QuestTextReward("Et de deux ! Maintenant que j'ai l'Orbe des Âmes, je n'ai plus celle de Domination, il faudra donc que j'y retourne en fabriquer. \n" + + "Et où dois-je aller maintenant ? Hmmmm... ces nuages m'intriguent, j'ai l'impression d'y voir un château.", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onSoulOrbCrafting(AltarCraftingEvent e) { + Player player = e.getPlayer(); + if (!DreamUtils.isInDreamWorld(player)) return; + + DreamItem item = e.getCraftedItem(); + if (item == null) return; + if (item instanceof SoulOrb) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + + this.incrementProgressInDream(player.getUniqueId()); + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulsQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulsQuest.java new file mode 100644 index 000000000..b9c65b31a --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/SoulsQuest.java @@ -0,0 +1,57 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.dream.registries.items.loots.Soul; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class SoulsQuest extends MilestoneQuest implements Listener { + public SoulsQuest() { + super( + "Mes amis viennent de l'au-delà", + List.of( + "§fRécuérer §d20 §fâmes", + "§8§oIl me semble avoir vu des créatures volantes rôder vers les grands arbres sombres." + ), + DreamItemRegistry.getByName("omc_dream:soul").getBest(), + MilestoneType.DREAM, + DreamSteps.SOULS, + new QuestTier( + 20, + new QuestTextReward("Quelles sont ces créatures ? Des joueurs morts ?? \n" + + "A vrai dire, je n'ai pas vraiment envie d'y penser, il me faut cette nouvelle orbe.", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onCollectSoul(EntityPickupItemEvent e) { + if (e.getEntity() instanceof Player player) { + if (!DreamUtils.isInDreamWorld(player)) return; + ItemStack baseItem = e.getItem().getItemStack(); + + DreamItem item = DreamItemRegistry.getByItemStack(baseItem); + if (item == null) return; + if (item instanceof Soul) { + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId(), baseItem.getAmount()); + getType().getMilestone().getPlayerData().get(player.getUniqueId()).incrementProgress(baseItem.getAmount()); + } + } + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/quests/TransferableObjectQuest.java b/src/main/java/fr/openmc/core/features/dream/milestone/quests/TransferableObjectQuest.java new file mode 100644 index 000000000..5257eece6 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/dream/milestone/quests/TransferableObjectQuest.java @@ -0,0 +1,54 @@ +package fr.openmc.core.features.dream.milestone.quests; + +import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.TakeFromSingularityEvent; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.dream.models.registry.items.DreamItem; +import fr.openmc.core.features.dream.registries.DreamItemRegistry; +import fr.openmc.core.features.milestones.MilestoneQuest; +import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestonesManager; +import fr.openmc.core.features.quests.objects.QuestTier; +import fr.openmc.core.features.quests.rewards.QuestTextReward; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.Prefix; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +public class TransferableObjectQuest extends MilestoneQuest implements Listener { + + public TransferableObjectQuest() { + super( + "Ce n'était qu'un rêve ?", + List.of( + "§fRécupérer un objet §dtransferable §fdans l'Overworld" + ), + Material.LAPIS_BLOCK, + MilestoneType.DREAM, + DreamSteps.TRANSFERABLE_OBJECT, + new QuestTier( + 1, + new QuestTextReward("", Prefix.DREAM, MessageType.SUCCESS) + ) + ); + } + + @EventHandler + public void onTakeItem(TakeFromSingularityEvent e) { + Player player = e.getPlayer(); + if (DreamUtils.isInDreamWorld(player)) return; + + ItemStack item = e.getItem(); + if (item == null) return; + + DreamItem dreamItem = DreamItemRegistry.getByItemStack(item); + if (dreamItem == null) return; + if (MilestonesManager.getPlayerStep(getType(), player) != getStep().ordinal()) return; + this.incrementProgressInDream(player.getUniqueId()); + } +} diff --git a/src/main/java/fr/openmc/core/features/dream/models/db/DreamPlayer.java b/src/main/java/fr/openmc/core/features/dream/models/db/DreamPlayer.java index 530c48d22..e12e42001 100644 --- a/src/main/java/fr/openmc/core/features/dream/models/db/DreamPlayer.java +++ b/src/main/java/fr/openmc/core/features/dream/models/db/DreamPlayer.java @@ -20,6 +20,7 @@ import lombok.Setter; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -91,17 +92,18 @@ public void cancelTimeTask() { public void scheduleTimeTask() { this.timeTask = Bukkit.getScheduler().runTaskTimer(OMCPlugin.getInstance(), () -> { - this.dreamTime -= 1; - - if (dreamTime <= 0) { - Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> - Bukkit.getServer().getPluginManager().callEvent(new DreamEndEvent(this.player)) - ); - this.cancelTimeTask(); - return; - } - - DreamBossBar.update(player, Math.min(1, (float) this.getDreamTime() / this.getMaxDreamTime())); + if (!player.getGameMode().equals(GameMode.SURVIVAL)) return; + if (DreamManager.isPlayerInMilestoneDialog(player)) return; + if (dreamTime <= 0) { + Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> + Bukkit.getServer().getPluginManager().callEvent(new DreamEndEvent(this.player)) + ); + this.cancelTimeTask(); + return; + } + + this.dreamTime -= 1; + DreamBossBar.update(player, Math.min(1, (float) this.getDreamTime() / this.getMaxDreamTime())); }, 0L, 20L); } diff --git a/src/main/java/fr/openmc/core/features/dream/models/registry/DreamEnchantment.java b/src/main/java/fr/openmc/core/features/dream/models/registry/DreamEnchantment.java index 1f40d8410..e7626be29 100644 --- a/src/main/java/fr/openmc/core/features/dream/models/registry/DreamEnchantment.java +++ b/src/main/java/fr/openmc/core/features/dream/models/registry/DreamEnchantment.java @@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemType; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @SuppressWarnings("UnstableApiUsage") public abstract class DreamEnchantment { @@ -37,7 +38,7 @@ public abstract class DreamEnchantment { public DreamItem getEnchantedBookItem(int level) { return new DreamItem(getKey().asMinimalString() + level) { @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return getEnchantedBook(level); } diff --git a/src/main/java/fr/openmc/core/features/dream/models/registry/items/DreamItem.java b/src/main/java/fr/openmc/core/features/dream/models/registry/items/DreamItem.java index b1bc5a042..b8afa9e67 100644 --- a/src/main/java/fr/openmc/core/features/dream/models/registry/items/DreamItem.java +++ b/src/main/java/fr/openmc/core/features/dream/models/registry/items/DreamItem.java @@ -7,6 +7,8 @@ import lombok.Getter; import net.kyori.adventure.text.Component; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -14,7 +16,7 @@ @Getter public abstract class DreamItem { - public abstract ItemStack getVanilla(); + public abstract @NotNull ItemStack getVanilla(); private final String name; @@ -33,7 +35,7 @@ protected DreamItem(String name) { public abstract ItemStack getTransferableItem(); - public ItemStack getItemsAdder() { + public @Nullable ItemStack getItemsAdder() { CustomStack stack = CustomStack.getInstance(getName()); return stack != null ? stack.getItemStack() : null; } @@ -122,7 +124,7 @@ private List getGeneratedLoreTransferable() { * * @return Best ItemStack to use for the server */ - public ItemStack getBestTransferable() { + public @NotNull ItemStack getBestTransferable() { ItemStack item; if (!ItemsAdderHook.isHasItemAdder() || getItemsAdder() == null) { item = getVanilla(); @@ -143,7 +145,7 @@ public ItemStack getBestTransferable() { * * @return Best ItemStack to use for the server */ - public ItemStack getBest() { + public @NotNull ItemStack getBest() { ItemStack item; if (!ItemsAdderHook.isHasItemAdder() || getItemsAdder() == null) { item = getVanilla(); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudBoots.java index 94f887610..b39ed4908 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudBoots extends DreamEquipableItem { public CloudBoots(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_BOOTS); item.getItemMeta().itemName(Component.text("Bottes des Nuages")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudChestplate.java index c4f079527..14d53ddd5 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudChestplate extends DreamEquipableItem { public CloudChestplate(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron des Nuages")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudHelmet.java index e2279975a..6431c4ffd 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudHelmet extends DreamEquipableItem { public CloudHelmet(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_HELMET); item.getItemMeta().itemName(Component.text("Casque des Nuages")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudLeggings.java index 9459d1cb4..c8a0d8d89 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cloud/CloudLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudLeggings extends DreamEquipableItem { public CloudLeggings(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières des Nuages")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdBoots.java index 00bc00abc..ac0abb752 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ColdBoots extends DreamEquipableItem { public ColdBoots(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DIAMOND_BOOTS); item.getItemMeta().itemName(Component.text("Bottes Glacées")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdChestplate.java index bb902f169..f1a7260c7 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ColdChestplate extends DreamEquipableItem { public ColdChestplate(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DIAMOND_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron Glacé")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdHelmet.java index 66f5eb672..067f2b855 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ColdHelmet extends DreamEquipableItem { public ColdHelmet(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DIAMOND_HELMET); item.getItemMeta().itemName(Component.text("Casque Glacé")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdLeggings.java index 65c2a9eab..fc8f56f27 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/cold/ColdLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ColdLeggings extends DreamEquipableItem { public ColdLeggings(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DIAMOND_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières Glacées")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingBoots.java index 9d35c1670..d6a5daf88 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldCreakingBoots extends DreamEquipableItem { public OldCreakingBoots(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_BOOTS); item.getItemMeta().itemName(Component.text("Bottes du Vieux Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingChestplate.java index c83843be0..bc0dc9cb2 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldCreakingChestplate extends DreamEquipableItem { public OldCreakingChestplate(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron du Vieux Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingHelmet.java index ae788ddc6..ec3b639de 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldCreakingHelmet extends DreamEquipableItem { public OldCreakingHelmet(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_HELMET); item.getItemMeta().itemName(Component.text("Casque du Vieux Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingLeggings.java index 57b1ea56d..68b87e719 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/creaking/OldCreakingLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldCreakingLeggings extends DreamEquipableItem { public OldCreakingLeggings(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières du Vieux Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamBoots.java index 757478304..accfcb7b3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DreamBoots extends DreamEquipableItem { public DreamBoots(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.NETHERITE_BOOTS); item.getItemMeta().itemName(Component.text("Bottes Oniriques")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamChestplate.java index fdb61c62c..0cde562f7 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DreamChestplate extends DreamEquipableItem { public DreamChestplate(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.NETHERITE_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron Onirique")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamHelmet.java index 0ce372e4b..071ee6a8f 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DreamHelmet extends DreamEquipableItem { public DreamHelmet(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.NETHERITE_HELMET); item.getItemMeta().itemName(Component.text("Casque Onirique")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamLeggings.java index ba27d3367..9b5e8e53e 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/dream/DreamLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DreamLeggings extends DreamEquipableItem { public DreamLeggings(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.NETHERITE_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières Oniriques")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaBoots.java index 104cc5a2e..9af4839e3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class PyjamaBoots extends DreamItem { public PyjamaBoots(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.LEATHER_BOOTS); item.getItemMeta().itemName(Component.text("Bottes de Pyjama")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaChestplate.java index d06b14826..428710203 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class PyjamaChestplate extends DreamItem { public PyjamaChestplate(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.LEATHER_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron de Pyjama")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaHelmet.java index 9c33e5e92..586b66dd9 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class PyjamaHelmet extends DreamItem { public PyjamaHelmet(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.LEATHER_HELMET); item.getItemMeta().itemName(Component.text("Casque de Pyjama")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaLeggings.java index f191e6af1..0b6fe6dfe 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/pyjama/PyjamaLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class PyjamaLeggings extends DreamItem { public PyjamaLeggings(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.LEATHER_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières de Pyjama")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulBoots.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulBoots.java index ddbcfef94..00c0d2ebf 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulBoots.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulBoots.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulBoots extends DreamEquipableItem { public SoulBoots(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_BOOTS); item.getItemMeta().itemName(Component.text("Bottes des Âmes")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulChestplate.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulChestplate.java index 4ed292c73..66d184a0c 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulChestplate.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulChestplate.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulChestplate extends DreamEquipableItem { public SoulChestplate(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_CHESTPLATE); item.getItemMeta().itemName(Component.text("Plastron des Âmes")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulHelmet.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulHelmet.java index 48b0fb491..eca3d50eb 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulHelmet.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulHelmet.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulHelmet extends DreamEquipableItem { public SoulHelmet(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_HELMET); item.getItemMeta().itemName(Component.text("Casque des Âmes")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulLeggings.java b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulLeggings.java index 7d254498c..4351cdd79 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulLeggings.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/armors/soul/SoulLeggings.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulLeggings extends DreamEquipableItem { public SoulLeggings(String name) { @@ -37,7 +38,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_LEGGINGS); item.getItemMeta().itemName(Component.text("Jambières des Âmes")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CorruptedSculk.java b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CorruptedSculk.java index 658a71681..e2e210515 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CorruptedSculk.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CorruptedSculk.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CorruptedSculk extends DreamItem { public CorruptedSculk(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.SCULK); item.getItemMeta().itemName(Component.text("Sculk Corrompu")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CraftingTable.java b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CraftingTable.java index aaa7f9409..5a3e08dc3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CraftingTable.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/CraftingTable.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CraftingTable extends DreamItem { public CraftingTable(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.CRAFTING_TABLE); item.getItemMeta().itemName(Component.text("Table de Craft")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/EternalCampFire.java b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/EternalCampFire.java index fa55284a1..75f34fd97 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/EternalCampFire.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/EternalCampFire.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class EternalCampFire extends DreamItem { public EternalCampFire(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.CAMPFIRE); item.getItemMeta().itemName(Component.text("Feu de Camp Éternel")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/HardStone.java b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/HardStone.java index 1d6397a2f..729b5e8bc 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/HardStone.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/HardStone.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class HardStone extends DreamItem { public HardStone(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DEEPSLATE); item.getItemMeta().itemName(Component.text("Pierre Dure")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/OldPaleOakWood.java b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/OldPaleOakWood.java index 4722b3ffb..6aea2ec56 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/OldPaleOakWood.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/blocks/OldPaleOakWood.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldPaleOakWood extends DreamItem { public OldPaleOakWood(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.PALE_OAK_WOOD); item.getItemMeta().itemName(Component.text("Vieux Chêne Pale")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsAywen.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsAywen.java index e6ddbd259..3f9ec6e65 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsAywen.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsAywen.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsAywen extends DreamItem { public ChipsAywen(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Aywen")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsDihydrogene.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsDihydrogene.java index 105a4afc5..faeff3b1f 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsDihydrogene.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsDihydrogene.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsDihydrogene extends DreamItem { public ChipsDihydrogene(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Dihydrogène")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsJimmy.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsJimmy.java index f5fb50e5e..1561954b3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsJimmy.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsJimmy.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsJimmy extends DreamItem { public ChipsJimmy(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Jimmy")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsLait2Margouta.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsLait2Margouta.java index 7c82824b7..0f1d644eb 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsLait2Margouta.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsLait2Margouta.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsLait2Margouta extends DreamItem { public ChipsLait2Margouta(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Lait de Margouta")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsNature.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsNature.java index 80f338286..56a48ac87 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsNature.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsNature.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsNature extends DreamItem { public ChipsNature(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Nature")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsSansPlomb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsSansPlomb.java index 2a8a1d91b..77db40c42 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsSansPlomb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsSansPlomb.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsSansPlomb extends DreamItem { public ChipsSansPlomb(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Sans Plomb 95")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsTerre.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsTerre.java index 093c34e9f..e5a68ca55 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsTerre.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/ChipsTerre.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class ChipsTerre extends DreamItem { public ChipsTerre(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Chips goût Terre")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/Somnifere.java b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/Somnifere.java index 36c5d06d0..452c872d0 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/Somnifere.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/consumable/Somnifere.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Somnifere extends DreamItem { public Somnifere(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DRIED_KELP); item.getItemMeta().itemName(Component.text("Somnifère")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/CokkedPoissonion.java b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/CokkedPoissonion.java index 47627130b..cd77680d3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/CokkedPoissonion.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/CokkedPoissonion.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CokkedPoissonion extends DreamItem { public CokkedPoissonion(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.PUFFERFISH); item.getItemMeta().itemName(Component.text("Poissonion Cuit")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/DockerFish.java b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/DockerFish.java index 56b4a9d67..8d0964bfb 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/DockerFish.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/DockerFish.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DockerFish extends DreamItem { public DockerFish(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.TROPICAL_FISH); item.getItemMeta().itemName(Component.text("Poisson Docker")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/MoonFish.java b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/MoonFish.java index e37f5cf87..48502c59c 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/MoonFish.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/MoonFish.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class MoonFish extends DreamItem { public MoonFish(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.SALMON); item.getItemMeta().itemName(Component.text("Poisson-lune")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/Poissonion.java b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/Poissonion.java index 0e7950ab7..3bcb41222 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/Poissonion.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/Poissonion.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Poissonion extends DreamItem { public Poissonion(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.PUFFERFISH); item.getItemMeta().itemName(Component.text("Poissonion")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/SunFish.java b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/SunFish.java index 5f504074f..8b0840551 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/SunFish.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/fishes/SunFish.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SunFish extends DreamItem { public SunFish(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.COOKED_SALMON); item.getItemMeta().itemName(Component.text("Poisson-soleil")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/BurnCoal.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/BurnCoal.java index eaf06cd9a..e8a35ce05 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/BurnCoal.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/BurnCoal.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class BurnCoal extends DreamItem { public BurnCoal(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.CHARCOAL); item.getItemMeta().itemName(Component.text("Charbon brulé")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CloudKey.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CloudKey.java index 3399110f6..fea5deda5 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CloudKey.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CloudKey.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudKey extends DreamItem { public CloudKey(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.OMINOUS_TRIAL_KEY); item.getItemMeta().itemName(Component.text("Clé nuageuse")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CorruptedString.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CorruptedString.java index 7b70f27c1..f7c704593 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CorruptedString.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CorruptedString.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CorruptedString extends DreamItem { public CorruptedString(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.STRING); item.getItemMeta().itemName(Component.text("Fil corrompu")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CreakingHeart.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CreakingHeart.java index 4ec64e216..b32025c03 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CreakingHeart.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/CreakingHeart.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CreakingHeart extends DreamItem { public CreakingHeart(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.RESIN_CLUMP); item.getItemMeta().itemName(Component.text("Coeur de Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Ewenite.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Ewenite.java index 8fceceb62..a61d81ca3 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Ewenite.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Ewenite.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Ewenite extends DreamItem { public Ewenite(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.ANCIENT_DEBRIS); item.getItemMeta().itemName(Component.text("Ewenite")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Glacite.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Glacite.java index b87dbc7cd..284c4eae0 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Glacite.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Glacite.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Glacite extends DreamItem { public Glacite(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.BLUE_ICE); item.getItemMeta().itemName(Component.text("Glacite")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Soul.java b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Soul.java index 1afc6f076..52565fa99 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Soul.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/loots/Soul.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Soul extends DreamItem { public Soul(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.PAPER); item.getItemMeta().itemName(Component.text("Âme")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/CloudOrb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/CloudOrb.java index c4df56f6c..ed1c051e8 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/CloudOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/CloudOrb.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudOrb extends DreamItem { /** @@ -31,7 +32,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return ItemStack.of(Material.HEART_OF_THE_SEA); } } diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/DominationOrb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/DominationOrb.java index e3d201f20..371033be8 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/DominationOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/DominationOrb.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class DominationOrb extends DreamItem { /** @@ -31,7 +32,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return ItemStack.of(Material.HEART_OF_THE_SEA); } } diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/GlaciteOrb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/GlaciteOrb.java index a6ba37437..61d339013 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/GlaciteOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/GlaciteOrb.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class GlaciteOrb extends DreamItem { /** @@ -31,7 +32,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return ItemStack.of(Material.HEART_OF_THE_SEA); } } diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/MudOrb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/MudOrb.java index a85f09c63..b76a64236 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/MudOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/MudOrb.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class MudOrb extends DreamItem { /** @@ -31,7 +32,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return ItemStack.of(Material.HEART_OF_THE_SEA); } } diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/Singularity.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/Singularity.java index b035bbb07..1b7bd4d5b 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/Singularity.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/Singularity.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class Singularity extends DreamUsableItem { public Singularity(String name) { @@ -30,7 +31,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.HEART_OF_THE_SEA); item.getItemMeta().itemName(Component.text("Singularité")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/SoulOrb.java b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/SoulOrb.java index bdfebee81..7ad09697e 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/orb/SoulOrb.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/orb/SoulOrb.java @@ -4,6 +4,7 @@ import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulOrb extends DreamItem { /** @@ -31,7 +32,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { return ItemStack.of(Material.HEART_OF_THE_SEA); } } diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CloudFishingRod.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CloudFishingRod.java index 44f71c099..8f1fdf49d 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CloudFishingRod.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CloudFishingRod.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CloudFishingRod extends DreamItem { public CloudFishingRod(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.FISHING_ROD); item.getItemMeta().itemName(Component.text("Canne à pêche nuageuse")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CrystalizedPickaxe.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CrystalizedPickaxe.java index ffdabb2a9..ab3935be5 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CrystalizedPickaxe.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/CrystalizedPickaxe.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class CrystalizedPickaxe extends DreamItem { public CrystalizedPickaxe(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE); item.getItemMeta().itemName(Component.text("Pioche Crystalisée")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MecanicPickaxe.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MecanicPickaxe.java index 3ad68d118..a9db2c3d9 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MecanicPickaxe.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MecanicPickaxe.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class MecanicPickaxe extends DreamItem { public MecanicPickaxe(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.NETHERITE_PICKAXE); item.getItemMeta().itemName(Component.text("Pioche Mécanisée")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java index f94d646e0..78985a627 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java @@ -15,6 +15,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; import java.util.UUID; @@ -42,7 +43,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.STICK); item.getItemMeta().itemName(Component.text("Détecteur à métaux")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MeteoWand.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MeteoWand.java index c253fd697..d8ad8ec14 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MeteoWand.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MeteoWand.java @@ -16,6 +16,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; +import org.jspecify.annotations.NonNull; public class MeteoWand extends DreamUsableItem { private static final long COOLDOWN_METEO_WAND = 8 * 60 * 60 * 1000L; // 2 jours @@ -39,7 +40,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.STICK); item.getItemMeta().itemName(Component.text("Meteo Wand")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/OldCreakingAxe.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/OldCreakingAxe.java index 4eb208e6d..94a471fc8 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/OldCreakingAxe.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/OldCreakingAxe.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class OldCreakingAxe extends DreamItem { public OldCreakingAxe(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_AXE); item.getItemMeta().itemName(Component.text("Hache du Vieux Creaking")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/SoulAxe.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/SoulAxe.java index 16f619070..16863664b 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/SoulAxe.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/SoulAxe.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NonNull; public class SoulAxe extends DreamItem { public SoulAxe(String name) { @@ -27,7 +28,7 @@ public ItemStack getTransferableItem() { } @Override - public ItemStack getVanilla() { + public @NonNull ItemStack getVanilla() { ItemStack item = new ItemStack(Material.IRON_AXE); item.getItemMeta().itemName(Component.text("Hache des Âmes")); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/mobs/Breezy.java b/src/main/java/fr/openmc/core/features/dream/registries/mobs/Breezy.java index 78800de75..3a1768537 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/mobs/Breezy.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/mobs/Breezy.java @@ -1,6 +1,7 @@ package fr.openmc.core.features.dream.registries.mobs; import fr.openmc.core.OMCPlugin; +import fr.openmc.core.features.dream.DreamManager; import fr.openmc.core.features.dream.DreamUtils; import fr.openmc.core.features.dream.generation.DreamDimensionManager; import fr.openmc.core.features.dream.models.registry.DreamMob; @@ -66,6 +67,7 @@ public static void applyIA(Breeze breeze) { breeze.getNearbyEntities(15, 15, 15).stream() .filter(e -> e instanceof Player) .map(e -> (Player) e) + .filter(p -> p.getGameMode().equals(GameMode.SURVIVAL)) .min(Comparator.comparingDouble(p -> p.getLocation().distanceSquared(breeze.getLocation()))) .ifPresent(target -> shootWindCharge(breeze, target)); @@ -106,11 +108,11 @@ public void onProjectileCollide(ProjectileHitEvent event) { for (Entity e : world.getNearbyEntities(loc, 1.5, 1.5, 1.5)) { if (e instanceof Player p) { + if (DreamManager.isPlayerInMilestoneDialog(p)) continue; DreamUtils.removeDreamTime(p, this.getDamageTime(), true); p.setVelocity(p.getLocation().toVector().subtract(loc.toVector()).normalize().multiply(1.2).setY(0.6)); } } - charge.remove(); } } \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/milestones/Milestone.java b/src/main/java/fr/openmc/core/features/milestones/Milestone.java index 8358b023b..71d563fa0 100644 --- a/src/main/java/fr/openmc/core/features/milestones/Milestone.java +++ b/src/main/java/fr/openmc/core/features/milestones/Milestone.java @@ -10,18 +10,15 @@ import java.util.UUID; public interface Milestone { - HashMap playerData = new HashMap<>(); - + /** * Returns the player data for the milestone. * This is a static method that returns a HashMap containing player UUIDs and their corresponding MilestoneModel. * * @return A HashMap containing player UUIDs and their MilestoneModel. */ - default HashMap getPlayerData() { - return playerData; - } - + HashMap getPlayerData(); + /** * Returns the name of the milestone. * diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneCommand.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneCommand.java index 9bebd33a8..646af21ee 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestoneCommand.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneCommand.java @@ -1,6 +1,8 @@ package fr.openmc.core.features.milestones; +import fr.openmc.core.features.dream.DreamUtils; import fr.openmc.core.features.milestones.menus.MainMilestonesMenu; +import fr.openmc.core.features.milestones.menus.MilestoneMenu; import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; import revxrsal.commands.annotation.CommandPlaceholder; @@ -11,6 +13,7 @@ public class MilestoneCommand { @CommandPlaceholder() void mainCommand(Player player) { - new MainMilestonesMenu(player).open(); + if (DreamUtils.isInDreamWorld(player)) new MilestoneMenu(player, MilestoneType.DREAM.getMilestone()).open(); + else new MainMilestonesMenu(player).open(); } } diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneModel.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneModel.java index 3fcce22cf..5e20fbdcb 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestoneModel.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneModel.java @@ -37,4 +37,8 @@ public MilestoneModel(UUID uuid, MilestoneType type, int step, int progress) { public void incrementProgress() { this.progress++; } + + public void incrementProgress(int progress) { + this.progress += progress; + } } diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneQuest.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneQuest.java index fed40f108..fe5e4eba5 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestoneQuest.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneQuest.java @@ -1,5 +1,7 @@ package fr.openmc.core.features.milestones; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.features.milestones.menus.MilestoneDialog; import fr.openmc.core.features.quests.objects.Quest; import fr.openmc.core.features.quests.objects.QuestTier; import fr.openmc.core.features.quests.rewards.QuestMethodsReward; @@ -8,6 +10,7 @@ import org.bukkit.inventory.ItemStack; import java.util.List; +import java.util.UUID; @Getter public class MilestoneQuest extends Quest { @@ -16,6 +19,11 @@ public class MilestoneQuest extends Quest { protected final Enum step; public MilestoneQuest(String name, List baseDescription, Material icon, MilestoneType type, Enum step, QuestTier quest) { + this(name, baseDescription, new ItemStack(icon), type, step, quest); + + } + + public MilestoneQuest(String name, List baseDescription, ItemStack icon, MilestoneType type, Enum step, QuestTier quest) { super(name, baseDescription, icon); this.type = type; this.step = step; @@ -24,7 +32,42 @@ public MilestoneQuest(String name, List baseDescription, Material icon, )); } - public MilestoneQuest(String name, List baseDescription, ItemStack icon, MilestoneType type, Enum step, QuestTier quest) { - this(name, baseDescription, icon.getType(), type, step, quest); + public MilestoneQuest(String name, List baseDescription, Material icon, MilestoneType type, DreamSteps step, QuestTier quest, List dialogs) { + this(name, baseDescription, new ItemStack(icon), type, step, quest, dialogs); + + } + + public MilestoneQuest(String name, List baseDescription, ItemStack icon, MilestoneType type, DreamSteps step, QuestTier quest, List dialogs) { + super(name, baseDescription, icon); + this.type = type; + this.step = step; + this.addTier(quest.addRewards( + new QuestMethodsReward(player -> MilestoneUtils.completeStep(type, player, step)), + new QuestMethodsReward(player -> { + player.closeInventory(); + MilestoneDialog.send(player, step, dialogs); + }) + )); + } + + /** + * Increment the progress for the quest for a player authorizing Dream world + * + * @param playerUUID The UUID of the player + */ + public void incrementProgressInDream(UUID playerUUID) { + incrementProgress(playerUUID, 1, true); + } + + + /** + * Increment the progress of the quest for a player by a specified amount authorizing Dream world. + *

+ * This method will check if the quest is fully completed, and if not, it will increase the progress. + * @param playerUUID The UUID of the player + * @param amount The amount to increment the progress by + */ + public void incrementProgressInDream(UUID playerUUID, int amount) { + incrementProgress(playerUUID, amount, true); } } diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneSnake.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneSnake.java new file mode 100644 index 000000000..f317bf254 --- /dev/null +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneSnake.java @@ -0,0 +1,65 @@ +package fr.openmc.core.features.milestones; + +import java.util.ArrayList; +import java.util.List; + +public record MilestoneSnake(List nodes, List links) { + + public static MilestoneSnake buildSnake(int count, int[] columns, int startRow, int endRow) { + List nodes = new ArrayList<>(); + List links = new ArrayList<>(); + int placed = 0; + + for (int colIdx = 0; colIdx < columns.length && placed < count; colIdx++) { + int col = columns[colIdx]; + int nextPrimary = (colIdx + 1 < columns.length) ? columns[colIdx + 1] : -1; + boolean topDown = (colIdx % 2 == 0); + + if (topDown) { + // haut + if (placed < count) { + nodes.add(slotAt(startRow, col)); + placed++; + if (placed < count) { + for (int r = startRow + 1; r <= endRow - 1; r++) + links.add(slotAt(r, col)); + } + } + // bas + if (placed < count) { + nodes.add(slotAt(endRow, col)); + placed++; + if (placed < count && nextPrimary != -1) { + for (int c = col + 1; c < nextPrimary; c++) + links.add(slotAt(endRow, c)); + } + } + } else { + // bas + if (placed < count) { + nodes.add(slotAt(endRow, col)); + placed++; + if (placed < count) { + for (int r = endRow - 1; r >= startRow + 1; r--) + links.add(slotAt(r, col)); + } + } + + // haut + if (placed < count) { + nodes.add(slotAt(startRow, col)); + placed++; + if (placed < count && nextPrimary != -1) { + for (int c = col + 1; c < nextPrimary; c++) + links.add(slotAt(startRow, c)); + } + } + } + } + return new MilestoneSnake(nodes, links); + } + + private static int slotAt(int row, int col) { + return row * 9 + col; + } +} \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneType.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneType.java index 6979f390f..64555b63d 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestoneType.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneType.java @@ -1,20 +1,25 @@ package fr.openmc.core.features.milestones; +import fr.openmc.core.features.dream.milestone.DreamMilestone; import fr.openmc.core.features.milestones.tutorial.TutorialMilestone; import lombok.Getter; @Getter public enum MilestoneType { TUTORIAL( - new TutorialMilestone(), + new TutorialMilestone(), true - ); + ), + DREAM( + new DreamMilestone(), + false + ); private final Milestone milestone; - private final boolean boosBar; + private final boolean bossBar; MilestoneType(Milestone milestone, boolean bossBar) { this.milestone = milestone; - this.boosBar = bossBar; + this.bossBar = bossBar; } } diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestoneUtils.java b/src/main/java/fr/openmc/core/features/milestones/MilestoneUtils.java index e1e185e18..291a898bf 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestoneUtils.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestoneUtils.java @@ -3,7 +3,6 @@ import fr.openmc.core.features.displays.bossbar.BossbarManager; import fr.openmc.core.features.displays.bossbar.BossbarsType; import fr.openmc.core.features.milestones.tutorial.TutorialBossBar; -import fr.openmc.core.features.milestones.tutorial.TutorialMilestone; import fr.openmc.core.features.milestones.tutorial.TutorialStep; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; @@ -18,7 +17,7 @@ public static void completeStep(MilestoneType type, Player player, Enum step) { MilestonesManager.getMilestoneData(type).get(player.getUniqueId()).setProgress(0); - if (type != MilestoneType.TUTORIAL) return; //TODO Refaire les bossbars + if (type != MilestoneType.TUTORIAL) return; //TODO Refaire les boss bars int maxStep = TutorialStep.values().length; @@ -45,7 +44,7 @@ public static void setBossBar(Player player) { if (step >= maxStep) return; String progressStr = ""; if (step == 0) { - progressStr = " (" + TutorialMilestone.playerData.get(player.getUniqueId()).getProgress() + " / 30)"; + progressStr = " (" + MilestoneType.TUTORIAL.getMilestone().getPlayerData().get(player.getUniqueId()).getProgress() + " / 30)"; } TutorialBossBar.addTutorialBossBarForPlayer( diff --git a/src/main/java/fr/openmc/core/features/milestones/MilestonesManager.java b/src/main/java/fr/openmc/core/features/milestones/MilestonesManager.java index 61f0c0ecc..3f0b841ce 100644 --- a/src/main/java/fr/openmc/core/features/milestones/MilestonesManager.java +++ b/src/main/java/fr/openmc/core/features/milestones/MilestonesManager.java @@ -22,8 +22,8 @@ public class MilestonesManager { public static void init() { Arrays.stream(MilestoneType.values()).toList().forEach(milestoneType -> registerMilestone(milestoneType.getMilestone())); - - loadMilestonesData(); + + loadMilestonesData(); loadMilestonesProgress(); registerMilestoneCommand(); @@ -51,12 +51,12 @@ public static void initDB(ConnectionSource connectionSource) throws SQLException public static void loadMilestonesData() { try { List milestoneData = millestoneDao.queryForAll(); - for (MilestoneModel data : milestoneData) { - MilestoneType type = MilestoneType.valueOf(data.getType()); + MilestoneType type = MilestoneType.valueOf(data.getType()); Milestone milestone = type.getMilestone(); - milestone.getPlayerData().put(data.getUUID(), data); + milestone.getPlayerData().put(data.getUUID(), data); } + OMCPlugin.getInstance().getSLF4JLogger().info("Milestones loaded successfully from the database!"); } catch (SQLException e) { throw new RuntimeException(e); } @@ -74,6 +74,7 @@ public static void saveMilestonesData() { millestoneDao.createOrUpdate(model); } } + OMCPlugin.getInstance().getSLF4JLogger().info("Milestones saved successfully to the database!"); } catch (SQLException e) { throw new RuntimeException(e); } @@ -84,6 +85,7 @@ public static void saveMilestonesData() { */ public static void loadMilestonesProgress() { for (Milestone milestone : milestones) { + if (milestone.getPlayerData().isEmpty()) continue; // Pour tous les joueurs du milestone, la progression est chargée à l'étape actuelle for (Map.Entry playerData : milestone.getPlayerData().entrySet()) { milestone.getSteps().get(playerData.getValue().getStep()).setProgress(playerData.getKey(), playerData.getValue().getProgress()); @@ -168,7 +170,6 @@ public static void registerMilestone(Milestone milestone) { milestones.add(milestone); registerQuestMilestone(milestone); - } /** diff --git a/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java b/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java index 7ec4785a0..c6e9ad7ca 100644 --- a/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java +++ b/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java @@ -7,7 +7,6 @@ import fr.openmc.core.features.city.CityManager; import fr.openmc.core.features.city.menu.NoCityMenu; import fr.openmc.core.features.city.sub.milestone.menu.CityMilestoneMenu; -import fr.openmc.core.features.milestones.MilestoneType; import fr.openmc.core.features.milestones.MilestonesManager; import net.kyori.adventure.text.Component; import org.bukkit.Material; @@ -53,15 +52,11 @@ public void onInventoryClick(InventoryClickEvent click) { Player player = getOwner(); MilestonesManager.getRegisteredMilestones().forEach(milestone -> { - if (milestone.getType().equals(MilestoneType.TUTORIAL)) { - inventory.put(10, new ItemBuilder(this, milestone.getIcon(), itemMeta -> { - itemMeta.displayName(Component.text(milestone.getName())); - itemMeta.lore(milestone.getDescription()); - itemMeta.setEnchantmentGlintOverride(MilestonesManager.getPlayerStep(milestone.getType(), player) + 1 >= milestone.getSteps().size()); - }).setOnClick(event -> { - milestone.getMenu(player).open(); - })); - } + inventory.put(10 + (milestone.getType().ordinal() * 2), new ItemBuilder(this, milestone.getIcon(), itemMeta -> { + itemMeta.displayName(Component.text(milestone.getName())); + itemMeta.lore(milestone.getDescription()); + itemMeta.setEnchantmentGlintOverride(MilestonesManager.getPlayerStep(milestone.getType(), player) + 1 >= milestone.getSteps().size()); + }).setOnClick(event -> milestone.getMenu(player).open())); }); List loreMilestoneVille = new ArrayList<>(); @@ -81,11 +76,7 @@ public void onInventoryClick(InventoryClickEvent click) { loreMilestoneVille.add(Component.empty()); loreMilestoneVille.add(Component.text("§e§lCLIQUEZ ICI POUR ACCEDER A VOTRE MILESTONE")); } - - inventory.put(12, new ItemBuilder(this, Material.SCULK, itemMeta -> { - itemMeta.displayName(Component.text(" §kd §r§cComming soon §kr")); - })); - + inventory.put(14, new ItemBuilder(this, Material.SEA_LANTERN, itemMeta -> { itemMeta.displayName(Component.text("§3Milestone des villes")); itemMeta.lore(loreMilestoneVille); @@ -96,10 +87,10 @@ public void onInventoryClick(InventoryClickEvent click) { new CityMilestoneMenu(player, playerCity).open(); } })); - - inventory.put(16, new ItemBuilder(this, Material.DEAD_BUBBLE_CORAL_BLOCK, itemMeta -> { - itemMeta.displayName(Component.text(" §ks §cComming soon §ke")); - })); + + inventory.put(16, new ItemBuilder(this, Material.DEAD_BUBBLE_CORAL_BLOCK, itemMeta -> { + itemMeta.displayName(Component.text(" §ks §cComming soon §ke")); + })); inventory.put(35, new ItemBuilder(this, Material.ARROW, itemMeta -> itemMeta.displayName(Component.text("§r§aRetour")), true)); diff --git a/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneDialog.java b/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneDialog.java new file mode 100644 index 000000000..ea9ca57db --- /dev/null +++ b/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneDialog.java @@ -0,0 +1,86 @@ +package fr.openmc.core.features.milestones.menus; + +import fr.openmc.core.OMCPlugin; +import fr.openmc.core.features.dream.DreamManager; +import fr.openmc.core.features.dream.milestone.DreamSteps; +import fr.openmc.core.utils.dialog.ButtonType; +import io.papermc.paper.dialog.Dialog; +import io.papermc.paper.registry.data.dialog.ActionButton; +import io.papermc.paper.registry.data.dialog.DialogBase; +import io.papermc.paper.registry.data.dialog.action.DialogAction; +import io.papermc.paper.registry.data.dialog.body.DialogBody; +import io.papermc.paper.registry.data.dialog.type.DialogType; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickCallback; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class MilestoneDialog { + + public static void send(Player player, Enum step, List dialogs) { + List body = new ArrayList<>(); + + for (int i = 0; i < 1; i++) { + String d = dialogs.get(i); + body.add(DialogBody.plainMessage(Component.text(d), 500)); + } + + ButtonType btn = (dialogs.size() == 1) ? ButtonType.FINISH : ButtonType.NEXT; + + Dialog dialog = Dialog.create(builder -> builder.empty() + .base(DialogBase.builder(Component.text((step.ordinal() + 1) + "/" + DreamSteps.values().length)) + .body(body) + .canCloseWithEscape(true) + .build() + ) + .type(DialogType.notice( + ActionButton.builder(Component.text(btn.getLabel())) + .action(DialogAction.customClick((response, audience) -> { + player.closeInventory(); + if (dialogs.size() == 1) return; + send(player, step, dialogs, 2); + }, ClickCallback.Options.builder().build())) + .build() + )) + ); + Bukkit.getServer().getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { + player.showDialog(dialog); + DreamManager.addMilestoneDialogPlayer(player); + }, 20); + } + + private static void send(Player player, Enum step, List dialogs, int messageStep) { + List body = new ArrayList<>(); + + for (int i = 0; i < messageStep; i++) { + String d = dialogs.get(i); + body.add(DialogBody.plainMessage(Component.text(d), 500)); + } + + ButtonType btn = (dialogs.size() <= messageStep) ? ButtonType.FINISH : ButtonType.NEXT; + + Dialog dialog = Dialog.create(builder -> builder.empty() + .base(DialogBase.builder(Component.text((step.ordinal() + 1) + "/" + DreamSteps.values().length)) + .body(body) + .canCloseWithEscape(true) + .build() + ) + .type(DialogType.notice( + ActionButton.builder(Component.text(btn.getLabel())) + .action(DialogAction.customClick((response, audience) -> { + player.closeInventory(); + if (dialogs.size() <= messageStep) { + DreamManager.removeMilestoneDialogPlayer(player); + return; + } + send(player, step, dialogs, messageStep + 1); + }, ClickCallback.Options.builder().build())) + .build() + )) + ); + player.showDialog(dialog); + } +} diff --git a/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java b/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java index eb927ae9f..55a1ec291 100644 --- a/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java +++ b/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java @@ -2,6 +2,7 @@ import fr.openmc.api.menulib.Menu; import fr.openmc.core.features.milestones.Milestone; +import fr.openmc.core.features.milestones.MilestoneModel; import fr.openmc.core.features.milestones.MilestoneQuest; import fr.openmc.core.features.milestones.MilestoneType; import fr.openmc.core.features.milestones.menus.MilestoneMenu; @@ -11,10 +12,20 @@ import org.bukkit.inventory.ItemStack; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.UUID; public class TutorialMilestone implements Milestone { - @Override + + private static HashMap playerData = new HashMap<>(); + + @Override + public HashMap getPlayerData() { + return playerData; + } + + @Override public String getName() { return "§7Tutoriel d'OpenMC"; } diff --git a/src/main/java/fr/openmc/core/features/milestones/tutorial/quests/CityCreateQuest.java b/src/main/java/fr/openmc/core/features/milestones/tutorial/quests/CityCreateQuest.java index bdaf28170..c2053abe0 100644 --- a/src/main/java/fr/openmc/core/features/milestones/tutorial/quests/CityCreateQuest.java +++ b/src/main/java/fr/openmc/core/features/milestones/tutorial/quests/CityCreateQuest.java @@ -6,6 +6,7 @@ import fr.openmc.core.features.city.events.MemberJoinEvent; import fr.openmc.core.features.milestones.MilestoneQuest; import fr.openmc.core.features.milestones.MilestoneType; +import fr.openmc.core.features.milestones.MilestoneUtils; import fr.openmc.core.features.milestones.MilestonesManager; import fr.openmc.core.features.milestones.tutorial.TutorialStep; import fr.openmc.core.features.quests.objects.QuestTier; diff --git a/src/main/java/fr/openmc/core/features/quests/objects/Quest.java b/src/main/java/fr/openmc/core/features/quests/objects/Quest.java index 9d6861400..166842eb2 100644 --- a/src/main/java/fr/openmc/core/features/quests/objects/Quest.java +++ b/src/main/java/fr/openmc/core/features/quests/objects/Quest.java @@ -284,6 +284,7 @@ public void completeTier(UUID uuid, int tierIndex) { if (hasEnoughSpace) { reward.giveReward(player); + System.out.println(reward); } else { addPendingRewards(uuid, tierIndex, tier.getRewards()); MessagesManager.sendMessage(player, Component.text("§cVous n'avez pas assez de place dans votre inventaire pour recevoir la récompense !"), Prefix.QUEST, MessageType.WARNING, false); @@ -313,6 +314,7 @@ public void completeTier(UUID uuid, int tierIndex) { player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1.0F, 1.2F); player.playSound(player.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 0.7F, 1.1F); MessagesManager.sendMessage(player, Component.text(message), Prefix.QUEST, MessageType.SUCCESS, true); + System.out.println("title"); } else { addPendingRewards(uuid, tierIndex, tier.getRewards()); } @@ -482,8 +484,19 @@ private void checkTierCompletion(UUID playerUUID) { * @param playerUUID The UUID of the player */ public void incrementProgress(UUID playerUUID) { - incrementProgress(playerUUID, 1); + incrementProgress(playerUUID, 1, false); } + + /** + * Increment the progress of the quest for a player by a specified amount. + *

+ * This method will check if the quest is fully completed, and if not, it will increase the progress. + * @param playerUUID The UUID of the player + * @param amount The amount to increment the progress by + */ + public void incrementProgress(UUID playerUUID, int amount) { + incrementProgress(playerUUID, amount, false); + } /** * Increment the progress of the quest for a player by a specified amount. @@ -491,8 +504,9 @@ public void incrementProgress(UUID playerUUID) { * This method will check if the quest is fully completed, and if not, it will increase the progress. * @param playerUUID The UUID of the player * @param amount The amount to increment the progress by + * @param authorizeDream Set if you authorize to increment progress in Dream world */ - public void incrementProgress(UUID playerUUID, int amount) { + public void incrementProgress(UUID playerUUID, int amount, boolean authorizeDream) { if (!this.isFullyCompleted(playerUUID) && !this.progressLock.getOrDefault(playerUUID, false)) { this.progressLock.put(playerUUID, true); @@ -501,7 +515,7 @@ public void incrementProgress(UUID playerUUID, int amount) { if (onlinePlayer == null) return; if (!onlinePlayer.isOnline()) return; if ((!onlinePlayer.getGameMode().equals(GameMode.SURVIVAL) - || DreamUtils.isInDreamWorld(onlinePlayer))) return; + || (DreamUtils.isInDreamWorld(onlinePlayer)) && !authorizeDream)) return; int currentProgress = this.progress.getOrDefault(playerUUID, 0); int newProgress = currentProgress + amount; diff --git a/src/main/java/fr/openmc/core/features/quests/objects/QuestTier.java b/src/main/java/fr/openmc/core/features/quests/objects/QuestTier.java index 9e73b8ddb..899f9c255 100644 --- a/src/main/java/fr/openmc/core/features/quests/objects/QuestTier.java +++ b/src/main/java/fr/openmc/core/features/quests/objects/QuestTier.java @@ -84,4 +84,14 @@ public QuestTier addReward(QuestReward reward) { this.rewards.add(reward); return new QuestTier(this.target, this.rewards, this.steps, this.requireStepsCompletion); } + + /** + * Add a reward for the quest, then return the quest + * @param rewards the reward to add + * @return the quest + */ + public QuestTier addRewards(QuestReward... rewards) { + this.rewards.addAll(List.of(rewards)); + return new QuestTier(this.target, this.rewards, this.steps, this.requireStepsCompletion); + } } \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/utils/database/DatabaseManager.java b/src/main/java/fr/openmc/core/utils/database/DatabaseManager.java index 4fdacadc6..af60d1e3d 100644 --- a/src/main/java/fr/openmc/core/utils/database/DatabaseManager.java +++ b/src/main/java/fr/openmc/core/utils/database/DatabaseManager.java @@ -73,6 +73,8 @@ public static void init() { PlayerSettingsManager.initDB(connectionSource); CityStatisticsManager.initDB(connectionSource); HalloweenManager.initDB(connectionSource); + + OMCPlugin.getInstance().getSLF4JLogger().info("Database connection initialized!"); } catch (SQLException e) { OMCPlugin.getInstance().getSLF4JLogger().error("Failed to initialize the database connection.", e); throw new RuntimeException(e); diff --git a/src/main/java/fr/openmc/core/utils/dialog/ButtonType.java b/src/main/java/fr/openmc/core/utils/dialog/ButtonType.java index 2cbd06323..6a438550f 100644 --- a/src/main/java/fr/openmc/core/utils/dialog/ButtonType.java +++ b/src/main/java/fr/openmc/core/utils/dialog/ButtonType.java @@ -9,7 +9,10 @@ public enum ButtonType { CANCEL("Annuler"), BACK("Retour"), NEXT("Suivant"), - PREVIOUS("Précédent"); + PREVIOUS("Précédent"), + FINISH("Terminer"), + IGNORE("Ignorer") + ; private final String label; diff --git a/src/main/java/fr/openmc/core/utils/world/WorldUtils.java b/src/main/java/fr/openmc/core/utils/world/WorldUtils.java index b280318d1..75a92097e 100644 --- a/src/main/java/fr/openmc/core/utils/world/WorldUtils.java +++ b/src/main/java/fr/openmc/core/utils/world/WorldUtils.java @@ -1,5 +1,7 @@ package fr.openmc.core.utils.world; +import org.bukkit.Chunk; +import org.bukkit.Location; import org.bukkit.entity.Player; public class WorldUtils { @@ -18,4 +20,15 @@ public static Yaw getYaw(Player p) { } } + /** + * Get the center of the chunk at Y coordinates + * + * @param chunk the chunk + * @param y the Y location + */ + public static Location getChunkCenter(Chunk chunk, double y) { + double x = 16 * chunk.getX() + 8; + double z = 16 * chunk.getZ() + 8; + return new Location(chunk.getWorld(), x, y, z); + } }