v1.4.5b:
- fixed localization encoding (again) - Bench-Block now also blocks Villagers and Anvils - Interacting with specific blocks is now also blocked cross regions
This commit is contained in:
parent
e726509472
commit
679978a561
8 changed files with 72 additions and 10 deletions
|
@ -90,7 +90,7 @@ limit:
|
||||||
button: false
|
button: false
|
||||||
|
|
||||||
# BlockWorkbenches
|
# BlockWorkbenches
|
||||||
# When enabled also blocks usage of workbenches like chests (so the creative player never can see his inventar).
|
# When enabled also blocks usage of workbenches, anvils and vendor-villagers like chests.
|
||||||
# default: false
|
# default: false
|
||||||
workbench: false
|
workbench: false
|
||||||
|
|
||||||
|
|
|
@ -13,9 +13,9 @@ basic:
|
||||||
command:
|
command:
|
||||||
player: Spieler
|
player: Spieler
|
||||||
switch:
|
switch:
|
||||||
survival: ÿndert den Spiel-Modus des Charakters zu ÿberleben
|
survival: Ändert den Spiel-Modus des Charakters zu Überleben
|
||||||
creative: ÿndert den Spiel-Modus des Charakters zu Kreativ
|
creative: Ändert den Spiel-Modus des Charakters zu Kreativ
|
||||||
adventure: ÿndert den Spiel-Modus des Charakters zu Abenteuer
|
adventure: Ändert den Spiel-Modus des Charakters zu Abenteuer
|
||||||
config:
|
config:
|
||||||
overview: "[Einstellung] - liste durch weglassen"
|
overview: "[Einstellung] - liste durch weglassen"
|
||||||
settings: "Verfügbare Einstellungen: "
|
settings: "Verfügbare Einstellungen: "
|
||||||
|
@ -57,10 +57,12 @@ blocked:
|
||||||
button: Im Kreativ-Modus kann nicht mit Buttons interagiert werden
|
button: Im Kreativ-Modus kann nicht mit Buttons interagiert werden
|
||||||
lever: Im Kreativ-Modus kann nicht mit Schaltern interagiert werden
|
lever: Im Kreativ-Modus kann nicht mit Schaltern interagiert werden
|
||||||
survival_flying: Du solltest auf dem Boden stehen wenn du Kreativ-Regionen verlässt
|
survival_flying: Du solltest auf dem Boden stehen wenn du Kreativ-Regionen verlässt
|
||||||
outside_place: Du kannst keine Blöcke auÿerhalb von Spiel-Modus-Regionen setzen
|
outside_place: Du kannst keine Blöcke außerhalb von Spiel-Modus-Regionen setzen
|
||||||
outside_break: Du kannst keine Blöcke auÿerhalb von Spiel-Modus-Regionen zerstören
|
outside_break: Du kannst keine Blöcke außerhalb von Spiel-Modus-Regionen zerstören
|
||||||
|
outside_interact: Du kannst nicht mit Blöcken außerhalb von Spiel-Modus-Regionen interagieren
|
||||||
inside_place: Du kannst keine Blöcke innerhalb von Spiel-Modus-Regionen setzen
|
inside_place: Du kannst keine Blöcke innerhalb von Spiel-Modus-Regionen setzen
|
||||||
inside_break: Du kannst keine Blöcke innerhalb von Spiel-Modus-Regionen zerstören
|
inside_break: Du kannst keine Blöcke innerhalb von Spiel-Modus-Regionen zerstören
|
||||||
|
inside_interact: Du kannst nicht mit Blöcken innerhalb von Spiel-Modus-Regionen interagieren
|
||||||
use: Du darfst diese Art von Gegenständen im Kreativ-Modus verwenden
|
use: Du darfst diese Art von Gegenständen im Kreativ-Modus verwenden
|
||||||
place: Du darfst diese Art von Blöcken im Kreativ-Modus nicht setzen
|
place: Du darfst diese Art von Blöcken im Kreativ-Modus nicht setzen
|
||||||
break: Du darfst diese Art von Blöcken im Kreativ-Modus nicht zerstören
|
break: Du darfst diese Art von Blöcken im Kreativ-Modus nicht zerstören
|
||||||
|
|
|
@ -59,8 +59,10 @@ blocked:
|
||||||
survival_flying: You should stay on ground, when leaving a creative-area
|
survival_flying: You should stay on ground, when leaving a creative-area
|
||||||
outside_place: You can not place blocks outside of the gamemode-area
|
outside_place: You can not place blocks outside of the gamemode-area
|
||||||
outside_break: You can not destroy blocks outside of the gamemode-area
|
outside_break: You can not destroy blocks outside of the gamemode-area
|
||||||
|
outside_interact: You can not interact with blocks outside of the gamemode-area
|
||||||
inside_place: You can not place blocks inside of the gamemode-area
|
inside_place: You can not place blocks inside of the gamemode-area
|
||||||
inside_break: You can not destroy blocks inside of the gamemode-area
|
inside_break: You can not destroy blocks inside of the gamemode-area
|
||||||
|
inside_interact: You can not interact with blocks inside of the gamemode-area
|
||||||
use: You are not allowed to use this type of item
|
use: You are not allowed to use this type of item
|
||||||
place: You are not allowed to place this type of block
|
place: You are not allowed to place this type of block
|
||||||
break: You are not allowed to break this type of block
|
break: You are not allowed to break this type of block
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: LimitedCreative
|
name: LimitedCreative
|
||||||
main: de.jaschastarke.minecraft.limitedcreative.Core
|
main: de.jaschastarke.minecraft.limitedcreative.Core
|
||||||
version: 1.4.0b
|
version: 1.4.5a
|
||||||
softdepend: [WorldGuard, WorldEdit, MultiInv]
|
softdepend: [WorldGuard, WorldEdit, MultiInv]
|
||||||
dev-url: http://dev.bukkit.org/server-mods/limited-creative/
|
dev-url: http://dev.bukkit.org/server-mods/limited-creative/
|
||||||
commands:
|
commands:
|
||||||
|
|
9
pom.xml
9
pom.xml
|
@ -3,7 +3,7 @@
|
||||||
<groupId>de.jaschastarke</groupId>
|
<groupId>de.jaschastarke</groupId>
|
||||||
<artifactId>LimitedCreative</artifactId>
|
<artifactId>LimitedCreative</artifactId>
|
||||||
<name>LimitedCreative</name>
|
<name>LimitedCreative</name>
|
||||||
<version>1.4.0b</version>
|
<version>1.4.5a</version>
|
||||||
<url>https://github.com/possi/LimitedCreative</url>
|
<url>https://github.com/possi/LimitedCreative</url>
|
||||||
<scm>
|
<scm>
|
||||||
<connection>scm:git:git://github.com/possi/LimitedCreative.git</connection>
|
<connection>scm:git:git://github.com/possi/LimitedCreative.git</connection>
|
||||||
|
@ -72,8 +72,13 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bukkit</groupId>
|
<groupId>org.bukkit</groupId>
|
||||||
<artifactId>bukkit</artifactId>
|
<artifactId>bukkit</artifactId>
|
||||||
<version>1.4.2-R0.2</version>
|
<version>1.4.5-R0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>craftbukkit</artifactId>
|
||||||
|
<version>1.4.5-R0.2</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sk89q</groupId>
|
<groupId>com.sk89q</groupId>
|
||||||
<artifactId>worldguard</artifactId>
|
<artifactId>worldguard</artifactId>
|
||||||
|
|
|
@ -356,6 +356,14 @@ public class LCPlayer {
|
||||||
event.getPlayer().sendMessage(L("blocked.chest"));
|
event.getPlayer().sendMessage(L("blocked.chest"));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
public void onBenchAccess(PlayerInteractEntityEvent event) {
|
||||||
|
if (!plugin.config.getBenchBlock() || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
||||||
|
return;
|
||||||
|
if (hasPermission(Perms.NoLimit.CHEST))
|
||||||
|
return;
|
||||||
|
event.getPlayer().sendMessage(L("blocked.chest"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
public void onSignAccess(PlayerInteractEvent event) {
|
public void onSignAccess(PlayerInteractEvent event) {
|
||||||
if (!plugin.config.getSignBlock() || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
if (!plugin.config.getSignBlock() || event.getPlayer().getGameMode() != GameMode.CREATIVE)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.bukkit.entity.ItemFrame;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
import org.bukkit.entity.StorageMinecart;
|
import org.bukkit.entity.StorageMinecart;
|
||||||
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -98,7 +99,7 @@ public class LimitListener implements Listener {
|
||||||
player.onSignAccess(event);
|
player.onSignAccess(event);
|
||||||
} else if (block.getState() instanceof Lever || block.getState() instanceof Button) {
|
} else if (block.getState() instanceof Lever || block.getState() instanceof Button) {
|
||||||
player.onButtonAccess(event);
|
player.onButtonAccess(event);
|
||||||
} else if (block.getType() == Material.WORKBENCH) {
|
} else if (block.getType() == Material.WORKBENCH || block.getType() == Material.ANVIL) {
|
||||||
player.onBenchAccess(event);
|
player.onBenchAccess(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,6 +121,7 @@ public class LimitListener implements Listener {
|
||||||
|
|
||||||
// Temporary Solution: While dropping of Items is prevented we don't allow Interaction with ItemFrames, so no
|
// Temporary Solution: While dropping of Items is prevented we don't allow Interaction with ItemFrames, so no
|
||||||
// Items can be "placed" anywhere.
|
// Items can be "placed" anywhere.
|
||||||
|
// TODO: Improve Configuration
|
||||||
if (!player.hasPermission(Perms.NoLimit.DROP)) {
|
if (!player.hasPermission(Perms.NoLimit.DROP)) {
|
||||||
if (entity instanceof ItemFrame && plugin.config.getRemoveDrop()) {
|
if (entity instanceof ItemFrame && plugin.config.getRemoveDrop()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -130,6 +132,8 @@ public class LimitListener implements Listener {
|
||||||
|
|
||||||
if (entity instanceof StorageMinecart) {
|
if (entity instanceof StorageMinecart) {
|
||||||
player.onChestAccess(event);
|
player.onChestAccess(event);
|
||||||
|
} else if (entity instanceof Villager) {
|
||||||
|
player.onBenchAccess(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,21 +6,28 @@ import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
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.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockPistonExtendEvent;
|
import org.bukkit.event.block.BlockPistonExtendEvent;
|
||||||
import org.bukkit.event.block.BlockPistonRetractEvent;
|
import org.bukkit.event.block.BlockPistonRetractEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.ItemSpawnEvent;
|
import org.bukkit.event.entity.ItemSpawnEvent;
|
||||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
import org.bukkit.material.Button;
|
||||||
|
import org.bukkit.material.Lever;
|
||||||
|
|
||||||
import de.jaschastarke.minecraft.limitedcreative.Core;
|
import de.jaschastarke.minecraft.limitedcreative.Core;
|
||||||
import de.jaschastarke.minecraft.limitedcreative.LCPlayer;
|
import de.jaschastarke.minecraft.limitedcreative.LCPlayer;
|
||||||
import de.jaschastarke.minecraft.limitedcreative.Players;
|
import de.jaschastarke.minecraft.limitedcreative.Players;
|
||||||
|
import de.jaschastarke.minecraft.limitedcreative.listeners.MainListener;
|
||||||
import de.jaschastarke.minecraft.utils.Util;
|
import de.jaschastarke.minecraft.utils.Util;
|
||||||
import de.jaschastarke.minecraft.worldguard.ApplicableRegions;
|
import de.jaschastarke.minecraft.worldguard.ApplicableRegions;
|
||||||
import de.jaschastarke.minecraft.worldguard.CRegionManager;
|
import de.jaschastarke.minecraft.worldguard.CRegionManager;
|
||||||
|
@ -56,6 +63,40 @@ public class RegionListener implements Listener {
|
||||||
whenBlockBreak(event, event.getEntity().getLocation().getBlock(), eventPlayer);
|
whenBlockBreak(event, event.getEntity().getLocation().getBlock(), eventPlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
|
if (MainListener.isCancelled(event))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Block block = event.getClickedBlock();
|
||||||
|
|
||||||
|
if (block.getState() instanceof InventoryHolder || block.getType() == Material.ENDER_CHEST || // Workaround, Bukkit not recognize a Enderchest
|
||||||
|
block.getState() instanceof Sign ||
|
||||||
|
block.getState() instanceof Lever || block.getState() instanceof Button ||
|
||||||
|
block.getType() == Material.WORKBENCH || block.getType() == Material.ANVIL) {
|
||||||
|
|
||||||
|
LCPlayer player = Players.get(event.getPlayer());
|
||||||
|
boolean diffrent_region = rm.isDiffrentRegion(event.getPlayer(), block.getLocation());
|
||||||
|
|
||||||
|
if (player.isActiveRegionGameMode() && diffrent_region) {
|
||||||
|
// do not break outside of "gamemod-change-region" when in the region
|
||||||
|
if (rm.getRegionSet(block).getFlag(Flags.GAMEMODE, event.getPlayer()) != player.getActiveRegionGameMode()) {
|
||||||
|
event.getPlayer().sendMessage(L("blocked.outside_interact"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
} else if (diffrent_region) {
|
||||||
|
// do not break inside of "survial-region in creative world" when outside
|
||||||
|
if (rm.getRegionSet(block).getFlag(Flags.GAMEMODE) != null) {
|
||||||
|
event.getPlayer().sendMessage(L("blocked.inside_interact"));
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void whenBlockBreak(Cancellable event, Block block, Player eventPlayer) {
|
private void whenBlockBreak(Cancellable event, Block block, Player eventPlayer) {
|
||||||
LCPlayer player = Players.get(eventPlayer);
|
LCPlayer player = Players.get(eventPlayer);
|
||||||
|
|
Loading…
Reference in a new issue