diff --git a/api/src/main/java/net/momirealms/customfishing/api/CustomFishingPlugin.java b/api/src/main/java/net/momirealms/customfishing/api/CustomFishingPlugin.java index b68efd9c..c5be8207 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/CustomFishingPlugin.java +++ b/api/src/main/java/net/momirealms/customfishing/api/CustomFishingPlugin.java @@ -33,7 +33,7 @@ public abstract class CustomFishingPlugin extends JavaPlugin { protected LootManager lootManager; protected FishingManager fishingManager; protected EffectManager effectManager; - protected MobManager mobManager; + protected EntityManager entityManager; protected BlockManager blockManager; protected AdventureManager adventure; protected BagManager bagManager; @@ -87,8 +87,8 @@ public abstract class CustomFishingPlugin extends JavaPlugin { return blockManager; } - public MobManager getMobManager() { - return mobManager; + public EntityManager getEntityManager() { + return entityManager; } public ItemManager getItemManager() { diff --git a/api/src/main/java/net/momirealms/customfishing/api/manager/MobManager.java b/api/src/main/java/net/momirealms/customfishing/api/manager/EntityManager.java similarity index 69% rename from api/src/main/java/net/momirealms/customfishing/api/manager/MobManager.java rename to api/src/main/java/net/momirealms/customfishing/api/manager/EntityManager.java index 7ae8d53d..b36be942 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/manager/MobManager.java +++ b/api/src/main/java/net/momirealms/customfishing/api/manager/EntityManager.java @@ -18,15 +18,15 @@ package net.momirealms.customfishing.api.manager; import net.momirealms.customfishing.api.mechanic.loot.Loot; -import net.momirealms.customfishing.api.mechanic.mob.MobLibrary; +import net.momirealms.customfishing.api.mechanic.entity.EntityLibrary; import org.bukkit.Location; -public interface MobManager { - boolean registerMobLibrary(MobLibrary mobLibrary); +public interface EntityManager { + boolean registerEntityLibrary(EntityLibrary entityLibrary); - boolean unregisterMobLibrary(String lib); + boolean unregisterEntityLibrary(String lib); - boolean unregisterMobLibrary(MobLibrary mobLibrary); + boolean unregisterEntityLibrary(EntityLibrary entityLibrary); - void summonMob(Location hookLocation, Location playerLocation, Loot loot); + void summonEntity(Location hookLocation, Location playerLocation, Loot loot); } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/GlobalSettings.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/GlobalSettings.java index debdb241..7648ce34 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/GlobalSettings.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/GlobalSettings.java @@ -11,7 +11,7 @@ import java.util.Map; public class GlobalSettings { - public static HashMap lootActions = new HashMap<>(); + public static HashMap itemActions = new HashMap<>(); public static HashMap rodActions = new HashMap<>(); public static HashMap baitActions = new HashMap<>(); @@ -21,7 +21,7 @@ public class GlobalSettings { if (entry.getValue() instanceof ConfigurationSection inner) { HashMap map = CustomFishingPlugin.get().getActionManager().getActionMap(inner); switch (entry.getKey()) { - case "loot" -> lootActions = map; + case "item" -> itemActions = map; case "rod" -> rodActions = map; case "bait" -> baitActions = map; } @@ -30,13 +30,13 @@ public class GlobalSettings { } public static void unload() { - lootActions.clear(); + itemActions.clear(); rodActions.clear(); baitActions.clear(); } - public static void triggerLootActions(ActionTrigger trigger, Condition condition) { - Action[] actions = lootActions.get(trigger); + public static void triggerItemActions(ActionTrigger trigger, Condition condition) { + Action[] actions = itemActions.get(trigger); if (actions != null) { for (Action action : actions) { action.trigger(condition); diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobConfig.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityConfig.java similarity index 82% rename from api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobConfig.java rename to api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityConfig.java index 4cd335ea..8590a413 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobConfig.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityConfig.java @@ -15,13 +15,13 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.api.mechanic.mob; +package net.momirealms.customfishing.api.mechanic.entity; import java.util.Map; -public class MobConfig implements MobSettings { +public class EntityConfig implements EntitySettings { - private String mob; + private String entity; private double horizontalVector; private double verticalVector; private Map propertyMap; @@ -43,8 +43,8 @@ public class MobConfig implements MobSettings { } @Override - public String getMobID() { - return mob; + public String getEntityID() { + return entity; } @Override @@ -54,14 +54,14 @@ public class MobConfig implements MobSettings { public static class Builder { - private final MobConfig config; + private final EntityConfig config; public Builder() { - this.config = new MobConfig(); + this.config = new EntityConfig(); } - public Builder mobID(String value) { - this.config.mob = value; + public Builder entityID(String value) { + this.config.entity = value; return this; } @@ -85,7 +85,7 @@ public class MobConfig implements MobSettings { return this; } - public MobConfig build() { + public EntityConfig build() { return config; } } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobLibrary.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityLibrary.java similarity index 88% rename from api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobLibrary.java rename to api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityLibrary.java index 34266bd1..74f4358e 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobLibrary.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntityLibrary.java @@ -15,16 +15,16 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.api.mechanic.mob; +package net.momirealms.customfishing.api.mechanic.entity; import org.bukkit.Location; import org.bukkit.entity.Entity; import java.util.Map; -public interface MobLibrary { +public interface EntityLibrary { String identification(); - Entity spawn(Location location, String id, Map mobPropertyMap); + Entity spawn(Location location, String id, Map propertyMap); } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobSettings.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntitySettings.java similarity index 87% rename from api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobSettings.java rename to api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntitySettings.java index 4b88558a..57ae5d76 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/mob/MobSettings.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/entity/EntitySettings.java @@ -15,18 +15,18 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.api.mechanic.mob; +package net.momirealms.customfishing.api.mechanic.entity; import java.util.Map; -public interface MobSettings { +public interface EntitySettings { boolean isPersist(); double getHorizontalVector(); double getVerticalVector(); - String getMobID(); + String getEntityID(); Map getPropertyMap(); } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/LootType.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/LootType.java index 13509d74..784e6c49 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/LootType.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/LootType.java @@ -19,8 +19,8 @@ package net.momirealms.customfishing.api.mechanic.loot; public enum LootType { - LOOT, - MOB, + ITEM, + ENTITY, BLOCK, GLOBAL } diff --git a/plugin/src/main/java/net/momirealms/customfishing/CustomFishingPluginImpl.java b/plugin/src/main/java/net/momirealms/customfishing/CustomFishingPluginImpl.java index acf7fe77..36b989f4 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/CustomFishingPluginImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/CustomFishingPluginImpl.java @@ -40,7 +40,7 @@ import net.momirealms.customfishing.mechanic.item.ItemManagerImpl; import net.momirealms.customfishing.mechanic.loot.LootManagerImpl; import net.momirealms.customfishing.mechanic.market.MarketManagerImpl; import net.momirealms.customfishing.mechanic.misc.CoolDownManager; -import net.momirealms.customfishing.mechanic.mob.MobManagerImpl; +import net.momirealms.customfishing.mechanic.entity.EntityManagerImpl; import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl; import net.momirealms.customfishing.mechanic.statistic.StatisticsManagerImpl; import net.momirealms.customfishing.scheduler.SchedulerImpl; @@ -88,7 +88,7 @@ public class CustomFishingPluginImpl extends CustomFishingPlugin { this.itemManager = new ItemManagerImpl(this); this.lootManager = new LootManagerImpl(this); this.marketManager = new MarketManagerImpl(this); - this.mobManager = new MobManagerImpl(this); + this.entityManager = new EntityManagerImpl(this); this.placeholderManager = new PlaceholderManagerImpl(this); this.requirementManager = new RequirementManagerImpl(this); this.scheduler = new SchedulerImpl(this); @@ -116,7 +116,7 @@ public class CustomFishingPluginImpl extends CustomFishingPlugin { ((ItemManagerImpl) this.itemManager).disable(); ((LootManagerImpl) this.lootManager).disable(); ((MarketManagerImpl) this.marketManager).disable(); - ((MobManagerImpl) this.mobManager).disable(); + ((EntityManagerImpl) this.entityManager).disable(); ((RequirementManagerImpl) this.requirementManager).disable(); ((SchedulerImpl) this.scheduler).shutdown(); ((IntegrationManagerImpl) this.integrationManager).disable(); @@ -154,8 +154,8 @@ public class CustomFishingPluginImpl extends CustomFishingPlugin { ((BagManagerImpl) this.bagManager).load(); ((BlockManagerImpl) this.blockManager).unload(); ((BlockManagerImpl) this.blockManager).load(); - ((MobManagerImpl) this.mobManager).unload(); - ((MobManagerImpl) this.mobManager).load(); + ((EntityManagerImpl) this.entityManager).unload(); + ((EntityManagerImpl) this.entityManager).load(); ((CompetitionManagerImpl) this.competitionManager).unload(); ((CompetitionManagerImpl) this.competitionManager).load(); ((StorageManagerImpl) this.storageManager).reload(); diff --git a/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java b/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java index b4b392f1..a6389866 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java +++ b/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java @@ -45,7 +45,7 @@ public class ItemCommand { return new CommandAPICommand("items") .withPermission("customfishing.command.items") .withSubcommands( - getSubCommand("loot"), + getSubCommand("item"), getSubCommand("util"), getSubCommand("bait"), getSubCommand("rod") diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java index bf168b1a..8b27ab1f 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/IntegrationManagerImpl.java @@ -17,7 +17,6 @@ package net.momirealms.customfishing.compatibility; -import net.momirealms.customfishing.adventure.AdventureManagerImpl; import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.integration.EnchantmentInterface; import net.momirealms.customfishing.api.integration.LevelInterface; @@ -27,9 +26,10 @@ import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.compatibility.block.ItemsAdderBlockImpl; import net.momirealms.customfishing.compatibility.enchant.AdvancedEnchantmentsImpl; import net.momirealms.customfishing.compatibility.enchant.VanillaEnchantmentsImpl; +import net.momirealms.customfishing.compatibility.entity.ItemsAdderEntityImpl; import net.momirealms.customfishing.compatibility.item.*; import net.momirealms.customfishing.compatibility.level.*; -import net.momirealms.customfishing.compatibility.mob.MythicMobsLibraryImpl; +import net.momirealms.customfishing.compatibility.entity.MythicEntityImpl; import net.momirealms.customfishing.compatibility.season.CustomCropsSeasonImpl; import net.momirealms.customfishing.compatibility.season.RealisticSeasonsImpl; import org.bukkit.inventory.ItemStack; @@ -62,6 +62,7 @@ public class IntegrationManagerImpl implements IntegrationManager { if (plugin.isHookedPluginEnabled("ItemsAdder")) { plugin.getItemManager().registerItemLibrary(new ItemsAdderItemImpl()); plugin.getBlockManager().registerBlockLibrary(new ItemsAdderBlockImpl()); + plugin.getEntityManager().registerEntityLibrary(new ItemsAdderEntityImpl()); hookMessage("ItemsAdder"); } if (plugin.isHookedPluginEnabled("MMOItems")) { @@ -78,7 +79,7 @@ public class IntegrationManagerImpl implements IntegrationManager { } if (plugin.isHookedPluginEnabled("MythicMobs")) { plugin.getItemManager().registerItemLibrary(new MythicMobsItemImpl()); - plugin.getMobManager().registerMobLibrary(new MythicMobsLibraryImpl()); + plugin.getEntityManager().registerEntityLibrary(new MythicEntityImpl()); hookMessage("MythicMobs"); } if (plugin.isHookedPluginEnabled("EcoJobs")) { @@ -99,7 +100,7 @@ public class IntegrationManagerImpl implements IntegrationManager { } if (plugin.isHookedPluginEnabled("mcMMO")) { try { - plugin.getItemManager().registerCustomItem("loot", "mcmmo", new McMMOBuildableItem()); + plugin.getItemManager().registerCustomItem("item", "mcmmo", new McMMOBuildableItem()); } catch (ClassNotFoundException | NoSuchMethodException e) { LogUtils.warn("Failed to initialize mcMMO Treasure"); } @@ -152,7 +153,7 @@ public class IntegrationManagerImpl implements IntegrationManager { } private void hookMessage(String plugin) { - AdventureManagerImpl.getInstance().sendConsoleMessage("[CustomFishing] " + plugin + " hooked!"); + LogUtils.info( plugin + " hooked!"); } @Override diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/ItemsAdderEntityImpl.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/ItemsAdderEntityImpl.java new file mode 100644 index 00000000..f842674c --- /dev/null +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/ItemsAdderEntityImpl.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customfishing.compatibility.entity; + +import dev.lone.itemsadder.api.CustomEntity; +import net.momirealms.customfishing.api.mechanic.entity.EntityLibrary; +import org.bukkit.Location; +import org.bukkit.entity.Entity; + +import java.util.Map; + +public class ItemsAdderEntityImpl implements EntityLibrary { + + @Override + public String identification() { + return "vanilla"; + } + + @Override + public Entity spawn(Location location, String id, Map propertyMap) { + CustomEntity customEntity = CustomEntity.spawn( + id, + location, + (Boolean) propertyMap.get("frustumCulling"), + (Boolean) propertyMap.get("noBase"), + (Boolean) propertyMap.get("noHitbox") + ); + return customEntity.getEntity(); + } +} diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/MythicMobsLibraryImpl.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/MythicEntityImpl.java similarity index 87% rename from plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/MythicMobsLibraryImpl.java rename to plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/MythicEntityImpl.java index 4a930731..560d2e20 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/MythicMobsLibraryImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/MythicEntityImpl.java @@ -15,25 +15,25 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.compatibility.mob; +package net.momirealms.customfishing.compatibility.entity; import io.lumine.mythic.api.adapters.AbstractLocation; import io.lumine.mythic.api.mobs.MythicMob; import io.lumine.mythic.bukkit.MythicBukkit; import io.lumine.mythic.bukkit.utils.serialize.Position; import io.lumine.mythic.core.mobs.ActiveMob; -import net.momirealms.customfishing.api.mechanic.mob.MobLibrary; +import net.momirealms.customfishing.api.mechanic.entity.EntityLibrary; import org.bukkit.Location; import org.bukkit.entity.Entity; import java.util.Map; import java.util.Optional; -public class MythicMobsLibraryImpl implements MobLibrary { +public class MythicEntityImpl implements EntityLibrary { private MythicBukkit mythicBukkit; - public MythicMobsLibraryImpl() { + public MythicEntityImpl() { this.mythicBukkit = MythicBukkit.inst(); } @@ -43,7 +43,7 @@ public class MythicMobsLibraryImpl implements MobLibrary { } @Override - public Entity spawn(Location location, String id, Map mobPropertyMap) { + public Entity spawn(Location location, String id, Map propertyMap) { if (this.mythicBukkit == null || mythicBukkit.isClosed()) { this.mythicBukkit = MythicBukkit.inst(); } @@ -52,7 +52,7 @@ public class MythicMobsLibraryImpl implements MobLibrary { MythicMob theMob = mythicMob.get(); Position position = Position.of(location); AbstractLocation abstractLocation = new AbstractLocation(position); - ActiveMob activeMob = theMob.spawn(abstractLocation, (Double) mobPropertyMap.get("{level}")); + ActiveMob activeMob = theMob.spawn(abstractLocation, (Double) propertyMap.get("{level}")); return activeMob.getEntity().getBukkitEntity(); } throw new NullPointerException("MythicMobs: " + id + " doesn't exist."); diff --git a/plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/VanillaMobImpl.java b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/VanillaEntityImpl.java similarity index 83% rename from plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/VanillaMobImpl.java rename to plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/VanillaEntityImpl.java index c9038f45..da5e9139 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/compatibility/mob/VanillaMobImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/compatibility/entity/VanillaEntityImpl.java @@ -15,9 +15,9 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.compatibility.mob; +package net.momirealms.customfishing.compatibility.entity; -import net.momirealms.customfishing.api.mechanic.mob.MobLibrary; +import net.momirealms.customfishing.api.mechanic.entity.EntityLibrary; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -25,7 +25,7 @@ import org.bukkit.entity.EntityType; import java.util.Locale; import java.util.Map; -public class VanillaMobImpl implements MobLibrary { +public class VanillaEntityImpl implements EntityLibrary { @Override public String identification() { @@ -33,7 +33,7 @@ public class VanillaMobImpl implements MobLibrary { } @Override - public Entity spawn(Location location, String id, Map mobPropertyMap) { + public Entity spawn(Location location, String id, Map propertyMap) { return location.getWorld().spawnEntity(location, EntityType.valueOf(id.toUpperCase(Locale.ENGLISH))); } } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/block/BlockManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/block/BlockManagerImpl.java index 6a4f674a..287b4e71 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/block/BlockManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/block/BlockManagerImpl.java @@ -165,7 +165,7 @@ public class BlockManagerImpl implements BlockManager, Listener { @SuppressWarnings("DuplicatedCode") private void loadConfig() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("blocks")) { + for (String type : List.of("block")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; @@ -215,8 +215,8 @@ public class BlockManagerImpl implements BlockManager, Listener { BlockConfig blockConfig = new BlockConfig.Builder() .blockID(blockID) .persist(false) - .horizontalVector(section.getDouble("vector.horizontal", 1.1)) - .verticalVector(section.getDouble("vector.vertical", 1.2)) + .horizontalVector(section.getDouble("velocity.horizontal", 1.1)) + .verticalVector(section.getDouble("velocity.vertical", 1.2)) .dataModifiers(dataModifiers) .stateModifiers(stateModifiers) .build(); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/CompetitionManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/CompetitionManagerImpl.java index 71399d1f..d3bb32eb 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/CompetitionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/CompetitionManagerImpl.java @@ -93,7 +93,7 @@ public class CompetitionManagerImpl implements CompetitionManager { @SuppressWarnings("DuplicatedCode") private void loadConfig() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("competitions")) { + for (String type : List.of("competition")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java index 6a957249..96125539 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java @@ -73,7 +73,7 @@ public class EffectManagerImpl implements EffectManager { @SuppressWarnings("DuplicatedCode") public void load() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("rods", "baits", "enchants", "utils", "totems")) { + for (String type : List.of("rod", "bait", "enchant", "util", "totem")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; @@ -88,7 +88,7 @@ public class EffectManagerImpl implements EffectManager { if (subFile.isDirectory()) { fileDeque.push(subFile); } else if (subFile.isFile() && subFile.getName().endsWith(".yml")) { - this.loadSingleFile(subFile, StringUtils.chop(type)); + this.loadSingleFile(subFile, type); } } } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/mob/MobManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/entity/EntityManagerImpl.java similarity index 58% rename from plugin/src/main/java/net/momirealms/customfishing/mechanic/mob/MobManagerImpl.java rename to plugin/src/main/java/net/momirealms/customfishing/mechanic/entity/EntityManagerImpl.java index 336ae9d9..0d47c507 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/mob/MobManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/entity/EntityManagerImpl.java @@ -15,15 +15,15 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.mechanic.mob; +package net.momirealms.customfishing.mechanic.entity; import net.momirealms.customfishing.api.CustomFishingPlugin; -import net.momirealms.customfishing.api.manager.MobManager; +import net.momirealms.customfishing.api.manager.EntityManager; import net.momirealms.customfishing.api.mechanic.loot.Loot; -import net.momirealms.customfishing.api.mechanic.mob.MobConfig; -import net.momirealms.customfishing.api.mechanic.mob.MobLibrary; +import net.momirealms.customfishing.api.mechanic.entity.EntityConfig; +import net.momirealms.customfishing.api.mechanic.entity.EntityLibrary; import net.momirealms.customfishing.api.util.LogUtils; -import net.momirealms.customfishing.compatibility.mob.VanillaMobImpl; +import net.momirealms.customfishing.compatibility.entity.VanillaEntityImpl; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; @@ -33,28 +33,28 @@ import org.bukkit.util.Vector; import java.io.File; import java.util.*; -public class MobManagerImpl implements MobManager { +public class EntityManagerImpl implements EntityManager { private final CustomFishingPlugin plugin; - private final HashMap mobLibraryMap; - private final HashMap mobConfigMap; + private final HashMap entityLibraryMap; + private final HashMap entityConfigMap; - public MobManagerImpl(CustomFishingPlugin plugin) { + public EntityManagerImpl(CustomFishingPlugin plugin) { this.plugin = plugin; - this.mobLibraryMap = new HashMap<>(); - this.mobConfigMap = new HashMap<>(); - this.registerMobLibrary(new VanillaMobImpl()); + this.entityLibraryMap = new HashMap<>(); + this.entityConfigMap = new HashMap<>(); + this.registerEntityLibrary(new VanillaEntityImpl()); } public void load() { this.loadConfig(); - LogUtils.info("Loaded " + mobConfigMap.size() + " mobs."); + LogUtils.info("Loaded " + entityConfigMap.size() + " entities."); } public void unload() { - HashMap tempMap = new HashMap<>(this.mobConfigMap); - this.mobConfigMap.clear(); - for (Map.Entry entry : tempMap.entrySet()) { + HashMap tempMap = new HashMap<>(this.entityConfigMap); + this.entityConfigMap.clear(); + for (Map.Entry entry : tempMap.entrySet()) { if (entry.getValue().isPersist()) { tempMap.put(entry.getKey(), entry.getValue()); } @@ -62,26 +62,26 @@ public class MobManagerImpl implements MobManager { } @Override - public boolean registerMobLibrary(MobLibrary mobLibrary) { - if (mobLibraryMap.containsKey(mobLibrary.identification())) return false; - else mobLibraryMap.put(mobLibrary.identification(), mobLibrary); + public boolean registerEntityLibrary(EntityLibrary entityLibrary) { + if (entityLibraryMap.containsKey(entityLibrary.identification())) return false; + else entityLibraryMap.put(entityLibrary.identification(), entityLibrary); return true; } @Override - public boolean unregisterMobLibrary(String lib) { - return mobLibraryMap.remove(lib) != null; + public boolean unregisterEntityLibrary(String lib) { + return entityLibraryMap.remove(lib) != null; } @Override - public boolean unregisterMobLibrary(MobLibrary mobLibrary) { - return unregisterMobLibrary(mobLibrary.identification()); + public boolean unregisterEntityLibrary(EntityLibrary entityLibrary) { + return unregisterEntityLibrary(entityLibrary.identification()); } @SuppressWarnings("DuplicatedCode") private void loadConfig() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("mobs")) { + for (String type : List.of("entity")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; @@ -107,9 +107,9 @@ public class MobManagerImpl implements MobManager { YamlConfiguration config = YamlConfiguration.loadConfiguration(file); for (Map.Entry entry : config.getValues(false).entrySet()) { if (entry.getValue() instanceof ConfigurationSection section) { - String mobID = section.getString("mob"); - if (mobID == null) { - LogUtils.warn("Mob can't be null. File:" + file.getAbsolutePath() + "; Section:" + section.getCurrentPath()); + String entityID = section.getString("entity"); + if (entityID == null) { + LogUtils.warn("Entity can't be null. File:" + file.getAbsolutePath() + "; Section:" + section.getCurrentPath()); continue; } HashMap propertyMap = new HashMap<>(); @@ -117,41 +117,41 @@ public class MobManagerImpl implements MobManager { if (property != null) { propertyMap.putAll(property.getValues(false)); } - MobConfig mobConfig = new MobConfig.Builder() - .mobID(mobID) + EntityConfig entityConfig = new EntityConfig.Builder() + .entityID(entityID) .persist(false) - .horizontalVector(section.getDouble("vector.horizontal", 1.1)) - .verticalVector(section.getDouble("vector.vertical", 1.2)) + .horizontalVector(section.getDouble("velocity.horizontal", 1.1)) + .verticalVector(section.getDouble("velocity.vertical", 1.2)) .propertyMap(propertyMap) .build(); - mobConfigMap.put(entry.getKey(), mobConfig); + entityConfigMap.put(entry.getKey(), entityConfig); } } } public void disable() { unload(); - this.mobConfigMap.clear(); - this.mobLibraryMap.clear(); + this.entityConfigMap.clear(); + this.entityLibraryMap.clear(); } @Override - public void summonMob(Location hookLocation, Location playerLocation, Loot loot) { - MobConfig config = mobConfigMap.get(loot.getID()); + public void summonEntity(Location hookLocation, Location playerLocation, Loot loot) { + EntityConfig config = entityConfigMap.get(loot.getID()); if (config == null) { - LogUtils.warn("Mob: " + loot.getID() + " doesn't exist."); + LogUtils.warn("Entity: " + loot.getID() + " doesn't exist."); return; } - String mobID = config.getMobID(); + String entityID = config.getEntityID(); Entity entity; - if (mobID.contains(":")) { - String[] split = mobID.split(":", 2); + if (entityID.contains(":")) { + String[] split = entityID.split(":", 2); String identification = split[0]; String id = split[1]; - MobLibrary library = mobLibraryMap.get(identification); + EntityLibrary library = entityLibraryMap.get(identification); entity = library.spawn(hookLocation, id, config.getPropertyMap()); } else { - entity = mobLibraryMap.get("vanilla").spawn(hookLocation, mobID, config.getPropertyMap()); + entity = entityLibraryMap.get("vanilla").spawn(hookLocation, entityID, config.getPropertyMap()); } Vector vector = playerLocation.subtract(hookLocation).toVector().multiply((config.getHorizontalVector()) - 1); vector = vector.setY((vector.getY() + 0.2) * config.getVerticalVector()); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java index c42af740..c490af3d 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java @@ -208,7 +208,7 @@ public class FishingManagerImpl implements Listener, FishingManager { Loot loot = plugin.getLootManager().getLoot(id); if (loot != null) { Condition condition = new Condition(event.getPlayer()); - GlobalSettings.triggerLootActions(ActionTrigger.CONSUME, condition); + GlobalSettings.triggerItemActions(ActionTrigger.CONSUME, condition); loot.triggerActions(ActionTrigger.CONSUME, condition); } } @@ -522,7 +522,7 @@ public class FishingManagerImpl implements Listener, FishingManager { return; } - GlobalSettings.triggerLootActions(ActionTrigger.FAILURE, fishingPreparation); + GlobalSettings.triggerItemActions(ActionTrigger.FAILURE, fishingPreparation); loot.triggerActions(ActionTrigger.FAILURE, fishingPreparation); fishingPreparation.triggerActions(ActionTrigger.FAILURE); @@ -551,7 +551,7 @@ public class FishingManagerImpl implements Listener, FishingManager { } switch (loot.getType()) { - case LOOT -> { + case ITEM -> { int amount = (int) effect.getMultipleLootChance(); amount += Math.random() < (effect.getMultipleLootChance() - amount) ? 2 : 1; // build the items for multiple times instead of using setAmount() to make sure that each item is unique @@ -572,7 +572,7 @@ public class FishingManagerImpl implements Listener, FishingManager { } return; } - case MOB -> plugin.getMobManager().summonMob(hook.getLocation(), player.getLocation(), loot); + case ENTITY -> plugin.getEntityManager().summonEntity(hook.getLocation(), player.getLocation(), loot); case BLOCK -> plugin.getBlockManager().summonBlock(player, hook.getLocation(), player.getLocation(), loot); } doSuccessActions(loot, effect, fishingPreparation, player); @@ -611,7 +611,7 @@ public class FishingManagerImpl implements Listener, FishingManager { } // events and actions - GlobalSettings.triggerLootActions(ActionTrigger.SUCCESS, fishingPreparation); + GlobalSettings.triggerItemActions(ActionTrigger.SUCCESS, fishingPreparation); loot.triggerActions(ActionTrigger.SUCCESS, fishingPreparation); fishingPreparation.triggerActions(ActionTrigger.SUCCESS); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java index 26ade37c..8065412d 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/game/GameManagerImpl.java @@ -141,10 +141,10 @@ public class GameManagerImpl implements GameManager { public void loadGamesFromPluginFolder() { Deque fileDeque = new ArrayDeque<>(); - File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + "minigames"); + File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + "minigame"); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; - plugin.saveResource("contents" + File.separator + "minigames" + File.separator + "default.yml", false); + plugin.saveResource("contents" + File.separator + "minigame" + File.separator + "default.yml", false); } fileDeque.push(typeFolder); while (!fileDeque.isEmpty()) { diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java index 2fdd41d1..7f53ceef 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java @@ -97,7 +97,7 @@ public class ItemManagerImpl implements ItemManager { @SuppressWarnings("DuplicatedCode") public void loadItemsFromPluginFolder() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("loots", "baits", "rods", "utils")) { + for (String type : List.of("item", "bait", "rod", "util")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; @@ -112,7 +112,7 @@ public class ItemManagerImpl implements ItemManager { if (subFile.isDirectory()) { fileDeque.push(subFile); } else if (subFile.isFile() && subFile.getName().endsWith(".yml")) { - this.loadSingleFile(subFile, StringUtils.chop(type)); + this.loadSingleFile(subFile, type); } } } @@ -271,7 +271,7 @@ public class ItemManagerImpl implements ItemManager { @Override public void dropItem(Player player, Location hookLocation, Location playerLocation, Loot loot, Map args) { - ItemStack item = build(player, "loot", loot.getID(), args); + ItemStack item = build(player, "item", loot.getID(), args); if (item == null) { LogUtils.warn(String.format("Item %s not exists", loot.getID())); return; diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java index 0e545eff..20b02c25 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java @@ -61,7 +61,7 @@ public class LootManagerImpl implements LootManager { @SuppressWarnings("DuplicatedCode") public void loadLootsFromPluginFolder() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("loots", "mobs", "blocks")) { + for (String type : List.of("item", "entity", "block")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; @@ -76,7 +76,7 @@ public class LootManagerImpl implements LootManager { if (subFile.isDirectory()) { fileDeque.push(subFile); } else if (subFile.isFile() && subFile.getName().endsWith(".yml")) { - loadSingleFile(subFile, StringUtils.chop(type)); + loadSingleFile(subFile, type); } } } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/market/MarketManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/market/MarketManagerImpl.java index 7d65b415..c0a171ef 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/market/MarketManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/market/MarketManagerImpl.java @@ -193,6 +193,8 @@ public class MarketManagerImpl implements MarketManager, Listener { return; } } + + plugin.getScheduler().runTaskSyncLater(gui::refresh, player.getLocation(), 50, TimeUnit.MILLISECONDS); } @EventHandler @@ -278,10 +280,30 @@ public class MarketManagerImpl implements MarketManager, Listener { if ((event.getClick() == ClickType.SHIFT_LEFT || event.getClick() == ClickType.SHIFT_RIGHT) && (current != null && current.getType() != Material.AIR)) { event.setCancelled(true); - int slot = gui.getEmptyItemSlot(); - if (slot != -1) { - gui.getInventory().setItem(slot, current.clone()); - current.setAmount(0); + MarketGUIElement element = gui.getElement(itemSlot); + if (element == null) return; + for (int slot : element.getSlots()) { + ItemStack itemStack = gui.getInventory().getItem(slot); + if (itemStack != null && itemStack.getType() != Material.AIR) { + if (current.getType() == itemStack.getType() + && itemStack.getAmount() != itemStack.getType().getMaxStackSize() + && current.getItemMeta().getAsString().equals(itemStack.getItemMeta().getAsString()) + ) { + int left = itemStack.getType().getMaxStackSize() - itemStack.getAmount(); + if (current.getAmount() <= left) { + itemStack.setAmount(itemStack.getAmount() + current.getAmount()); + current.setAmount(0); + return; + } else { + current.setAmount(current.getAmount() - left); + itemStack.setAmount(itemStack.getType().getMaxStackSize()); + } + } + } else { + gui.getInventory().setItem(slot, current.clone()); + current.setAmount(0); + return; + } } } } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/statistic/StatisticsManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/statistic/StatisticsManagerImpl.java index 4b6e1307..dabba5fa 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/statistic/StatisticsManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/statistic/StatisticsManagerImpl.java @@ -61,7 +61,7 @@ public class StatisticsManagerImpl implements StatisticsManager { @SuppressWarnings("DuplicatedCode") public void loadCategoriesFromPluginFolder() { Deque fileDeque = new ArrayDeque<>(); - for (String type : List.of("categories")) { + for (String type : List.of("category")) { File typeFolder = new File(plugin.getDataFolder() + File.separator + "contents" + File.separator + type); if (!typeFolder.exists()) { if (!typeFolder.mkdirs()) return; diff --git a/plugin/src/main/resources/contents/baits/default.yml b/plugin/src/main/resources/contents/bait/default.yml similarity index 100% rename from plugin/src/main/resources/contents/baits/default.yml rename to plugin/src/main/resources/contents/bait/default.yml diff --git a/plugin/src/main/resources/contents/blocks/default.yml b/plugin/src/main/resources/contents/block/default.yml similarity index 98% rename from plugin/src/main/resources/contents/blocks/default.yml rename to plugin/src/main/resources/contents/block/default.yml index ded045ad..41b7a873 100644 --- a/plugin/src/main/resources/contents/blocks/default.yml +++ b/plugin/src/main/resources/contents/block/default.yml @@ -9,7 +9,7 @@ apple_crate: disable-stat: true nick: Apple Crate block: barrel - vector: + velocity: horizontal: 1.07 vertical: 1.5 properties: @@ -52,7 +52,7 @@ carrot_crate: disable-stat: true nick: Carrot Crate block: barrel - vector: + velocity: horizontal: 1.07 vertical: 1.5 properties: diff --git a/plugin/src/main/resources/contents/categories/default.yml b/plugin/src/main/resources/contents/category/default.yml similarity index 100% rename from plugin/src/main/resources/contents/categories/default.yml rename to plugin/src/main/resources/contents/category/default.yml diff --git a/plugin/src/main/resources/contents/competitions/default.yml b/plugin/src/main/resources/contents/competition/default.yml similarity index 100% rename from plugin/src/main/resources/contents/competitions/default.yml rename to plugin/src/main/resources/contents/competition/default.yml diff --git a/plugin/src/main/resources/contents/enchants/default.yml b/plugin/src/main/resources/contents/enchant/default.yml similarity index 100% rename from plugin/src/main/resources/contents/enchants/default.yml rename to plugin/src/main/resources/contents/enchant/default.yml diff --git a/plugin/src/main/resources/contents/mobs/default.yml b/plugin/src/main/resources/contents/entity/default.yml similarity index 84% rename from plugin/src/main/resources/contents/mobs/default.yml rename to plugin/src/main/resources/contents/entity/default.yml index 9bd0f359..c6d0b913 100644 --- a/plugin/src/main/resources/contents/mobs/default.yml +++ b/plugin/src/main/resources/contents/entity/default.yml @@ -7,36 +7,36 @@ skeleton: show-in-fishfinder: false disable-stat: true - mob: skeleton + entity: skeleton nick: Skeleton - vector: + velocity: horizontal: 1 vertical: 1.3 wither_skeleton: show-in-fishfinder: false disable-stat: true - mob: wither_skeleton + entity: wither_skeleton nick: Wither Skeleton - vector: + velocity: horizontal: 1.1 vertical: 1.2 magma_cube: show-in-fishfinder: false disable-stat: true - mob: magma_cube + entity: magma_cube nick: Magma Cube - vector: + velocity: horizontal: 1.1 vertical: 1.3 skeletalknight: show-in-fishfinder: false disable-stat: true - mob: MythicMobs:SkeletalKnight + entity: MythicMobs:SkeletalKnight nick: Skeletal Knight - vector: + velocity: horizontal: 1.1 vertical: 1.2 properties: diff --git a/plugin/src/main/resources/contents/loots/default.yml b/plugin/src/main/resources/contents/item/default.yml similarity index 100% rename from plugin/src/main/resources/contents/loots/default.yml rename to plugin/src/main/resources/contents/item/default.yml diff --git a/plugin/src/main/resources/contents/minigames/default.yml b/plugin/src/main/resources/contents/minigame/default.yml similarity index 100% rename from plugin/src/main/resources/contents/minigames/default.yml rename to plugin/src/main/resources/contents/minigame/default.yml diff --git a/plugin/src/main/resources/contents/rods/default.yml b/plugin/src/main/resources/contents/rod/default.yml similarity index 100% rename from plugin/src/main/resources/contents/rods/default.yml rename to plugin/src/main/resources/contents/rod/default.yml diff --git a/plugin/src/main/resources/contents/totems/default.yml b/plugin/src/main/resources/contents/totem/default.yml similarity index 100% rename from plugin/src/main/resources/contents/totems/default.yml rename to plugin/src/main/resources/contents/totem/default.yml diff --git a/plugin/src/main/resources/contents/utils/default.yml b/plugin/src/main/resources/contents/util/default.yml similarity index 100% rename from plugin/src/main/resources/contents/utils/default.yml rename to plugin/src/main/resources/contents/util/default.yml diff --git a/plugin/src/main/resources/market.yml b/plugin/src/main/resources/market.yml index ff8dac14..c470bf94 100644 --- a/plugin/src/main/resources/market.yml +++ b/plugin/src/main/resources/market.yml @@ -42,7 +42,6 @@ functional-icons: name: '<#00CED1>Ship the fish' lore: - 'You will get {money}$ by selling the fish' - - 'You can earn {rest}' action: sound_action: type: sound