diff --git a/Changelog.txt b/Changelog.txt index 9757aa906..1f42bd9e4 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,4 @@ +<<<<<<< HEAD Version 2.2.0 !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!! @@ -203,6 +204,9 @@ Version 2.2.0 Added API method to check if a skill was being level capped Added 'UndefinedSkillBehaviour' for trying to use a method that has no behaviour defined for the provided skill +Version 2.1.116 + Fixed directional plants not maintaining their direction when replanted + Version 2.1.115 Green Thumb now requires a hoe to activate Hoes no longer give free replants diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java b/mcmmo-core/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java index eb7456b6e..373fd12ee 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java @@ -6,8 +6,11 @@ import com.gmail.nossr50.mcMMO; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.block.data.Ageable; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Directional; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.scheduler.BukkitRunnable; @@ -19,6 +22,7 @@ public class DelayedCropReplant extends BukkitRunnable { private boolean wasImmaturePlant; private final BlockBreakEvent blockBreakEvent; private final mcMMO pluginRef; + private BlockFace cropFace; /** * Replants a crop after a delay setting the age to desiredCropAge @@ -27,6 +31,13 @@ public class DelayedCropReplant extends BukkitRunnable { */ public DelayedCropReplant(mcMMO pluginRef, BlockBreakEvent blockBreakEvent, BlockState cropState, int desiredCropAge, boolean wasImmaturePlant) { this.pluginRef = pluginRef; + BlockData cropData = cropState.getBlockData(); + + if(cropData instanceof Directional) { + Directional cropDir = (Directional) cropData; + cropFace = cropDir.getFacing(); + } + //The plant was either immature or something cancelled the event, therefor we need to treat it differently this.blockBreakEvent = blockBreakEvent; this.wasImmaturePlant = wasImmaturePlant; @@ -53,22 +64,33 @@ public class DelayedCropReplant extends BukkitRunnable { //The space is not currently occupied by a block so we can fill it cropBlock.setType(cropMaterial); + //Get new state (necessary?) BlockState newState = cropBlock.getState(); -// newState.update(); + BlockData newData = newState.getBlockData(); - Ageable ageable = (Ageable) newState.getBlockData(); + int age = 0; //Crop age should always be 0 if the plant was immature - if(wasImmaturePlant) { - ageable.setAge(0); - } else { + if(!wasImmaturePlant) { + age = desiredCropAge; //Otherwise make the plant the desired age - ageable.setAge(desiredCropAge); + } + + if(newData instanceof Directional) { + //Cocoa Version + Directional directional = (Directional) newState.getBlockData(); + directional.setFacing(cropFace); + + newState.setBlockData(directional); } //Age the crop + Ageable ageable = (Ageable) newState.getBlockData(); + ageable.setAge(age); newState.setBlockData(ageable); + + newState.update(true); //Play an effect