Added entityInteract-limitation on region border
This commit is contained in:
parent
a622d4e405
commit
cdcf18cda5
3 changed files with 33 additions and 10 deletions
|
@ -2,6 +2,7 @@ package de.jaschastarke.minecraft.limitedcreative.regions;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
@ -10,6 +11,7 @@ import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
import org.bukkit.material.Button;
|
import org.bukkit.material.Button;
|
||||||
|
@ -23,11 +25,8 @@ public class PlayerListener extends Listener {
|
||||||
super(mod);
|
super(mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
if (isCancelled(event))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -56,6 +55,26 @@ public class PlayerListener extends Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||||
|
PlayerMeta pmeta = new PlayerMeta(event.getPlayer());
|
||||||
|
Location loc = event.getRightClicked().getLocation();
|
||||||
|
boolean diffrent_region = getRM().isDiffrentRegion(event.getPlayer(), loc);
|
||||||
|
|
||||||
|
if (pmeta.isActiveRegionGameMode() && diffrent_region) {
|
||||||
|
// do not break outside of "gamemod-change-region" when in the region
|
||||||
|
if (getRM().getRegionSet(loc).getFlag(Flags.GAMEMODE, event.getPlayer()) != pmeta.getActiveRegionGameMode()) {
|
||||||
|
event.getPlayer().sendMessage(L("blocked.outside_interact_entity"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
} else if (diffrent_region) {
|
||||||
|
// do not break inside of "survial-region in creative world" when outside
|
||||||
|
if (getRM().getRegionSet(loc).getFlag(Flags.GAMEMODE) != null) {
|
||||||
|
event.getPlayer().sendMessage(L("blocked.inside_interact_entity"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isRegionOptional(Player player) {
|
private boolean isRegionOptional(Player player) {
|
||||||
return mod.getRegionManager().getRegionSet(player.getLocation()).allows(Flags.GAMEMODE_OPTIONAL);
|
return mod.getRegionManager().getRegionSet(player.getLocation()).allows(Flags.GAMEMODE_OPTIONAL);
|
||||||
|
|
|
@ -43,9 +43,11 @@ blocked.survival_flying: You should stay on ground, when leaving a creative-area
|
||||||
blocked.outside_place: You can not place blocks outside of the gamemode-area
|
blocked.outside_place: You can not place blocks outside of the gamemode-area
|
||||||
blocked.outside_break: You can not destroy blocks outside of the gamemode-area
|
blocked.outside_break: You can not destroy blocks outside of the gamemode-area
|
||||||
blocked.outside_interact: You can not interact with those blocks outside of the gamemode-area
|
blocked.outside_interact: You can not interact with those blocks outside of the gamemode-area
|
||||||
|
blocked.outside_interact_entity: You can not interact with out of the gamemode-area
|
||||||
blocked.inside_place: You can not place blocks inside of the gamemode-area
|
blocked.inside_place: You can not place blocks inside of the gamemode-area
|
||||||
blocked.inside_break: You can not destroy blocks inside of the gamemode-area
|
blocked.inside_break: You can not destroy blocks inside of the gamemode-area
|
||||||
blocked.inside_interact: You can not interact with those blocks inside of the gamemode-area
|
blocked.inside_interact: You can not interact with those blocks inside of the gamemode-area
|
||||||
|
blocked.inside_interact_entity: You can not interact with this into gamemode-area
|
||||||
blocked.interact: You are not allowed to interact with this type of blocks
|
blocked.interact: You are not allowed to interact with this type of blocks
|
||||||
blocked.entity: You are not allowed to interact with this type of entity
|
blocked.entity: You are not allowed to interact with this type of entity
|
||||||
blocked.use: You are not allowed to use this type of item
|
blocked.use: You are not allowed to use this type of item
|
||||||
|
|
|
@ -40,12 +40,14 @@ exception.region.not_optional: Du kannst in diesem Bereich nicht in den {0}-Modu
|
||||||
blocked.inventory: Inventar öffnen ist im Kreativ-Modus nicht gestattet
|
blocked.inventory: Inventar öffnen ist im Kreativ-Modus nicht gestattet
|
||||||
blocked.chest: Der Zugriff auf Truhen ist im Kreativ-Modus nicht gestattet.
|
blocked.chest: Der Zugriff auf Truhen ist im Kreativ-Modus nicht gestattet.
|
||||||
blocked.survival_flying: Du solltest auf dem Boden stehen um einen Kreativ-Bereich zu verlassen
|
blocked.survival_flying: Du solltest auf dem Boden stehen um einen Kreativ-Bereich zu verlassen
|
||||||
blocked.outside_place: Du kannst keine Blöcke außerhalb eines GameMode-Bereich bauen
|
blocked.outside_place: Du kannst keine Blöcke aus einem GameMode-Bereich heraus bauen
|
||||||
blocked.outside_break: Du kannst keine Blöcke außerhalb eines GameMode-Bereich zerstören
|
blocked.outside_break: Du kannst keine Blöcke aus einem GameMode-Bereich heraus zerstören
|
||||||
blocked.outside_interact: Du kannst nicht mit Blöcken außerhalb eines GameMode-Bereichts interagieren
|
blocked.outside_interact: Du kannst nicht mit Blöcken außerhalb eines GameMode-Bereichs interagieren
|
||||||
blocked.inside_place: Du kannst keine Blöcke in einen GameMode-Bereich bauen
|
blocked.outside_interact_entity: Du kannst damit nicht aus einem GameMode-Bereich heraus interagieren
|
||||||
blocked.inside_break: Du kannst keine Blöcke in einem GameMode-Bereich zerstören
|
blocked.inside_place: Du kannst keine Blöcke in einen GameMode-Bereich herein bauen
|
||||||
blocked.inside_interact: Du kannst nicht mit Blöcken in einem GameMode-Bereich interagieren
|
blocked.inside_break: Du kannst von außerhalb keine Blöcke in einem GameMode-Bereich zerstören
|
||||||
|
blocked.inside_interact: Du kannst von außerhalb nicht mit Blöcken in einem GameMode-Bereich interagieren
|
||||||
|
blocked.inside_interact_entity: Du kannst damit nicht von außerhalb eines GameMode-Bereich interagieren
|
||||||
blocked.interact: Du darfst mit dieser Art Block nicht interagieren
|
blocked.interact: Du darfst mit dieser Art Block nicht interagieren
|
||||||
blocked.entity: Du darfst nicht mit diesen Kreaturen interagieren
|
blocked.entity: Du darfst nicht mit diesen Kreaturen interagieren
|
||||||
blocked.use: Du darfst diese Art Gegenstand nicht verwenden
|
blocked.use: Du darfst diese Art Gegenstand nicht verwenden
|
||||||
|
|
Loading…
Reference in a new issue