|
@@ -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
|