|
6 | 6 | import org.bukkit.event.EventHandler; |
7 | 7 | import org.bukkit.event.Listener; |
8 | 8 | import org.bukkit.event.block.BlockDispenseEvent; |
| 9 | +import org.bukkit.event.block.BlockFadeEvent; |
9 | 10 | import org.bukkit.event.block.BlockFromToEvent; |
10 | 11 | import org.bukkit.event.block.BlockPlaceEvent; |
11 | 12 | import org.bukkit.event.player.PlayerBucketEmptyEvent; |
@@ -146,4 +147,35 @@ public void onDispenseWater(BlockDispenseEvent event){ |
146 | 147 | block.setType(Material.MUD); |
147 | 148 | } |
148 | 149 | } |
| 150 | + |
| 151 | + @EventHandler |
| 152 | + public void onBlockFadeToWater(BlockFadeEvent event){ |
| 153 | + /* |
| 154 | + * When block fade to water (ex: ice block). |
| 155 | + */ |
| 156 | + // Getting fadded block. |
| 157 | + Block fadedBlock = event.getBlock(); |
| 158 | + // Exit if new block state is different of water. |
| 159 | + if(event.getNewState().getType() != Material.WATER){ |
| 160 | + return; |
| 161 | + } |
| 162 | + |
| 163 | + // Iterating block direction weights. |
| 164 | + for(Integer[] weight : this.blockDirections){ |
| 165 | + // Getting block. |
| 166 | + Block block = fadedBlock.getWorld().getBlockAt( |
| 167 | + fadedBlock.getX() + weight[0], |
| 168 | + fadedBlock.getY() + weight[1], |
| 169 | + fadedBlock.getZ() + weight[2] |
| 170 | + ); |
| 171 | + |
| 172 | + // Jump to next loop if block is different of dirt. |
| 173 | + if(block.getType() != Material.DIRT){ |
| 174 | + continue; |
| 175 | + } |
| 176 | + |
| 177 | + // Else, set block type to mud block. |
| 178 | + block.setType(Material.MUD); |
| 179 | + } |
| 180 | + } |
149 | 181 | } |
0 commit comments