Hopper, Furnace and Chest Minecarts are now protected by proper flags (#565)

#550 

* Implement HopperMinecart, ChestMinecart and FurnaceMinecart protection by proper flags (#550).

* Add proper Minecart while checking player interact at entity event.
Minecraft flag should affect RidableMinecrat.
Added ExplosiveMinecart and CommandMinecart to avoid their usage, as they are not protected by other flags.

* Fixed the "basic" Minecart protection
This commit is contained in:
BONNe 2019-02-19 22:46:08 +02:00 committed by Florian CUNY
parent 9b1e955d18
commit a505a3cede
3 changed files with 9 additions and 4 deletions

View File

@ -213,6 +213,7 @@ public class BlockInteractionListener extends FlagListener {
case SPRUCE_FENCE_GATE:
checkIsland(e, player, loc, Flags.GATE);
break;
case FURNACE_MINECART:
case FURNACE:
checkIsland(e, player, loc, Flags.FURNACE);
break;

View File

@ -5,8 +5,8 @@ import org.bukkit.entity.Animals;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Boat;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Minecart;
import org.bukkit.entity.Vehicle;
import org.bukkit.entity.minecart.RideableMinecart;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
@ -38,7 +38,7 @@ public class EntityInteractListener extends FlagListener {
checkIsland(e, e.getPlayer(), e.getRightClicked().getLocation(), Flags.RIDING);
}
// Minecart riding
else if (e.getRightClicked() instanceof Minecart) {
else if (e.getRightClicked() instanceof RideableMinecart) {
checkIsland(e, e.getPlayer(), e.getRightClicked().getLocation(), Flags.MINECART);
}
// Boat riding

View File

@ -10,6 +10,8 @@ import org.bukkit.block.Hopper;
import org.bukkit.block.ShulkerBox;
import org.bukkit.entity.Animals;
import org.bukkit.entity.Player;
import org.bukkit.entity.minecart.HopperMinecart;
import org.bukkit.entity.minecart.StorageMinecart;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.inventory.InventoryClickEvent;
@ -39,7 +41,8 @@ public class InventoryListener extends FlagListener {
checkIsland(e, player, e.getInventory().getLocation(), Flags.MOUNT_INVENTORY);
}
else if (inventoryHolder instanceof Chest
|| inventoryHolder instanceof ShulkerBox) {
|| inventoryHolder instanceof ShulkerBox
|| inventoryHolder instanceof StorageMinecart) {
checkIsland(e, player, e.getInventory().getLocation(), Flags.CONTAINER);
}
else if (inventoryHolder instanceof Dispenser) {
@ -48,7 +51,8 @@ public class InventoryListener extends FlagListener {
else if (inventoryHolder instanceof Dropper) {
checkIsland(e, player, e.getInventory().getLocation(), Flags.DROPPER);
}
else if (inventoryHolder instanceof Hopper) {
else if (inventoryHolder instanceof Hopper
|| inventoryHolder instanceof HopperMinecart) {
checkIsland(e, player, e.getInventory().getLocation(), Flags.HOPPER);
}
else if (inventoryHolder instanceof Furnace) {