diff --git a/lang/ko.yml b/lang/ko.yml index ea22443c..c4bc2b69 100644 --- a/lang/ko.yml +++ b/lang/ko.yml @@ -12,9 +12,9 @@ CHECK_CONFIG: "config.yml을 확인하세요" COMMAND_CONSOLE: "콘솔에서 명령어를 실행하세요." COMMAND_NOT_FOUND: "\"{0}\" 명령어를 찾을 수 없습니다." COMMAND_THROTTLED: "잠시 기다렸다가 다시 시도하십시오." -CONSUMER_ERROR: "소비자 대기열 처리가 이미 {일시 중지|재개}되었습니다." +CONSUMER_ERROR: "소비자 대기열 처리가 이미 {일시 중지|재개}되있습니다!" CONSUMER_TOGGLED: "소비자 대기열 처리가 {일시 중지|재개}되었습니다." -CONTAINER_HEADER: "컨테이너 거래" +CONTAINER_HEADER: "컨테이너 기록" DATABASE_BUSY: "데이터베이스가 사용 중입니다. 나중에 다시 시도하십시오." DATABASE_INDEX_ERROR: "데이터베이스 인덱스의 유효성을 검사할 수 없습니다." DATABASE_LOCKED_1: "데이터베이스가 잠겼습니다. 최대 15초 대기 중..." @@ -27,7 +27,7 @@ DIRT_BLOCK: "당신 아래에 흙 블록을 설치했습니다." DISABLE_SUCCESS: "성공! {0} 비활성화됨" ENABLE_FAILED: "{0}을(를) 시작할 수 없습니다." ENABLE_SUCCESS: "{0}이(가) 성공적으로 활성화되었습니다!" -ENJOY_COREPROTECT: "{0}을(를) 즐기시나요? Discord에 참여하세요!" +ENJOY_COREPROTECT: "{0}을(를) 사용중이신가요? Discord 서버에 참여해보세요!" FINISHING_CONVERSION: "데이터 변환을 완료하는 중입니다. 잠시 기다려 주세요..." FINISHING_LOGGING: "데이터 로깅을 완료하는 중입니다. 잠시 기다려 주십시오..." FIRST_VERSION: "초기 DB: {0}" @@ -47,7 +47,7 @@ HELP_INSPECT_3: "블록을 마우스 오른쪽 버튼으로 클릭하면 인접 HELP_INSPECT_4: "블록을 배치하여 해당 위치에서 어떤 블록이 깨졌는지 확인하세요." HELP_INSPECT_5: "누가 설치했는지 확인하려면 액체(등)에 블록을 배치하세요." HELP_INSPECT_6: "문, 상자 등을 마우스 오른쪽 버튼으로 클릭하면 누가 마지막으로 사용했는지 확인할 수 있습니다." -HELP_INSPECT_7: "팁: 더 빠른 액세스를 위해 \"/co i\"만 사용할 수 있습니다." +HELP_INSPECT_7: "팁: 더 빠른 액세스를 위해 \"/co i\"명령어를 사용할 수 있습니다." HELP_INSPECT_COMMAND: "블록 로그 조사를 켜거나 끕니다." HELP_LIST: "모든 명령어 목록을 표시합니다." HELP_LOOKUP_1: "명령어 단축키." @@ -78,8 +78,8 @@ HELP_TIME_2: "예: [t:2w,5d,7h,2m,10s], [t:5d2h], [t:2.50h]" HELP_USER_1: "조회할 사용자를 지정하세요." HELP_USER_2: "예: [u:notch], [u:notch,#enderman]" INCOMPATIBLE_ACTION: "\"{0}\"은(는) 해당 작업과 함께 사용할 수 없습니다." -INSPECTOR_ERROR: "로그 조사가 이미 {활성화|비활성화}되었습니다." -INSPECTOR_TOGGLED: "로그 조사가 이제 {활성화|비활성화}되었습니다." +INSPECTOR_ERROR: "로그 조사가 이미 {활성화|비활성화}되있습니다!" +INSPECTOR_TOGGLED: "로그 조사가 {활성화|비활성화}되었습니다." INTEGRATION_ERROR: "{0} 로깅을 {초기화|비활성화}할 수 없습니다." INTEGRATION_SUCCESS: "{0} 로깅이 성공적으로 {초기화|비활성화}되었습니다." INTEGRATION_VERSION: "잘못된 {0} 버전이 발견되었습니다." @@ -111,10 +111,10 @@ LOOKUP_INTERACTION: "{0}이(가) {1}을(를) {클릭|처치}했습니다." LOOKUP_ITEM: "{0}이(가) {2}에서 {1}을(를) {획득|드롭}했습니다." LOOKUP_LOGIN: "{0}이(가) {로그인|로그아웃}했습니다." LOOKUP_PAGE: "페이지 {0}" -LOOKUP_PROJECTILE: "{0}이(가) {2}에서 {1}을(를) {던짐|쏨}." -LOOKUP_ROWS_FOUND: "{0} {열|열}이(가) 발견되었습니다." +LOOKUP_PROJECTILE: "{0}이(가) {2}에서 {1}을(를) {던졌|발사했}습니다.." +LOOKUP_ROWS_FOUND: "{0} {열|열}이 발견되었습니다." LOOKUP_SEARCHING: "조회 중입니다. 잠시만 기다려 주세요..." -LOOKUP_STORAGE: "{0}이(가) {2}에서 {1}을(를) {예치|인출}했습니다." +LOOKUP_STORAGE: "{0}이(가) {2}에서 {1}을(를) {추가|제거}했습니다." LOOKUP_TIME: "{0} 전" LOOKUP_USERNAME: "{0}이(가) {1}으로 로그인했습니다." MAXIMUM_RADIUS: "최대 {조회|롤백|복원} 반경은 {0}입니다." @@ -128,7 +128,7 @@ MYSQL_UNAVAILABLE: "MySQL 서버에 연결할 수 없습니다." NETWORK_CONNECTION: "{0} 연결 {성공|실패}. {1} {2} 사용 중." NETWORK_TEST: "네트워크 테스트 데이터가 성공적으로 전송되었습니다." NO_DATA: "{0}에서 데이터를 찾을 수 없습니다." -NO_DATA_LOCATION: "해당 위치에서 {데이터|거래|상호작용|메시지}를 찾을 수 없습니다." +NO_DATA_LOCATION: "해당 위치에서 {데이터|거래|상호작용|메시지}(을)를 찾을 수 없습니다." NO_PERMISSION: "해당 작업을 수행할 권한이 없습니다." NO_RESULTS: "결과를 찾을 수 없습니다." NO_RESULTS_PAGE: "해당 페이지에 대한 {결과|데이터}를 찾을 수 없습니다." @@ -145,7 +145,7 @@ PLEASE_SELECT: "다음을 선택하세요: \"{0}\" 또는 \"{1}\"." PREVIEW_CANCELLED: "미리보기가 취소되었습니다." PREVIEW_CANCELLING: "미리보기 취소 중..." PREVIEW_IN_GAME: "롤백을 미리보려면 게임 내에서만 가능합니다." -PREVIEW_TRANSACTION: "{컨테이너|인벤토리} 거래를 미리볼 수 없습니다." +PREVIEW_TRANSACTION: "{컨테이너|인벤토리} 기록을 미리볼 수 없습니다." PURGE_ABORTED: "삭제 실패. 데이터베이스가 손상되었을 수 있습니다." PURGE_ERROR: "{0} 데이터를 처리할 수 없습니다!" PURGE_FAILED: "삭제 실패. 나중에 다시 시도하세요." @@ -159,12 +159,12 @@ PURGE_REPAIRING: "복구 시도 중입니다. 시간이 걸릴 수 있습니다. PURGE_ROWS: "{0} {열|열}의 데이터가 삭제되었습니다." PURGE_STARTED: "\"{0}\"에서 데이터 삭제가 시작되었습니다." PURGE_SUCCESS: "데이터 삭제가 성공적으로 완료되었습니다." -RELOAD_STARTED: "구성 재로드 중 - 잠시 기다려 주세요." -RELOAD_SUCCESS: "구성이 성공적으로 재로드되었습니다." +RELOAD_STARTED: "구성 리로드 중 - 잠시 기다려 주세요." +RELOAD_SUCCESS: "구성이 성공적으로 리로드되었습니다." ROLLBACK_ABORTED: "롤백 또는 복원이 중단되었습니다." -ROLLBACK_CHUNKS_FOUND: "{0} {청크|청크}을 수정할 준비가 되었습니다." -ROLLBACK_CHUNKS_MODIFIED: "{1} 중 {0} {청크|청크}을 수정했습니다." -ROLLBACK_COMPLETED: "\"{0}\"에 대한 {롤백|복원|미리보기}가 완료되었습니다." +ROLLBACK_CHUNKS_FOUND: "{0} {청크|청크}를 수정할 준비가 되었습니다." +ROLLBACK_CHUNKS_MODIFIED: "{1} 중 {0} {청크|청크}를 수정했습니다." +ROLLBACK_COMPLETED: "\"{0}\"에 대한 {롤백이|복원이|미리보기가} 완료되었습니다." ROLLBACK_EXCLUDED_USERS: "제외된 {사용자|사용자}: \"{0}\"." ROLLBACK_INCLUDE: "{포함된|제외된} {블록|엔티티|대상} {타입|타입}: \"{0}\"." ROLLBACK_IN_PROGRESS: "롤백/복원이 이미 진행 중입니다." @@ -172,7 +172,7 @@ ROLLBACK_LENGTH: "소요 시간: {0} {초|초}." ROLLBACK_MODIFIED: "{0}이(가) {수정됨|수정 중}." ROLLBACK_RADIUS: "반경: {0} {블록|블록}." ROLLBACK_SELECTION: "반경이 \"{0}\"로 설정되었습니다." -ROLLBACK_STARTED: "\"{0}\"에서 {롤백|복원|미리보기}가 시작되었습니다." +ROLLBACK_STARTED: "\"{0}\"에서 {롤백이|복원이|미리보기가} 시작되었습니다." ROLLBACK_TIME: "시간 범위: {0}." ROLLBACK_WORLD_ACTION: "{월드|작업} \"{0}\"으로 제한됨." SIGN_HEADER: "표지판 메시지" @@ -198,6 +198,6 @@ USER_OFFLINE: "사용자 \"{0}\"이(가) 온라인 상태가 아닙니다." USING_MYSQL: "데이터 저장에 MySQL을 사용 중입니다." USING_SQLITE: "데이터 저장에 SQLite를 사용 중입니다." VALID_DONATION_KEY: "유효한 후원 키입니다." -VERSION_NOTICE: "버전 {0}이(가) 이제 사용할 수 있습니다." +VERSION_NOTICE: "버전 {0}(를) 이제 사용할 수 있습니다." VERSION_REQUIRED: "{0} {1} 이상이 필요합니다." -WORLD_NOT_FOUND: "월드 \"{0}\"을(를) 찾을 수 없습니다." +WORLD_NOT_FOUND: " \"{0}\"을(를) 찾을 수 없습니다." \ No newline at end of file diff --git a/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java b/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java index c5fd2c6a..7e106695 100644 --- a/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java +++ b/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -54,7 +55,7 @@ else if (checkType == Material.PAINTING || BukkitAdapter.ADAPTER.isItemFrame(che } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/BlockPlaceLogger.java b/src/main/java/net/coreprotect/database/logger/BlockPlaceLogger.java index cfc30e17..85c66139 100644 --- a/src/main/java/net/coreprotect/database/logger/BlockPlaceLogger.java +++ b/src/main/java/net/coreprotect/database/logger/BlockPlaceLogger.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.BlockState; @@ -84,7 +85,7 @@ else if (type == Material.WATER || type == Material.LAVA) { } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/CommandLogger.java b/src/main/java/net/coreprotect/database/logger/CommandLogger.java index 759bb31c..046d4a3e 100644 --- a/src/main/java/net/coreprotect/database/logger/CommandLogger.java +++ b/src/main/java/net/coreprotect/database/logger/CommandLogger.java @@ -3,6 +3,7 @@ import java.sql.PreparedStatement; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.Location; import net.coreprotect.CoreProtect; @@ -29,7 +30,7 @@ public static void log(PreparedStatement preparedStmt, int batchCount, long time } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/ContainerLogger.java b/src/main/java/net/coreprotect/database/logger/ContainerLogger.java index 8e09e98d..04655f10 100644 --- a/src/main/java/net/coreprotect/database/logger/ContainerLogger.java +++ b/src/main/java/net/coreprotect/database/logger/ContainerLogger.java @@ -7,6 +7,7 @@ import java.util.Locale; import java.util.Map; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.BlockFace; @@ -173,7 +174,7 @@ protected static void logTransaction(PreparedStatement preparedStmt, int batchCo } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/EntityKillLogger.java b/src/main/java/net/coreprotect/database/logger/EntityKillLogger.java index 2fd3d9ce..5225a5bd 100644 --- a/src/main/java/net/coreprotect/database/logger/EntityKillLogger.java +++ b/src/main/java/net/coreprotect/database/logger/EntityKillLogger.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.block.BlockState; import net.coreprotect.CoreProtect; @@ -30,7 +31,7 @@ public static void log(PreparedStatement preparedStmt, PreparedStatement prepare } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/ItemLogger.java b/src/main/java/net/coreprotect/database/logger/ItemLogger.java index 4c32003d..ba399ebe 100644 --- a/src/main/java/net/coreprotect/database/logger/ItemLogger.java +++ b/src/main/java/net/coreprotect/database/logger/ItemLogger.java @@ -6,6 +6,7 @@ import java.util.Locale; import java.util.Map; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.inventory.ItemStack; @@ -126,7 +127,7 @@ protected static void logTransaction(PreparedStatement preparedStmt, int batchCo } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/PlayerInteractLogger.java b/src/main/java/net/coreprotect/database/logger/PlayerInteractLogger.java index f2791594..e8fafc49 100644 --- a/src/main/java/net/coreprotect/database/logger/PlayerInteractLogger.java +++ b/src/main/java/net/coreprotect/database/logger/PlayerInteractLogger.java @@ -3,6 +3,7 @@ import java.sql.PreparedStatement; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.BlockState; @@ -28,7 +29,7 @@ public static void log(PreparedStatement preparedStmt, int batchCount, String us } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/PlayerKillLogger.java b/src/main/java/net/coreprotect/database/logger/PlayerKillLogger.java index fe0fb0bf..2b81c3de 100644 --- a/src/main/java/net/coreprotect/database/logger/PlayerKillLogger.java +++ b/src/main/java/net/coreprotect/database/logger/PlayerKillLogger.java @@ -3,6 +3,7 @@ import java.sql.PreparedStatement; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.block.BlockState; import net.coreprotect.CoreProtect; @@ -30,7 +31,7 @@ public static void log(PreparedStatement preparedStmt, int batchCount, String us } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/database/logger/SignTextLogger.java b/src/main/java/net/coreprotect/database/logger/SignTextLogger.java index 0572ee82..3241e33c 100644 --- a/src/main/java/net/coreprotect/database/logger/SignTextLogger.java +++ b/src/main/java/net/coreprotect/database/logger/SignTextLogger.java @@ -3,6 +3,7 @@ import java.sql.PreparedStatement; import java.util.Locale; +import org.bukkit.Bukkit; import org.bukkit.Location; import net.coreprotect.CoreProtect; @@ -26,7 +27,7 @@ public static void log(PreparedStatement preparedStmt, int batchCount, String us } CoreProtectPreLogEvent event = new CoreProtectPreLogEvent(user); - if (Config.getGlobal().API_ENABLED) { + if (Config.getGlobal().API_ENABLED && !Bukkit.isPrimaryThread()) { CoreProtect.getInstance().getServer().getPluginManager().callEvent(event); } diff --git a/src/main/java/net/coreprotect/listener/player/CraftItemListener.java b/src/main/java/net/coreprotect/listener/player/CraftItemListener.java index 756e3fa3..b93ccf14 100644 --- a/src/main/java/net/coreprotect/listener/player/CraftItemListener.java +++ b/src/main/java/net/coreprotect/listener/player/CraftItemListener.java @@ -80,7 +80,7 @@ protected static void playerCraftItem(InventoryClickEvent event, boolean isTrade return; } - Inventory bottomInventory = event.getView().getBottomInventory(); + Inventory bottomInventory = player.getInventory(); if (bottomInventory.getType() != InventoryType.PLAYER) { return; } diff --git a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java index 9beeb565..2cbdf35b 100644 --- a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java +++ b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java @@ -22,7 +22,6 @@ import org.bukkit.inventory.BlockInventoryHolder; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import net.coreprotect.CoreProtect; @@ -251,7 +250,12 @@ protected void onInventoryClick(InventoryClickEvent event) { // Perform this check to prevent triggering onInventoryInteractAsync when a user is just clicking items in their own inventory Inventory inventory = null; try { - inventory = event.getView().getInventory(event.getRawSlot()); + try { + inventory = event.getView().getInventory(event.getRawSlot()); + } + catch (IncompatibleClassChangeError e) { + inventory = event.getClickedInventory(); + } } catch (Exception e) { return; @@ -288,19 +292,16 @@ protected void onInventoryClick(InventoryClickEvent event) { protected void onInventoryDragEvent(InventoryDragEvent event) { boolean movedItem = false; boolean enderChest = false; - InventoryView inventoryView = event.getView(); - for (Integer slot : event.getRawSlots()) { - Inventory inventory = inventoryView.getInventory(slot); - if (inventory == null) { - continue; - } - InventoryHolder inventoryHolder = inventory.getHolder(); - enderChest = inventory.equals(event.getWhoClicked().getEnderChest()); - if ((inventoryHolder != null && (inventoryHolder instanceof BlockInventoryHolder || inventoryHolder instanceof DoubleChest)) || enderChest) { - movedItem = true; - break; - } + Inventory inventory = event.getInventory(); + InventoryHolder inventoryHolder = inventory.getHolder(); + if (inventory == null || inventoryHolder != null && inventoryHolder.equals(event.getWhoClicked())) { + return; + } + + enderChest = inventory.equals(event.getWhoClicked().getEnderChest()); + if ((inventoryHolder != null && (inventoryHolder instanceof BlockInventoryHolder || inventoryHolder instanceof DoubleChest)) || enderChest) { + movedItem = true; } if (!movedItem) { diff --git a/src/main/java/net/coreprotect/utility/Util.java b/src/main/java/net/coreprotect/utility/Util.java index 644458fe..fc3f5c31 100755 --- a/src/main/java/net/coreprotect/utility/Util.java +++ b/src/main/java/net/coreprotect/utility/Util.java @@ -579,8 +579,10 @@ public static byte[] convertByteData(Object data) { bos.close(); result = bos.toByteArray(); } - catch (Exception e) { - e.printStackTrace(); + catch (Exception e) { // only display exception on development branch + if (!ConfigHandler.EDITION_BRANCH.contains("-dev")) { + e.printStackTrace(); + } } return result;