diff --git a/Changelog.txt b/Changelog.txt
index 3f896291c..7c6d6aade 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,3 +1,6 @@
+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/pom.xml b/pom.xml
index 99f42ca84..a0bb0cfe9 100755
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.gmail.nossr50.mcMMO
mcMMO
- 2.1.115
+ 2.1.116
mcMMO
https://github.com/mcMMO-Dev/mcMMO
diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java b/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java
index a1ee56320..55fc91767 100644
--- a/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java
+++ b/src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java
@@ -6,8 +6,11 @@ import com.gmail.nossr50.util.skills.ParticleEffectUtils;
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;
@@ -18,6 +21,7 @@ public class DelayedCropReplant extends BukkitRunnable {
private final Material cropMaterial;
private boolean wasImmaturePlant;
private final BlockBreakEvent blockBreakEvent;
+ private BlockFace cropFace;
/**
* Replants a crop after a delay setting the age to desiredCropAge
@@ -25,6 +29,13 @@ public class DelayedCropReplant extends BukkitRunnable {
* @param desiredCropAge desired age of the crop
*/
public DelayedCropReplant(BlockBreakEvent blockBreakEvent, BlockState cropState, int desiredCropAge, boolean wasImmaturePlant) {
+ 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;
@@ -51,22 +62,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