diff --git a/build.gradle b/build.gradle index d7fe43f..f971b00 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'net.momirealms' -version = '2.0-r4' +version = '2.0-r6' repositories { mavenCentral() diff --git a/src/main/java/net/momirealms/customcrops/config/ConfigUtil.java b/src/main/java/net/momirealms/customcrops/config/ConfigUtil.java index 8099319..42cc90d 100644 --- a/src/main/java/net/momirealms/customcrops/config/ConfigUtil.java +++ b/src/main/java/net/momirealms/customcrops/config/ConfigUtil.java @@ -70,6 +70,7 @@ public class ConfigUtil { SprinklerConfig.load(); WaterCanConfig.load(); SoundConfig.load(); + // would not be activated when enabling if (CustomCrops.plugin.getPlaceholderManager() != null) { CustomCrops.plugin.getPlaceholderManager().unload(); CustomCrops.plugin.getPlaceholderManager().load(); diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java index 1a94e80..34b61af 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java +++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/HandlerP.java @@ -254,11 +254,11 @@ public abstract class HandlerP extends Function { if (instant) { Bukkit.getScheduler().runTaskLater(CustomCrops.plugin, ()-> { if (location.getBlock().getType() != Material.AIR) return; - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, false); },1); } else { - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, false); } } diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java index b6154c1..2be6c14 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java +++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderFrameHandler.java @@ -299,7 +299,7 @@ public class ItemsAdderFrameHandler extends ItemsAdderHandler { if (customWorld == null) return; Fertilizer fertilizer = customWorld.getFertilizer(location.clone().subtract(0,1,0)); - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, true); if (crop.getReturnStage() == null) { customWorld.removeCrop(location); diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java index 283efc7..2ad7478 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java +++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/itemsadder/ItemsAdderWireHandler.java @@ -117,7 +117,9 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler { ItemStack itemInHand = event.getItem(); if (!blockID.equals(BasicItemConfig.deadCrop)) { if (!hasNextStage(blockID)) { - if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && itemInHand != null && itemInHand.getType() != Material.AIR)) { + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if (MainConfig.canRightClickHarvest && !(MainConfig.emptyHand && (mainHand.getType() != Material.AIR || offHand.getType() != Material.AIR))) { if (!AntiGrief.testBreak(player, location)) return; CustomBlock.remove(location); this.onInteractRipeCrop(location, blockID, player); @@ -307,7 +309,7 @@ public class ItemsAdderWireHandler extends ItemsAdderHandler { if (customWorld == null) return; Fertilizer fertilizer = customWorld.getFertilizer(location.clone().subtract(0,1,0)); - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, true); if (crop.getReturnStage() == null) { customWorld.removeCrop(location); diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java index 0d0a0aa..737b039 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java +++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenFrameHandler.java @@ -266,7 +266,7 @@ public class OraxenFrameHandler extends OraxenHandler { if (customWorld == null) return; Fertilizer fertilizer = customWorld.getFertilizer(location.clone().subtract(0,1,0)); - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, true); if (crop.getReturnStage() == null) { customWorld.removeCrop(location); return; diff --git a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java index 2432de7..06c8474 100644 --- a/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java +++ b/src/main/java/net/momirealms/customcrops/integrations/customplugin/oraxen/OraxenWireHandler.java @@ -304,7 +304,7 @@ public class OraxenWireHandler extends OraxenHandler{ if (customWorld == null) return; Fertilizer fertilizer = customWorld.getFertilizer(location.clone().subtract(0,1,0)); - cropManager.proceedHarvest(crop, player, location, fertilizer); + cropManager.proceedHarvest(crop, player, location, fertilizer, true); if (crop.getReturnStage() == null) { customWorld.removeCrop(location); diff --git a/src/main/java/net/momirealms/customcrops/managers/CropManager.java b/src/main/java/net/momirealms/customcrops/managers/CropManager.java index a41a2e0..dadcea3 100644 --- a/src/main/java/net/momirealms/customcrops/managers/CropManager.java +++ b/src/main/java/net/momirealms/customcrops/managers/CropManager.java @@ -138,12 +138,23 @@ public class CropManager extends Function { public void loadSeason() { if (SeasonConfig.enable) { + for (CustomWorld customWorld : customWorlds.values()) { + customWorld.unloadSeason(); + } + if (seasonInterface != null) { + seasonInterface.unload(); + this.seasonInterface = null; + } if (MainConfig.realisticSeasonHook) seasonInterface = new RealisticSeasonsHook(); else seasonInterface = new InternalSeason(); - seasonInterface.load(); + //empty when enabling + for (CustomWorld customWorld : customWorlds.values()) { + customWorld.loadSeason(); + } + return; } - else if (this.seasonInterface != null) { - this.seasonInterface.unload(); + if (seasonInterface != null) { + seasonInterface.unload(); this.seasonInterface = null; } } @@ -300,12 +311,12 @@ public class CropManager extends Function { return customWorlds.get(world); } - public void proceedHarvest(Crop crop, Player player, Location location, @Nullable Fertilizer fertilizer) { + public void proceedHarvest(Crop crop, Player player, Location location, @Nullable Fertilizer fertilizer, boolean isRightClick) { //Call harvest event CropHarvestEvent cropHarvestEvent = new CropHarvestEvent(player, crop, location, fertilizer); Bukkit.getPluginManager().callEvent(cropHarvestEvent); if (cropHarvestEvent.isCancelled()) return; - + if (!isRightClick && player.getGameMode() == GameMode.CREATIVE) return; ActionInterface[] actions = crop.getActions(); if (actions != null) performActions(actions, player); @@ -317,9 +328,6 @@ public class CropManager extends Function { 1,1 ); } - - if (player.getGameMode() == GameMode.CREATIVE) return; - QualityLoot qualityLoot = crop.getQualityLoot(); if (qualityLoot != null) { int amount = ThreadLocalRandom.current().nextInt(qualityLoot.getMin(), qualityLoot.getMax() + 1); diff --git a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java index 7b6f761..c4a00a9 100644 --- a/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java +++ b/src/main/java/net/momirealms/customcrops/managers/CustomWorld.java @@ -120,7 +120,7 @@ public class CustomWorld { backUp(world.getName()); } - private void backUp(String worldName) { + public void backUp(String worldName) { if (!MainConfig.autoBackUp) return; Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); @@ -138,7 +138,7 @@ public class CustomWorld { } } - private void loadScarecrow() { + public void loadScarecrow() { if (!MainConfig.enableCrow) return; try { JsonParser jsonParser = new JsonParser(); @@ -161,7 +161,7 @@ public class CustomWorld { } } - private void unloadScarecrow() { + public void unloadScarecrow() { if (!MainConfig.enableCrow) return; JsonObject jsonObject = new JsonObject(); for (Map.Entry> entry : scarecrowCache.entrySet()) { @@ -180,7 +180,7 @@ public class CustomWorld { } } - private void loadSeason() { + public void loadSeason() { if (!SeasonConfig.enable) return; try { JsonParser jsonParser = new JsonParser(); @@ -203,7 +203,7 @@ public class CustomWorld { } } - private void unloadSeason() { + public void unloadSeason() { if (!SeasonConfig.enable) return; JsonObject jsonObject = new JsonObject(); JsonPrimitive jsonPrimitive = new JsonPrimitive(SeasonUtils.getSeason(world).name()); @@ -216,7 +216,7 @@ public class CustomWorld { SeasonUtils.unloadSeason(world); } - private void loadPot() { + public void loadPot() { try { JsonParser jsonParser = new JsonParser(); JsonElement json= jsonParser.parse(new FileReader(new File(CustomCrops.plugin.getDataFolder().getParentFile().getParentFile(), world.getName() + File.separator + "customcrops_data" + File.separator + "pot.json"))); @@ -238,7 +238,7 @@ public class CustomWorld { } } - private void unloadPot() { + public void unloadPot() { JsonObject jsonObject = new JsonObject(); JsonArray jsonArray = new JsonArray(); watered.addAll(playerWatered); @@ -254,7 +254,7 @@ public class CustomWorld { } } - private void loadFertilizerCache() { + public void loadFertilizerCache() { YamlConfiguration data = loadData("fertilizers", world.getName()); for (String key : data.getKeys(false)) { String[] loc = StringUtils.split(key, ","); @@ -268,7 +268,7 @@ public class CustomWorld { } } - private void unloadFertilizer() { + public void unloadFertilizer() { YamlConfiguration data = new YamlConfiguration(); for (Map.Entry en : fertilizerCache.entrySet()) { SimpleLocation location = en.getKey(); @@ -285,7 +285,7 @@ public class CustomWorld { } } - private void loadSprinklerCache() { + public void loadSprinklerCache() { YamlConfiguration data = loadData("sprinklers", world.getName()); for (String key : data.getKeys(false)) { String[] loc = StringUtils.split(key, ","); @@ -301,7 +301,7 @@ public class CustomWorld { } } - private void unloadSprinkler() { + public void unloadSprinkler() { YamlConfiguration data = new YamlConfiguration(); for (Map.Entry en : sprinklerCache.entrySet()) { SimpleLocation location = en.getKey(); @@ -318,11 +318,11 @@ public class CustomWorld { } } - private void loadCropCache() { + public void loadCropCache() { cropData = loadData("crops", world.getName()); } - private void unloadCrop() { + public void unloadCrop() { try { cropData.save(new File(CustomCrops.plugin.getDataFolder().getParentFile().getParentFile(), world.getName() + File.separator + "customcrops_data" + File.separator + "crops.yml")); }