diff --git a/api/src/main/java/net/momirealms/customcrops/api/BukkitCustomCropsPlugin.java b/api/src/main/java/net/momirealms/customcrops/api/BukkitCustomCropsPlugin.java index ac4b2c5..7738882 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/BukkitCustomCropsPlugin.java +++ b/api/src/main/java/net/momirealms/customcrops/api/BukkitCustomCropsPlugin.java @@ -240,13 +240,6 @@ public abstract class BukkitCustomCropsPlugin implements CustomCropsPlugin { return configManager; } - /** - * Logs a debug message. - * - * @param message the message to log - */ - public abstract void debug(Object message); - /** * Logs a debug message using a {@link Supplier}. * diff --git a/api/src/main/java/net/momirealms/customcrops/api/action/AbstractActionManager.java b/api/src/main/java/net/momirealms/customcrops/api/action/AbstractActionManager.java index f32005d..bc19f0a 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/action/AbstractActionManager.java +++ b/api/src/main/java/net/momirealms/customcrops/api/action/AbstractActionManager.java @@ -57,7 +57,8 @@ public abstract class AbstractActionManager implements ActionManager { this.registerHologramAction(); this.registerPlantAction(); this.registerBreakAction(); - this.registerSpawnEntity(); + this.registerSpawnEntityAction(); + this.registerVariationAction(); } @Override @@ -308,7 +309,7 @@ public abstract class AbstractActionManager implements ActionManager { this.registerAction((args, chance) -> new ActionBreak<>(plugin, args, chance), "break"); } - protected void registerSpawnEntity() { + protected void registerSpawnEntityAction() { this.registerAction((args, chance) -> { if (args instanceof Section section) { return new ActionSpawnEntity<>(plugin, section, chance); @@ -318,4 +319,15 @@ public abstract class AbstractActionManager implements ActionManager { } }, "spawn-entity", "spawn-mob"); } + + protected void registerVariationAction() { + this.registerAction((args, chance) -> { + if (args instanceof Section section) { + return new ActionVariation<>(plugin, section, chance); + } else { + plugin.getPluginLogger().warn("Invalid value type: " + args.getClass().getSimpleName() + " found at spawn-entity action which is expected to be `Section`"); + return Action.empty(); + } + }, "variation"); + } } diff --git a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionBreak.java b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionBreak.java index 91629a6..e326dcf 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionBreak.java +++ b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionBreak.java @@ -49,7 +49,7 @@ public class ActionBreak extends AbstractBuiltInAction { double chance ) { super(plugin, chance); - this.triggerEvent = (boolean) args; + this.triggerEvent = Optional.ofNullable(args).map(it -> (boolean) it).orElse(true); } @Override diff --git a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionVariation.java b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionVariation.java new file mode 100644 index 0000000..6967498 --- /dev/null +++ b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionVariation.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) <2024> + * + * 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.customcrops.api.action.builtin; + +import dev.dejvokep.boostedyaml.block.implementation.Section; +import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; +import net.momirealms.customcrops.api.context.Context; +import net.momirealms.customcrops.api.context.ContextKeys; +import net.momirealms.customcrops.api.core.BuiltInBlockMechanics; +import net.momirealms.customcrops.api.core.CustomForm; +import net.momirealms.customcrops.api.core.ExistenceForm; +import net.momirealms.customcrops.api.core.FurnitureRotation; +import net.momirealms.customcrops.api.core.block.CropBlock; +import net.momirealms.customcrops.api.core.block.PotBlock; +import net.momirealms.customcrops.api.core.mechanic.crop.VariationData; +import net.momirealms.customcrops.api.core.mechanic.fertilizer.Fertilizer; +import net.momirealms.customcrops.api.core.mechanic.fertilizer.FertilizerConfig; +import net.momirealms.customcrops.api.core.world.CustomCropsBlockState; +import net.momirealms.customcrops.api.core.world.CustomCropsWorld; +import net.momirealms.customcrops.api.core.world.Pos3; +import org.bukkit.Location; + +import java.util.*; + +import static java.util.Objects.requireNonNull; + +public class ActionVariation extends AbstractBuiltInAction { + + private final VariationData[] variations; + private final boolean ignore; + + public ActionVariation( + BukkitCustomCropsPlugin plugin, + Section section, + double chance + ) { + super(plugin, chance); + ignore = section.getBoolean("ignore-fertilizer", false); + List variationDataList = new ArrayList<>(); + for (Map.Entry entry : section.getStringRouteMappedValues(false).entrySet()) { + if (entry.getValue() instanceof Section inner) { + VariationData variationData = new VariationData( + inner.getString("item"), + CustomForm.valueOf(inner.getString("type", "BLOCK").toUpperCase(Locale.ENGLISH)).existenceForm(), + inner.getDouble("chance") + ); + variationDataList.add(variationData); + } + } + variations = variationDataList.toArray(new VariationData[0]); + } + + @Override + protected void triggerAction(Context context) { + Fertilizer[] fertilizers = null; + Location location = requireNonNull(context.arg(ContextKeys.LOCATION)); + Optional> world = plugin.getWorldManager().getWorld(location.getWorld()); + if (world.isEmpty()) { + return; + } + Pos3 pos3 = Pos3.from(location); + if (context.holder() instanceof CustomCropsBlockState state) { + if (!(state.type() instanceof CropBlock)) { + return; + } + } else { + Optional cropBlockState = world.get().getBlockState(pos3); + if (cropBlockState.isEmpty() || !(cropBlockState.get().type() instanceof CropBlock)) { + return; + } + } + if (!ignoreFertilizers()) { + Pos3 potLocation = pos3.add(0, -1, 0); + Optional optionalState = world.get().getBlockState(potLocation); + if (optionalState.isPresent()) { + if (optionalState.get().type() instanceof PotBlock potBlock) { + fertilizers = potBlock.fertilizers(optionalState.get()); + } + } + } + ArrayList configs = new ArrayList<>(); + if (fertilizers != null) { + for (Fertilizer fertilizer : fertilizers) { + Optional.ofNullable(fertilizer.config()).ifPresent(configs::add); + } + } + for (VariationData variationData : variations()) { + double variationChance = variationData.chance(); + for (FertilizerConfig fertilizer : configs) { + variationChance = fertilizer.processVariationChance(variationChance); + } + if (Math.random() < variationChance) { + plugin.getItemManager().remove(location, ExistenceForm.ANY); + world.get().removeBlockState(pos3); + plugin.getItemManager().place(location, variationData.existenceForm(), variationData.id(), FurnitureRotation.random()); + ((CropBlock) BuiltInBlockMechanics.CROP.mechanic()).fixOrGetState(world.get(), pos3, variationData.id()); + break; + } + } + } + + public VariationData[] variations() { + return variations; + } + + public boolean ignoreFertilizers() { + return ignore; + } +} diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/item/WateringCanItem.java b/api/src/main/java/net/momirealms/customcrops/api/core/item/WateringCanItem.java index 69c268c..e040c33 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/item/WateringCanItem.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/item/WateringCanItem.java @@ -139,7 +139,8 @@ public class WateringCanItem extends AbstractCustomCropsItem { int water = getCurrentWater(itemInHand); String blockID = BukkitCustomCropsPlugin.getInstance().getItemManager().blockID(targetBlock); - BukkitCustomCropsPlugin.getInstance().debug(blockID); + String finalBlockID = blockID; + BukkitCustomCropsPlugin.getInstance().debug(() -> finalBlockID); for (FillMethod method : config.fillMethods()) { if (method.getID().equals(blockID)) { @@ -340,7 +341,8 @@ public class WateringCanItem extends AbstractCustomCropsItem { // for old config compatibility context.updateLocation(new Location(player.getWorld(), vector.getX() - 0.5,vector.getY() - 1, vector.getZ() - 0.5)); String blockID = BukkitCustomCropsPlugin.getInstance().getItemManager().blockID(targetBlock); - BukkitCustomCropsPlugin.getInstance().debug(blockID); + String finalBlockID = blockID; + BukkitCustomCropsPlugin.getInstance().debug(() -> finalBlockID); for (FillMethod method : wateringCanConfig.fillMethods()) { if (method.getID().equals(blockID)) { diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsWorldImpl.java b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsWorldImpl.java index b8c66e0..26e792a 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsWorldImpl.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsWorldImpl.java @@ -209,7 +209,7 @@ public class CustomCropsWorldImpl implements CustomCropsWorld { this.adaptor.saveRegion(this, region); } long time2 = System.currentTimeMillis(); - BukkitCustomCropsPlugin.getInstance().debug("Took " + (time2-time1) + "ms to save world " + worldName + ". Saved " + (lazyChunks.size() + loadedChunks.size()) + " chunks."); + BukkitCustomCropsPlugin.getInstance().debug(() -> "Took " + (time2-time1) + "ms to save world " + worldName + ". Saved " + (lazyChunks.size() + loadedChunks.size()) + " chunks."); } @Override @@ -346,7 +346,7 @@ public class CustomCropsWorldImpl implements CustomCropsWorld { public boolean loadChunk(CustomCropsChunk chunk) { Optional previousChunk = getLoadedChunk(chunk.chunkPos()); if (previousChunk.isPresent()) { - BukkitCustomCropsPlugin.getInstance().debug("Chunk " + chunk.chunkPos() + " already loaded."); + BukkitCustomCropsPlugin.getInstance().debug(() -> "Chunk " + chunk.chunkPos() + " already loaded."); if (previousChunk.get() != chunk) { BukkitCustomCropsPlugin.getInstance().getPluginLogger().severe("Failed to load the chunk. There is already a different chunk instance with the same coordinates in the cache. " + chunk.chunkPos()); return false; @@ -447,7 +447,7 @@ public class CustomCropsWorldImpl implements CustomCropsWorld { public boolean loadRegion(CustomCropsRegion region) { Optional previousRegion = getLoadedRegion(region.regionPos()); if (previousRegion.isPresent()) { - BukkitCustomCropsPlugin.getInstance().debug("Region " + region.regionPos() + " already loaded."); + BukkitCustomCropsPlugin.getInstance().debug(() -> "Region " + region.regionPos() + " already loaded."); if (previousRegion.get() != region) { BukkitCustomCropsPlugin.getInstance().getPluginLogger().severe("Failed to load the region. There is already a different region instance with the same coordinates in the cache. " + region.regionPos()); return false; diff --git a/compatibility-asp-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/asp_r1/SlimeWorldAdaptorR1.java b/compatibility-asp-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/asp_r1/SlimeWorldAdaptorR1.java index 7ec63aa..dd3cb1a 100644 --- a/compatibility-asp-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/asp_r1/SlimeWorldAdaptorR1.java +++ b/compatibility-asp-r1/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/asp_r1/SlimeWorldAdaptorR1.java @@ -132,7 +132,7 @@ public class SlimeWorldAdaptorR1 extends AbstractWorldAdaptor { } CustomCropsChunk chunk = tagToChunk(world, chunkCompoundTag.get()); long time2 = System.currentTimeMillis(); - BukkitCustomCropsPlugin.getInstance().debug("Took " + (time2-time1) + "ms to load chunk " + pos); + BukkitCustomCropsPlugin.getInstance().debug(() -> "Took " + (time2-time1) + "ms to load chunk " + pos); return chunk; } diff --git a/compatibility/src/main/java/net/momirealms/customcrops/bukkit/integration/worldedit/WorldEditListener.java b/compatibility/src/main/java/net/momirealms/customcrops/bukkit/integration/worldedit/WorldEditListener.java index 25f24e4..1091184 100644 --- a/compatibility/src/main/java/net/momirealms/customcrops/bukkit/integration/worldedit/WorldEditListener.java +++ b/compatibility/src/main/java/net/momirealms/customcrops/bukkit/integration/worldedit/WorldEditListener.java @@ -89,7 +89,7 @@ public class WorldEditListener implements Reloadable, Listener { try { event.setExtent(new CustomCropsDelegateExtent(event)); } catch (Exception e) { - BukkitCustomCropsPlugin.getInstance().debug(e.getMessage()); + BukkitCustomCropsPlugin.getInstance().debug(e::getMessage); } } diff --git a/gradle.properties b/gradle.properties index 54e5ece..4508f36 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=3.6.9 +project_version=3.6.10 config_version=40 project_group=net.momirealms diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/BukkitCustomCropsPluginImpl.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/BukkitCustomCropsPluginImpl.java index 1d63ca2..e5ce599 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/BukkitCustomCropsPluginImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/BukkitCustomCropsPluginImpl.java @@ -91,11 +91,6 @@ public class BukkitCustomCropsPluginImpl extends BukkitCustomCropsPlugin { this.registryAccess = SimpleRegistryAccess.getInstance(); } - @Override - public void debug(Object message) { - this.debugger.accept(message::toString); - } - @Override public void debug(Supplier message) { this.debugger.accept(message); @@ -224,7 +219,7 @@ public class BukkitCustomCropsPluginImpl extends BukkitCustomCropsPlugin { this.placeholderManager.reload(); this.configManager.reload(); - this.debugger = ConfigManager.debug() ? (s) -> logger.info("[DEBUG] " + s.toString()) : (s) -> {}; + this.debugger = ConfigManager.debug() ? (s) -> logger.info("[DEBUG] " + s.get()) : (s) -> {}; this.coolDownManager.reload(); this.translationManager.reload(); this.hologramManager.reload(); diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/BlockActionManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/BlockActionManager.java index a4efd6e..6af9d5c 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/BlockActionManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/BlockActionManager.java @@ -17,28 +17,9 @@ package net.momirealms.customcrops.bukkit.action; -import dev.dejvokep.boostedyaml.block.implementation.Section; import net.momirealms.customcrops.api.BukkitCustomCropsPlugin; import net.momirealms.customcrops.api.action.AbstractActionManager; -import net.momirealms.customcrops.api.action.Action; -import net.momirealms.customcrops.api.context.ContextKeys; -import net.momirealms.customcrops.api.core.CustomForm; -import net.momirealms.customcrops.api.core.ExistenceForm; -import net.momirealms.customcrops.api.core.FurnitureRotation; -import net.momirealms.customcrops.api.core.block.CropBlock; -import net.momirealms.customcrops.api.core.block.PotBlock; -import net.momirealms.customcrops.api.core.mechanic.crop.VariationData; -import net.momirealms.customcrops.api.core.mechanic.fertilizer.Fertilizer; -import net.momirealms.customcrops.api.core.mechanic.fertilizer.FertilizerConfig; import net.momirealms.customcrops.api.core.world.CustomCropsBlockState; -import net.momirealms.customcrops.api.core.world.CustomCropsChunk; -import net.momirealms.customcrops.api.core.world.CustomCropsWorld; -import net.momirealms.customcrops.api.core.world.Pos3; -import org.bukkit.Location; - -import java.util.*; - -import static java.util.Objects.requireNonNull; public class BlockActionManager extends AbstractActionManager { @@ -55,73 +36,5 @@ public class BlockActionManager extends AbstractActionManager { - if (args instanceof Section section) { - boolean ignore = section.getBoolean("ignore-fertilizer", false); - List variationDataList = new ArrayList<>(); - for (Map.Entry entry : section.getStringRouteMappedValues(false).entrySet()) { - if (entry.getValue() instanceof Section inner) { - VariationData variationData = new VariationData( - inner.getString("item"), - CustomForm.valueOf(inner.getString("type", "BLOCK").toUpperCase(Locale.ENGLISH)).existenceForm(), - inner.getDouble("chance") - ); - variationDataList.add(variationData); - } - } - VariationData[] variations = variationDataList.toArray(new VariationData[0]); - return context -> { - if (Math.random() > chance) return; - if (!(context.holder().type() instanceof CropBlock cropBlock)) { - return; - } - Fertilizer[] fertilizers = null; - Location location = requireNonNull(context.arg(ContextKeys.LOCATION)); - Optional> world = plugin.getWorldManager().getWorld(location.getWorld()); - if (world.isEmpty()) { - return; - } - Pos3 pos3 = Pos3.from(location); - if (!ignore) { - Pos3 potLocation = pos3.add(0, -1, 0); - Optional chunk = world.get().getChunk(potLocation.toChunkPos()); - if (chunk.isPresent()) { - Optional state = chunk.get().getBlockState(potLocation); - if (state.isPresent()) { - if (state.get().type() instanceof PotBlock potBlock) { - fertilizers = potBlock.fertilizers(state.get()); - } - } - } - } - ArrayList configs = new ArrayList<>(); - if (fertilizers != null) { - for (Fertilizer fertilizer : fertilizers) { - Optional.ofNullable(fertilizer.config()).ifPresent(configs::add); - } - } - for (VariationData variationData : variations) { - double variationChance = variationData.chance(); - for (FertilizerConfig fertilizer : configs) { - variationChance = fertilizer.processVariationChance(variationChance); - } - if (Math.random() < variationChance) { - plugin.getItemManager().remove(location, ExistenceForm.ANY); - world.get().removeBlockState(pos3); - plugin.getItemManager().place(location, variationData.existenceForm(), variationData.id(), FurnitureRotation.random()); - cropBlock.fixOrGetState(world.get(), pos3, variationData.id()); - break; - } - } - }; - } else { - plugin.getPluginLogger().warn("Invalid value type: " + args.getClass().getSimpleName() + " found at variation action which is expected to be `Section`"); - return Action.empty(); - } - }, "variation"); } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/PlayerActionManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/PlayerActionManager.java index 9894d9f..d15e692 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/PlayerActionManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/action/PlayerActionManager.java @@ -290,14 +290,18 @@ public class PlayerActionManager extends AbstractActionManager { registerAction((args, chance) -> { if (args instanceof Section section) { String id = section.getString("item"); + if (id == null) { + id = section.getString("id"); + } + String finalID = id; int amount = section.getInt("amount", 1); boolean toInventory = section.getBoolean("to-inventory", false); return context -> { if (Math.random() > chance) return; Player player = context.holder(); if (player == null) return; - ItemStack itemStack = plugin.getItemManager().build(context.holder(), id); - if (itemStack != null) { + ItemStack itemStack = plugin.getItemManager().build(context.holder(), finalID); + if (itemStack != null && itemStack.getType() != Material.AIR) { int maxStack = itemStack.getMaxStackSize(); int amountToGive = amount; while (amountToGive > 0) { diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java index d6b0915..5cf3e44 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java @@ -98,11 +98,11 @@ public class BukkitConfigManager extends ConfigManager { } this.loadSettings(); this.loadConfigs(); - plugin.debug("Loaded " + Registries.CROP.size() + " crops"); - plugin.debug("Loaded " + Registries.SPRINKLER.size() + " sprinklers"); - plugin.debug("Loaded " + Registries.WATERING_CAN.size() + " watering-cans"); - plugin.debug("Loaded " + Registries.POT.size() + " pots"); - plugin.debug("Loaded " + Registries.FERTILIZER.size() + " fertilizers"); + plugin.debug(() -> "Loaded " + Registries.CROP.size() + " crops"); + plugin.debug(() -> "Loaded " + Registries.SPRINKLER.size() + " sprinklers"); + plugin.debug(() -> "Loaded " + Registries.WATERING_CAN.size() + " watering-cans"); + plugin.debug(() -> "Loaded " + Registries.POT.size() + " pots"); + plugin.debug(() -> "Loaded " + Registries.FERTILIZER.size() + " fertilizers"); } private void loadSettings() { diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java index ae7b31c..4bdce05 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java @@ -171,7 +171,7 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { CustomCropsChunk chunk = deserializeChunk(world, dataStream); dataStream.close(); long time2 = System.currentTimeMillis(); - BukkitCustomCropsPlugin.getInstance().debug("[" + world.worldName() + "] Took " + (time2-time1) + "ms to load chunk " + pos + " from cached region"); + BukkitCustomCropsPlugin.getInstance().debug(() -> "[" + world.worldName() + "] Took " + (time2-time1) + "ms to load chunk " + pos + " from cached region"); return chunk; } catch (IOException e) { BukkitCustomCropsPlugin.getInstance().getPluginLogger().severe("[" + world.worldName() + "] Failed to load CustomCrops data at " + pos, e); @@ -198,7 +198,7 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) { bos.write(serializeRegion(region)); long time2 = System.currentTimeMillis(); - BukkitCustomCropsPlugin.getInstance().debug("[" + world.worldName() + "] Took " + (time2-time1) + "ms to save region " + region.regionPos()); + BukkitCustomCropsPlugin.getInstance().debug(() -> "[" + world.worldName() + "] Took " + (time2-time1) + "ms to save region " + region.regionPos()); } catch (IOException e) { BukkitCustomCropsPlugin.getInstance().getPluginLogger().severe("[" + world.worldName() + "] Failed to save CustomCrops region data." + region.regionPos(), e); } diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemManager.java index 7fbf690..31dbdd4 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/item/BukkitItemManager.java @@ -92,9 +92,9 @@ public class BukkitItemManager extends AbstractItemManager { public void load() { this.resetItemDetectionOrder(); for (ItemProvider provider : itemProviders.values()) { - plugin.debug("Registered ItemProvider: " + provider.identifier()); + plugin.debug(() -> "Registered ItemProvider: " + provider.identifier()); } - plugin.debug("Item order: " + Arrays.toString(Arrays.stream(itemDetectArray).map(ExternalProvider::identifier).toList().toArray(new String[0]))); + plugin.debug(() -> "Item order: " + Arrays.toString(Arrays.stream(itemDetectArray).map(ExternalProvider::identifier).toList().toArray(new String[0]))); } @Override @@ -105,14 +105,14 @@ public class BukkitItemManager extends AbstractItemManager { } this.eventListener = listener; Bukkit.getPluginManager().registerEvents(this.eventListener, plugin.getBootstrap()); - plugin.debug("Custom event listener set to " + listener.getClass().getName()); + plugin.debug(() -> "Custom event listener set to " + listener.getClass().getName()); } @Override public void setCustomItemProvider(@NotNull CustomItemProvider provider) { Objects.requireNonNull(provider, "provider cannot be null"); this.provider = provider; - plugin.debug("Custom item provider set to " + provider.getClass().getName()); + plugin.debug(() -> "Custom item provider set to " + provider.getClass().getName()); } public boolean registerItemProvider(ItemProvider item) { @@ -382,7 +382,7 @@ public class BukkitItemManager extends AbstractItemManager { ItemMeta previousMeta = itemStack.getItemMeta().clone(); PlayerItemDamageEvent itemDamageEvent = new PlayerItemDamageEvent(player, itemStack, amount); if (EventUtils.fireAndCheckCancel(itemDamageEvent)) { - plugin.debug("Another plugin modified the item from `PlayerItemDamageEvent` called by CustomCrops"); + plugin.debug(() -> "Another plugin modified the item from `PlayerItemDamageEvent` called by CustomCrops"); return; } if (!itemStack.getItemMeta().equals(previousMeta)) {