Skip to content

Commit 650f3ad

Browse files
authored
Merge pull request #1 from stan60250/master
Merge
2 parents 02028df + fb61b4c commit 650f3ad

File tree

6 files changed

+58
-16
lines changed

6 files changed

+58
-16
lines changed

config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,6 @@ lockables:
4343
- DARK_OAK_DOOR
4444
- IRON_DOOR_BLOCK
4545
protection-exempt:
46-
- nothing
46+
- nothing
47+
disable-worlds:
48+
- world_without_lockettepro

lang_zh-tw.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Traditional Chinese translation by MapleHuang([email protected])
2+
command-usage: "&6[LockettePro]&bLockettePro 插件說明\n&c1. 為箱子新增或刪除使用者,首先右鍵選取一個告示牌, 然後輸入/lock 行號 玩家名稱 即可\n&c2. 管理員重新載入插件設定,使用 /lock reload\nLockettePro by connection_lost"
3+
you-can-quick-lock-it: '&6[LockettePro]&6手持告示牌對目標方塊點右鍵即可上鎖'
4+
you-can-manual-lock-it: '&6[LockettePro]&6貼上一個告示牌並寫上[Private]即可上鎖'
5+
config-reloaded: '&6[LockettePro]&a設定已重新載入'
6+
no-permission: '&6[LockettePro]&c權限不足! 無法使用該指令'
7+
no-sign-selected: '&6[LockettePro]&c請先右鍵選擇一個告示牌'
8+
sign-need-reselect: '&6[LockettePro]&c請重新選擇一個告示牌'
9+
line-is-too-long: '&6[LockettePro]&c設定輸入告示牌的文字過長!'
10+
cannot-change-this-line: '&6[LockettePro]&c無法修改這一行'
11+
sign-changed: '&6[LockettePro]&a告示牌已修改'
12+
locked-quick: '&6[LockettePro]&a已成功上鎖'
13+
additional-sign-added-quick: '&6[LockettePro]&a更多的使用者告示牌已新增'
14+
cannot-lock-quick: '&6[LockettePro]&c這個方塊無法上鎖'
15+
cannot-add-additional-sign-quick: '&6[LockettePro]&c無法在這裡新增告示牌'
16+
locked-manual: '&6[LockettePro]&a已成功上鎖'
17+
additional-sign-added-manual: '&6[LockettePro]&a更多的使用者告示牌已新增'
18+
cannot-lock-manual: '&6[LockettePro]&c這個方塊無法上鎖'
19+
cannot-add-additional-sign-manual: '&6[LockettePro]&c無法在這裡新增告示牌'
20+
not-locked-yet-manual: '&6[LockettePro]&c這個方塊還沒有上鎖'
21+
cannot-lock-door-nearby-manual: '&6[LockettePro]&c這附近已經有其他人上鎖的門'
22+
block-already-locked-manual: '&6[LockettePro]&c這個方塊已經被上鎖了'
23+
block-is-not-lockable: '&6[LockettePro]&c這個方塊無法上鎖'
24+
sign-selected: '&6[LockettePro]&a您選擇了一個告示牌,輸入/lock 行號 玩家名稱 來修改它'
25+
break-own-lock-sign: '&6[LockettePro]&a上鎖的告示牌已拆除'
26+
cannot-break-this-lock-sign: '&6[LockettePro]&c無法拆除其他玩家上鎖的告示牌'
27+
break-own-additional-sign: '&6[LockettePro]&a更多使用者的告示牌已拆除'
28+
break-redundant-additional-sign: '&6[LockettePro]&a更多使用者的告示牌已拆除'
29+
cannot-break-this-additional-sign: '&6[LockettePro]&c無法拆除其他玩家上鎖的告示牌'
30+
block-is-locked: '&6[LockettePro]&c這個方塊已被上鎖'
31+
cannot-interfere-with-others: '&6[LockettePro]&c無法在已上鎖的方塊附近放置其他物件'
32+
sign-error: '&4[ERROR]'

src/me/crafter/mc/lockettepro/BlockEnvironmentListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class BlockEnvironmentListener implements Listener{
2222
// Prevent explosion break block
2323
@EventHandler(priority = EventPriority.HIGH)
2424
public void onEntityExplode(EntityExplodeEvent event){
25-
if (Config.isProtectionExempted("explosion")) return;
25+
if (Config.isProtectionExempted("explosion")) return;
2626
Iterator<Block> it = event.blockList().iterator();
2727
while (it.hasNext()) {
2828
Block block = it.next();
@@ -56,7 +56,7 @@ public void onStructureGrow(StructureGrowEvent event){
5656
// Prevent piston extend break lock
5757
@EventHandler(priority = EventPriority.HIGH)
5858
public void onPistonExtend(BlockPistonExtendEvent event){
59-
if (Config.isProtectionExempted("piston")) return;
59+
if (Config.isProtectionExempted("piston")) return;
6060
for (Block block : event.getBlocks()){
6161
if (LocketteProAPI.isProtected(block)){
6262
event.setCancelled(true);
@@ -89,7 +89,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event){
8989
// Prevent villager open door
9090
@EventHandler(priority = EventPriority.HIGH)
9191
public void onVillagerOpenDoor(EntityInteractEvent event){
92-
if (Config.isProtectionExempted("villager")) return;
92+
if (Config.isProtectionExempted("villager")) return;
9393
// Explicitly to villager vs all doors
9494
if (event.getEntity() instanceof Villager &&
9595
(LocketteProAPI.isSingleDoorBlock(event.getBlock()) || LocketteProAPI.isDoubleDoorBlock(event.getBlock())) &&

src/me/crafter/mc/lockettepro/BlockPlayerListener.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323
public class BlockPlayerListener implements Listener {
2424

2525
// Quick protect for chests
26-
@EventHandler(priority = EventPriority.NORMAL)
26+
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
2727
public void onPlayerQuickLockChest(PlayerInteractEvent event){
28-
if (event.isCancelled()) return;
2928
// Check quick lock enabled
3029
if (Config.getQuickProtectAction() == (byte)0) return;
30+
// Check world enabled
31+
if (Config.isDisabledWorld(event.getPlayer().getWorld().getName())) return;
3132
// Get player and action info
3233
Action action = event.getAction();
3334
Player player = event.getPlayer();
@@ -165,7 +166,7 @@ public void onManualLock(SignChangeEvent event){
165166
}
166167

167168
// Player select sign
168-
@EventHandler(priority = EventPriority.LOW)
169+
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
169170
public void playerSelectSign(PlayerInteractEvent event){
170171
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.WALL_SIGN){
171172
Block block = event.getClickedBlock();
@@ -180,9 +181,8 @@ public void playerSelectSign(PlayerInteractEvent event){
180181
}
181182

182183
// Player break sign
183-
@EventHandler(priority = EventPriority.HIGH)
184+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
184185
public void onAttemptBreakSign(BlockBreakEvent event){
185-
if (event.isCancelled()) return;
186186
Block block = event.getBlock();
187187
Player player = event.getPlayer();
188188
if (player.hasPermission("lockettepro.admin.break")) return;
@@ -214,9 +214,8 @@ public void onAttemptBreakSign(BlockBreakEvent event){
214214
}
215215

216216
// Protect block from being destroyed
217-
@EventHandler(priority = EventPriority.HIGH)
217+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
218218
public void onAttemptBreakLockedBlocks(BlockBreakEvent event){
219-
if (event.isCancelled()) return;
220219
Block block = event.getBlock();
221220
Player player = event.getPlayer();
222221
if (LocketteProAPI.isLocked(block) || LocketteProAPI.isUpDownLockedDoor(block)){
@@ -285,9 +284,8 @@ public void onAttemptInteractLockedBlocks(PlayerInteractEvent event){
285284
}
286285

287286
// Protect block from interfere block
288-
@EventHandler(priority = EventPriority.HIGH)
287+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
289288
public void onAttemptPlaceInterfereBlocks(BlockPlaceEvent event){
290-
if (event.isCancelled()) return;
291289
Block block = event.getBlock();
292290
Player player = event.getPlayer();
293291
if (player.hasPermission("lockettepro.admin.interfere")) return;
@@ -299,9 +297,8 @@ public void onAttemptPlaceInterfereBlocks(BlockPlaceEvent event){
299297
}
300298

301299
// Tell player about lockettepro
302-
@EventHandler(priority = EventPriority.MONITOR)
300+
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
303301
public void onPlaceFirstBlockNotify(BlockPlaceEvent event){
304-
if (event.isCancelled()) return;
305302
Block block = event.getBlock();
306303
Player player = event.getPlayer();
307304
if (!player.hasPermission("lockettepro.lock")) return;

src/me/crafter/mc/lockettepro/Config.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class Config {
3939
private static long lockdefaultcreatetime = -1L;
4040
private static String lockexpirestring = "";
4141
private static Set<String> protectionexempt = new HashSet<String>();
42+
private static Set<String> disableWorlds = new HashSet<String>();
4243

4344
public Config(Plugin _plugin){
4445
plugin = _plugin;
@@ -76,10 +77,12 @@ public static void reload(){
7677
List<String> additionalstringlist = config.getStringList("additional-signs");
7778
List<String> everyonestringlist = config.getStringList("everyone-signs");
7879
List<String> protectionexemptstringlist = config.getStringList("protection-exempt");
80+
List<String> disableworldsstringlist = config.getStringList("disable-worlds");
7981
privatestrings = new HashSet<String>(privatestringlist);
8082
additionalstrings = new HashSet<String>(additionalstringlist);
8183
everyonestrings = new HashSet<String>(everyonestringlist);
8284
protectionexempt = new HashSet<String>(protectionexemptstringlist);
85+
disableWorlds = new HashSet<String>(disableworldsstringlist);
8386
defaultprivatestring = privatestringlist.get(0);
8487
defaultadditionalstring = additionalstringlist.get(0);
8588

@@ -199,7 +202,7 @@ public static void initDefaultConfig(){
199202
}
200203

201204
public static void initAdditionalFiles(){
202-
String[] availablefiles = {"lang.yml", "lang_zh-cn.yml", "lang_es.yml", "lang_it.yml"};
205+
String[] availablefiles = {"lang.yml", "lang_zh-cn.yml", "lang_zh-tw.yml", "lang_es.yml", "lang_it.yml"};
203206
for (String filename : availablefiles){
204207
File langfile = new File(plugin.getDataFolder(), filename);
205208
if (!langfile.exists()){
@@ -287,4 +290,8 @@ public static boolean isProtectionExempted(String against){
287290
return protectionexempt.contains(against);
288291
}
289292

293+
public static boolean isDisabledWorld(String worldName){
294+
return disableWorlds.contains(worldName);
295+
}
296+
290297
}

src/me/crafter/mc/lockettepro/LocketteProAPI.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public class LocketteProAPI {
1717

1818
public static boolean isLocked(Block block){
1919
if (block == null) return false;
20+
// World check
21+
if (Config.isDisabledWorld(block.getWorld().getName())) return false;
2022
switch (block.getType()){
2123
// Double Doors
2224
case WOODEN_DOOR:
@@ -208,6 +210,8 @@ public static boolean isOwnerOfSign(Block block, Player player){ // Requires isS
208210
}
209211

210212
public static boolean isLockable(Block block){
213+
// World check
214+
if (block != null && Config.isDisabledWorld(block.getWorld().getName())) return false;
211215
Material material = block.getType();
212216
//Bad blocks
213217
switch (material){

0 commit comments

Comments
 (0)