Skip to content

Commit 24e7b55

Browse files
committed
feat: when dispenser dispenses water
1 parent dd04e97 commit 24e7b55

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

src/main/java/br/minilambda/event/DirtToMudUsingWater.java

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import org.bukkit.Material;
44
import org.bukkit.block.Block;
5+
import org.bukkit.block.data.Directional;
56
import org.bukkit.event.EventHandler;
67
import org.bukkit.event.Listener;
8+
import org.bukkit.event.block.BlockDispenseEvent;
79
import org.bukkit.event.block.BlockFromToEvent;
810
import org.bukkit.event.block.BlockPlaceEvent;
911
import org.bukkit.event.player.PlayerBucketEmptyEvent;
@@ -68,8 +70,8 @@ public void onWaterFlow(BlockFromToEvent event) {
6870
Block bottomBlock = toBlock.getWorld().getBlockAt(
6971
toBlock.getX(),
7072
toBlock.getY() - 1,
71-
toBlock.getZ())
72-
;
73+
toBlock.getZ()
74+
);
7375

7476
// Exit if bottom block is different of dirt.
7577
if(bottomBlock.getType() != Material.DIRT){
@@ -108,4 +110,40 @@ public void onBlockPlaceUnderWater(BlockPlaceEvent event){
108110
// Set block type to mud.
109111
block.setType(Material.MUD);
110112
}
113+
114+
@EventHandler
115+
public void onDispenseWater(BlockDispenseEvent event){
116+
/*
117+
* When dispenser dispenses water.
118+
*/
119+
// Exit if item dispensed is different of water bucket.
120+
if(event.getItem().getType() != Material.WATER_BUCKET){
121+
return;
122+
}
123+
124+
// Get dispense block.
125+
Block dispenseBlock = event.getBlock();
126+
// Get faced block.
127+
Block facedBlock = dispenseBlock.getRelative(
128+
((Directional) dispenseBlock.getBlockData()).getFacing()
129+
);
130+
131+
// Iterating block direction weights.
132+
for(Integer[] weight : this.blockDirections){
133+
// Getting block.
134+
Block block = facedBlock.getWorld().getBlockAt(
135+
facedBlock.getX() + weight[0],
136+
facedBlock.getY() + weight[1],
137+
facedBlock.getZ() + weight[2]
138+
);
139+
140+
// Jump to next loop if block is different of dirt.
141+
if(block.getType() != Material.DIRT){
142+
continue;
143+
}
144+
145+
// Else, set block type to mud block.
146+
block.setType(Material.MUD);
147+
}
148+
}
111149
}

0 commit comments

Comments
 (0)