mirror of
https://github.com/CivMC/Civ.git
synced 2026-07-15 23:20:44 +00:00
Merge pull request #53 from remyroy/master
Fix for issue #52 Fortified rails do not resist lava.
This commit is contained in:
@@ -26,11 +26,13 @@ import org.bukkit.event.block.BlockPistonExtendEvent;
|
||||
import org.bukkit.event.block.BlockPistonRetractEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.block.BlockRedstoneEvent;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.material.Openable;
|
||||
import org.bukkit.material.PistonBaseMaterial;
|
||||
import org.bukkit.Effect;
|
||||
|
||||
import com.untamedears.citadel.Citadel;
|
||||
import com.untamedears.citadel.PlacementMode;
|
||||
@@ -189,6 +191,27 @@ public class BlockListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW)
|
||||
public void blockPhysics(BlockPhysicsEvent bpe) {
|
||||
Material changedType = bpe.getChangedType();
|
||||
if (Material.LAVA == changedType) {
|
||||
Block block = bpe.getBlock();
|
||||
// Protection for reinforced rails types from lava. Similar to water, transform surrounding blocks in cobblestone to stop the lava effect.
|
||||
if (Material.RAILS == block.getType() || Material.POWERED_RAIL == block.getType() || Material.DETECTOR_RAIL == block.getType()) {
|
||||
boolean isReinforced = maybeReinforcementDamaged(block);
|
||||
if (isReinforced) {
|
||||
for (BlockFace blockFace : new BlockFace[]{BlockFace.DOWN, BlockFace.UP, BlockFace.EAST, BlockFace.WEST, BlockFace.NORTH, BlockFace.SOUTH}) {
|
||||
Block otherBlock = block.getRelative(blockFace);
|
||||
if (Material.LAVA == otherBlock.getType()) {
|
||||
otherBlock.setType(Material.COBBLESTONE);
|
||||
otherBlock.getWorld().playEffect(otherBlock.getLocation(), Effect.EXTINGUISH, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
||||
public void redstonePower(BlockRedstoneEvent bre) {
|
||||
try {
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.untamedears.citadel.listener;
|
||||
|
||||
import static com.untamedears.citadel.Utility.createReinforcement;
|
||||
import static com.untamedears.citadel.Utility.maybeReinforcementDamaged;
|
||||
import static com.untamedears.citadel.Utility.sendMessage;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,6 +17,7 @@ import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.material.Openable;
|
||||
|
||||
import com.untamedears.citadel.Citadel;
|
||||
@@ -88,6 +91,21 @@ public class PlayerListener implements Listener {
|
||||
interact(pie);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOW)
|
||||
public void bucketEmpty(PlayerBucketEmptyEvent pbee) {
|
||||
Material bucket = pbee.getBucket();
|
||||
if (Material.LAVA_BUCKET == bucket) {
|
||||
Block block = pbee.getBlockClicked();
|
||||
BlockFace face = pbee.getBlockFace();
|
||||
Block relativeBlock = block.getRelative(face);
|
||||
// Protection for reinforced rails types from direct lava bucket drop.
|
||||
if (Material.RAILS == relativeBlock.getType() || Material.POWERED_RAIL == relativeBlock.getType() || Material.DETECTOR_RAIL == relativeBlock.getType()) {
|
||||
boolean isReinforced = maybeReinforcementDamaged(relativeBlock);
|
||||
pbee.setCancelled(isReinforced);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void interact(PlayerInteractEvent pie) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user