From b06367e74df2b3aa126795ab11c49043aebf7f85 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 2 Jan 2023 23:22:44 +0900 Subject: [PATCH 01/82] =?UTF-8?q?1.19.2=E5=AF=BE=E5=BF=9C=20=E3=83=9E?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=83=AD=E3=83=BC=E3=83=96=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E3=81=AE=E5=AF=BE=E5=BF=9C=20=E5=85=89=E3=82=8B=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=AF=E3=80=81=E9=80=9A=E5=B8=B8=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=AF=E3=81=AEONOFF=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.yml | 4 +-- pom.xml | 2 +- .../java/wacky/storagesign/StorageSign.java | 8 ++++- .../wacky/storagesign/StorageSignCore.java | 36 ++++++++++++++++--- src/main/resources/plugin.yml | 2 +- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/plugin.yml b/plugin.yml index 6d1fdfc..c797a34 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,8 +1,8 @@ name: StorageSign main: wacky.storagesign.StorageSignCore -version: 1.3.0 +version: 1.4.0 author: wackyls6 -api-version: 1.16 +api-version: 1.19 softdepend: [WorldGuard] website: https://github.com/wackyls6/StorageSign permissions: diff --git a/pom.xml b/pom.xml index 9e6b80a..78e5598 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ org.spigotmc spigot-api - 1.15-R0.1-SNAPSHOT + 1.19.2-R0.1-SNAPSHOT diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index db714f6..57733d4 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -88,6 +88,7 @@ else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Materi else if(signmat == Material.DARK_OAK_WALL_SIGN) smat = Material.DARK_OAK_SIGN; else if(signmat == Material.CRIMSON_WALL_SIGN) smat = Material.CRIMSON_SIGN; else if(signmat == Material.WARPED_WALL_SIGN) smat = Material.WARPED_SIGN; + else if(signmat == Material.MANGROVE_WALL_SIGN) smat = Material.MANGROVE_SIGN; else smat = signmat; } @@ -128,6 +129,10 @@ else if(str.matches("WarpedStorageSign")) { damage = 1; return Material.WARPED_SIGN; } + else if(str.matches("MangroveStorageSign")) { + damage = 1; + return Material.MANGROVE_SIGN; + } if (str.matches("HorseEgg")){ damage = 1; return Material.END_PORTAL;//ガスト卵でよくね? @@ -171,6 +176,7 @@ else if (mat == Material.END_PORTAL){ else if(mat == Material.DARK_OAK_SIGN && damage == 1) return "DarkOakStorageSign"; else if(mat == Material.CRIMSON_SIGN && damage == 1) return "CrimsonStorageSign"; else if(mat == Material.WARPED_SIGN && damage == 1) return "WarpedStorageSign"; + else if(mat == Material.MANGROVE_SIGN && damage == 1) return "MangroveStorageSign"; //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; @@ -259,7 +265,7 @@ public ItemStack getContents() {//中身取得、一部アイテム用の例外 if(damage == 1) return emptyHorseEgg(); }if(mat == Material.STONE_SLAB) return new ItemStack(mat,1);//ダメージ値0にする else if(mat == Material.OAK_SIGN || mat == Material.SPRUCE_SIGN || mat == Material.BIRCH_SIGN || mat == Material.JUNGLE_SIGN || - mat == Material.ACACIA_SIGN || mat == Material.DARK_OAK_SIGN || mat == Material.CRIMSON_SIGN || mat == Material.WARPED_SIGN) { + mat == Material.ACACIA_SIGN || mat == Material.DARK_OAK_SIGN || mat == Material.CRIMSON_SIGN || mat == Material.WARPED_SIGN || mat == Material.MANGROVE_SIGN) { if(damage == 0) return new ItemStack(mat,1); else return emptySign(mat); } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index f66f2d1..f52ca70 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -10,7 +10,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.NamespacedKey; -import org.bukkit.UndefinedNullability; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; @@ -64,8 +63,8 @@ public void onEnable() { this.saveConfig(); //鯖別レシピが実装されたら - Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN}; - for(int i= 0 ;i<8;i++) { + Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN}; + for(int i= 0 ;i<9;i++) { ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this,"ssr"+i),StorageSign.emptySign(sign[i])); //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); @@ -246,6 +245,7 @@ else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount( storageSign.addAmount(itemMainHand.getAmount()); player.getInventory().clear(player.getInventory().getHeldItemSlot()); if(isDye(itemMainHand)) sign.setColor(getDyeColor(itemMainHand));//同色用 + if(isSac(itemMainHand)) sign.setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 } else for (int i=0; i itemMainHand.getAmount( event.setUseInteractedBlock(Result.ALLOW);//最初にDENYにしてたので戻す、同色染料が使えない。 return; } - + else if (itemMainHand != null && isSac(itemMainHand)) { + event.setUseItemInHand(Result.ALLOW); + event.setUseInteractedBlock(Result.ALLOW); + return; + } else if (storageSign.isEmpty()) return; ItemStack item = storageSign.getContents(); int max = item.getMaxStackSize(); @@ -650,6 +654,7 @@ private boolean isSignPost(Material mat) { case DARK_OAK_SIGN: case CRIMSON_SIGN: case WARPED_SIGN: + case MANGROVE_SIGN: return true; default: } @@ -666,6 +671,7 @@ private boolean isWallSign(Material mat) { case DARK_OAK_WALL_SIGN: case CRIMSON_WALL_SIGN: case WARPED_WALL_SIGN: + case MANGROVE_WALL_SIGN: return true; default: } @@ -737,4 +743,26 @@ private DyeColor getDyeColor(ItemStack item) { return null; } + private boolean isSac(ItemStack item) { + Material mat = item.getType(); + switch(mat) { + case INK_SAC: + case GLOW_INK_SAC: + return true; + default: + } + return false; + } + + private boolean isGlowSac(ItemStack item) { + Material mat = item.getType(); + switch(mat) { + case INK_SAC: + return false; + case GLOW_INK_SAC: + return true; + default: + } + return false; + } } \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2776d03..90164be 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: StorageSign main: wacky.storagesign.StorageSignCore -version: 1.2.8 +version: 1.4.0 author: wackyls6 api-version: 1.15 softdepend: [WorldGuard] From 6f4f8be0bf86c86bcb72d45ee51e9063e6b08b77 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 9 Jun 2023 17:25:31 +0900 Subject: [PATCH 02/82] =?UTF-8?q?1.20.0=E5=AF=BE=E5=BF=9C=20=E6=A1=9C?= =?UTF-8?q?=E3=80=81=E7=AB=B9=E3=81=AE=E7=9C=8B=E6=9D=BF=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++---- .../java/wacky/storagesign/StorageSign.java | 15 ++++++++++++++- .../wacky/storagesign/StorageSignCore.java | 19 +++++++++++++------ src/main/resources/plugin.yml | 4 ++-- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 78e5598..30beeaa 100644 --- a/pom.xml +++ b/pom.xml @@ -1,8 +1,8 @@ 4.0.0 wacky - storagesign - 1.2.8 + StorageSign + 1.5.0a jar StorageSign @@ -12,7 +12,7 @@ - ${project.artifactId} + ${project.artifactId}_${project.version} src/main/resources @@ -44,7 +44,7 @@ org.spigotmc spigot-api - 1.19.2-R0.1-SNAPSHOT + 1.20-R0.1-SNAPSHOT diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 57733d4..a49cbe9 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -89,6 +89,8 @@ else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Materi else if(signmat == Material.CRIMSON_WALL_SIGN) smat = Material.CRIMSON_SIGN; else if(signmat == Material.WARPED_WALL_SIGN) smat = Material.WARPED_SIGN; else if(signmat == Material.MANGROVE_WALL_SIGN) smat = Material.MANGROVE_SIGN; + else if(signmat == Material.CHERRY_WALL_SIGN) smat = Material.CHERRY_SIGN; + else if(signmat == Material.BAMBOO_WALL_SIGN) smat = Material.BAMBOO_SIGN; else smat = signmat; } @@ -133,6 +135,14 @@ else if(str.matches("MangroveStorageSign")) { damage = 1; return Material.MANGROVE_SIGN; } + else if(str.matches("CherryStorageSign")) { + damage = 1; + return Material.CHERRY_SIGN; + } + else if(str.matches("BambooStorageSign")) { + damage = 1; + return Material.BAMBOO_SIGN; + } if (str.matches("HorseEgg")){ damage = 1; return Material.END_PORTAL;//ガスト卵でよくね? @@ -177,6 +187,8 @@ else if (mat == Material.END_PORTAL){ else if(mat == Material.CRIMSON_SIGN && damage == 1) return "CrimsonStorageSign"; else if(mat == Material.WARPED_SIGN && damage == 1) return "WarpedStorageSign"; else if(mat == Material.MANGROVE_SIGN && damage == 1) return "MangroveStorageSign"; + else if(mat == Material.CHERRY_SIGN && damage == 1) return "CherryStorageSign"; + else if(mat == Material.BAMBOO_SIGN && damage == 1) return "BambooStorageSign"; //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; @@ -265,7 +277,8 @@ public ItemStack getContents() {//中身取得、一部アイテム用の例外 if(damage == 1) return emptyHorseEgg(); }if(mat == Material.STONE_SLAB) return new ItemStack(mat,1);//ダメージ値0にする else if(mat == Material.OAK_SIGN || mat == Material.SPRUCE_SIGN || mat == Material.BIRCH_SIGN || mat == Material.JUNGLE_SIGN || - mat == Material.ACACIA_SIGN || mat == Material.DARK_OAK_SIGN || mat == Material.CRIMSON_SIGN || mat == Material.WARPED_SIGN || mat == Material.MANGROVE_SIGN) { + mat == Material.ACACIA_SIGN || mat == Material.DARK_OAK_SIGN || mat == Material.CRIMSON_SIGN || mat == Material.WARPED_SIGN || + mat == Material.MANGROVE_SIGN || mat == Material.CHERRY_SIGN || mat == Material.BAMBOO_SIGN) { if(damage == 0) return new ItemStack(mat,1); else return emptySign(mat); } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index f52ca70..0045bb9 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -3,6 +3,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.bukkit.ChatColor; import org.bukkit.DyeColor; @@ -49,6 +51,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionData; +import java.util.logging.Logger; public class StorageSignCore extends JavaPlugin implements Listener{ @@ -63,8 +66,8 @@ public void onEnable() { this.saveConfig(); //鯖別レシピが実装されたら - Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN}; - for(int i= 0 ;i<9;i++) { + Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN,Material.CHERRY_SIGN,Material.BAMBOO_SIGN}; + for(int i= 0 ;i<11;i++) { ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this,"ssr"+i),StorageSign.emptySign(sign[i])); //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); @@ -319,7 +322,7 @@ public void onBlockBreak(BlockBreakEvent event) { Map breakSignMap = new HashMap<>(); if (isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType())); - for (int i=0; i<5; i++) {//東西南北で判定 + for (int i=0; i<5; i++) {//東西南北で判定 BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; block = event.getBlock().getRelative(face[i]); if (i==0 && isSignPost(block) && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType())); @@ -335,9 +338,9 @@ public void onBlockBreak(BlockBreakEvent event) { for (Location loc : breakSignMap.keySet()) { StorageSign sign = breakSignMap.get(loc); Location loc2 = loc; - loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる - loc.getWorld().dropItem(loc2, sign.getStorageSign()); - loc.getBlock().setType(Material.AIR); + loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる + loc.getWorld().dropItem(loc2, sign.getStorageSign()); + loc.getBlock().setType(Material.AIR); } } @@ -655,6 +658,8 @@ private boolean isSignPost(Material mat) { case CRIMSON_SIGN: case WARPED_SIGN: case MANGROVE_SIGN: + case CHERRY_SIGN: + case BAMBOO_SIGN: return true; default: } @@ -672,6 +677,8 @@ private boolean isWallSign(Material mat) { case CRIMSON_WALL_SIGN: case WARPED_WALL_SIGN: case MANGROVE_WALL_SIGN: + case CHERRY_WALL_SIGN: + case BAMBOO_WALL_SIGN: return true; default: } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 90164be..fe91463 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,8 +1,8 @@ name: StorageSign main: wacky.storagesign.StorageSignCore -version: 1.4.0 +version: ${version} author: wackyls6 -api-version: 1.15 +api-version: 1.19 softdepend: [WorldGuard] website: http://forum.minecraftuser.jp/viewtopic.php?t=15065 permissions: From ff037ce83bf5bd0c5a49935b168d34ca94602e94 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 11 Mar 2024 15:50:08 +0900 Subject: [PATCH 03/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E8=A3=8F?= =?UTF-8?q?=E5=81=B4=E3=82=92=E7=B7=A8=E9=9B=86=E3=81=97=E3=81=9F=E6=99=82?= =?UTF-8?q?=E3=81=AE=E3=82=AD=E3=83=A3=E3=83=B3=E3=82=BB=E3=83=AB=E3=82=A4?= =?UTF-8?q?=E3=83=99=E3=83=B3=E3=83=88=E7=AD=89=E3=81=AE=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../wacky/storagesign/StorageSignCore.java | 55 +++++++++++-------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 30beeaa..3f81a86 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.5.0a + 1.5.2 jar StorageSign @@ -44,7 +44,7 @@ org.spigotmc spigot-api - 1.20-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 0045bb9..f78f927 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -3,8 +3,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import org.bukkit.ChatColor; import org.bukkit.DyeColor; @@ -18,6 +16,7 @@ import org.bukkit.block.DoubleChest; import org.bukkit.block.Sign; import org.bukkit.block.data.type.WallSign; +import org.bukkit.block.sign.Side; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.enchantments.Enchantment; @@ -51,6 +50,8 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionData; +import org.bukkit.potion.PotionType; + import java.util.logging.Logger; public class StorageSignCore extends JavaPlugin implements Listener{ @@ -198,7 +199,7 @@ else if(mat == Material.WHITE_BANNER){ storageSign.setDamage(itemMainHand.getDurability()); } - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); return; } @@ -236,7 +237,7 @@ else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount( player.getInventory().setItemInMainHand(itemSign.getStorageSign()); storageSign.setAmount(storageSign.getAmount() - (itemSign.getStackSize() * itemSign.getAmount()));//余りは看板に引き受けてもらう } - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); return; } @@ -247,8 +248,8 @@ else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount( if (player.isSneaking()) { storageSign.addAmount(itemMainHand.getAmount()); player.getInventory().clear(player.getInventory().getHeldItemSlot()); - if(isDye(itemMainHand)) sign.setColor(getDyeColor(itemMainHand));//同色用 - if(isSac(itemMainHand)) sign.setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 + if(isDye(itemMainHand)) sign.getSide(Side.FRONT).setColor(getDyeColor(itemMainHand)); //同色用 + if(isSac(itemMainHand)) sign.getSide(Side.FRONT).setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 } else for (int i=0; i max) { player.getWorld().dropItem(loc, item); } - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); } } @EventHandler public void onSignChange(SignChangeEvent event) { - if (event.isCancelled())return; + if (event.isCancelled()) return; + + // バックの場合、キャンセルイベントを発行して終了する + if(event.getSide().equals(Side.BACK) ){ + event.setCancelled(true); + return; + } Sign sign = (Sign) event.getBlock().getState(); - if (sign.getLine(0).matches("StorageSign"))/*変更拒否*/ { - event.setLine(0, sign.getLine(0)); - event.setLine(1, sign.getLine(1)); - event.setLine(2, sign.getLine(2)); - event.setLine(3, sign.getLine(3)); + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign"))/*変更拒否*/ { + event.setLine(0, sign.getSide(Side.FRONT).getLine(0)); + event.setLine(1, sign.getSide(Side.FRONT).getLine(1)); + event.setLine(2, sign.getSide(Side.FRONT).getLine(2)); + event.setLine(3, sign.getSide(Side.FRONT).getLine(3)); sign.update(); } else if (event.getLine(0).equalsIgnoreCase("storagesign"))/*書き込んで生成禁止*/ { if (event.getPlayer().hasPermission("storagesign.create")) { @@ -355,10 +362,10 @@ public void onBlockPlace(BlockPlaceEvent event) { } StorageSign storageSign = new StorageSign(event.getItemInHand()); Sign sign = (Sign)event.getBlock().getState(); - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); if(storageSign.getSmat() == Material.DARK_OAK_SIGN ) { - sign.setColor(DyeColor.WHITE);//文字色を白くする + sign.getSide(Side.FRONT).setColor(DyeColor.WHITE);//文字色を白くする } sign.update(); player.closeInventory();//時差発動が必要らしい @@ -373,15 +380,16 @@ public void onItemMove(InventoryMoveItemEvent event) { Sign sign = null; StorageSign storageSign = null; ItemStack item = event.getItem(); - if (config.getBoolean("auto-import")) { + if (config.getBoolean("auto-import")) { if (event.getDestination().getLocation() == null);//コンポスター用に生成された一時インベントリ else if (event.getDestination().getHolder() instanceof Minecart);//何もしない else if (event.getDestination().getHolder() instanceof DoubleChest) { DoubleChest lc = (DoubleChest)event.getDestination().getHolder(); blockInventory[0] = (BlockState) lc.getLeftSide(); blockInventory[1] = (BlockState) lc.getRightSide(); - } else { - blockInventory[0] = (BlockState) event.getDestination().getHolder(); + } else if(!(event.getDestination().getHolder() instanceof BlockState));//ブロック情報が取得できない場合も何もしない + else { + blockInventory[0] = (BlockState) event.getDestination().getHolder(); } importLoop: @@ -421,14 +429,15 @@ else if (event.getDestination().getHolder() instanceof DoubleChest) { blockInventory[0] = null; blockInventory[1] = null; flag = false; - if (event.getSource().getLocation() == null);//一時インベントリ + if (event.getSource().getLocation() == null);//一時インベントリ else if (event.getSource().getHolder() instanceof Minecart); else if (event.getSource().getHolder() instanceof DoubleChest) { DoubleChest lc = (DoubleChest)event.getSource().getHolder(); blockInventory[0] = (BlockState) lc.getLeftSide(); blockInventory[1] = (BlockState) lc.getRightSide(); - } else { - blockInventory[0] = (BlockState) event.getSource().getHolder(); + } else if(!(event.getSource().getHolder() instanceof BlockState));//ブロック情報が取得できない時も何もしない + else { + blockInventory[0] = (BlockState) event.getSource().getHolder(); } exportLoop: @@ -464,7 +473,7 @@ private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inve inv.removeItem(item); storageSign.addAmount(item.getAmount()); } - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); } @@ -540,7 +549,7 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve inv.addItem(item); storageSign.addAmount(-item.getAmount()); } - for (int i=0; i<4; i++) sign.setLine(i, storageSign.getSigntext(i)); + for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); } From 720dcb9cb0b6d3e46e0d250610033c35c738fdd6 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 11 Mar 2024 16:51:49 +0900 Subject: [PATCH 04/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E8=A3=8F?= =?UTF-8?q?=E5=81=B4=E3=82=92=E7=B7=A8=E9=9B=86=E3=81=97=E3=81=9F=E6=99=82?= =?UTF-8?q?=E3=81=AE=E3=82=AD=E3=83=A3=E3=83=B3=E3=82=BB=E3=83=AB=E3=82=A4?= =?UTF-8?q?=E3=83=99=E3=83=B3=E3=83=88=E7=AD=89=E3=81=AE=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSign.java | 3 ++- src/main/java/wacky/storagesign/StorageSignCore.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index a49cbe9..fb99667 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -4,6 +4,7 @@ import org.bukkit.Material; import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; @@ -57,7 +58,7 @@ else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Materi }*/ public StorageSign(Sign sign,Material signmat) {//上と統合したい - String[] line2 = sign.getLine(1).trim().split(":"); + String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); mat = getMaterial(line2[0]); isEmpty = mat == null || mat == Material.AIR; diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index f78f927..ce9b850 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -102,7 +102,7 @@ public boolean isStorageSign(ItemStack item) { public boolean isStorageSign(Block block) { if(isSignPost(block.getType()) || isWallSign(block.getType())) { Sign sign = (Sign) block.getState(); - if (sign.getLine(0).matches("StorageSign")) return true; + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) return true; } return false; } From 59557e7556432ef3d5cbb4136ac94655c1f11806 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Mon, 18 Mar 2024 20:46:33 +0900 Subject: [PATCH 05/82] Upgrade JUnit3 to JUnit5 --- pom.xml | 22 ++++++++++++++++++--- src/test/java/jar/AppTest.java | 36 +++++++--------------------------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/pom.xml b/pom.xml index 3f81a86..98c780f 100644 --- a/pom.xml +++ b/pom.xml @@ -40,11 +40,27 @@ + + + + org.junit + junit-bom + 5.10.2 + pom + import + + + - org.spigotmc - spigot-api - 1.20.4-R0.1-SNAPSHOT + org.spigotmc + spigot-api + 1.20.4-R0.1-SNAPSHOT + + + org.junit.jupiter + junit-jupiter + test diff --git a/src/test/java/jar/AppTest.java b/src/test/java/jar/AppTest.java index 4f2fe94..2c7c1b4 100644 --- a/src/test/java/jar/AppTest.java +++ b/src/test/java/jar/AppTest.java @@ -1,38 +1,16 @@ package jar; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Unit test for simple App. */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } +public class AppTest { - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); + @Test + public void testApp() { + assertTrue(true); } } From 04612d6fdad22d913546e21400e7a3f6338aa04f Mon Sep 17 00:00:00 2001 From: Teruteru Date: Mon, 18 Mar 2024 21:09:22 +0900 Subject: [PATCH 06/82] =?UTF-8?q?Java7=E3=81=8B=E3=82=89Java17=E3=81=B8?= =?UTF-8?q?=E7=A7=BB=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3f81a86..eb66f55 100644 --- a/pom.xml +++ b/pom.xml @@ -25,8 +25,8 @@ maven-compiler-plugin 3.2 - 1.7 - 1.7 + 17 + 17 ${project.build.sourceEncoding} From 68e977d09e10a1427b3349de764411a7d5cc0d45 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 2 Apr 2024 20:40:30 +0900 Subject: [PATCH 07/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E7=9C=8B?= =?UTF-8?q?=E6=9D=BF=E3=81=AE=E5=86=85=E5=AE=B9=E5=8F=96=E5=BE=97=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AE=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=82=82=E3=82=8C=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSign.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index fb99667..dacf304 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -76,7 +76,7 @@ else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Materi else if(line2.length == 2) damage = NumberConversions.toShort(line2[1]); else if(mat== Material.STONE_SLAB ) mat = Material.SMOOTH_STONE_SLAB;//1.13の滑らかハーフと1.14の石ハーフ区別 - amount = NumberConversions.toInt(sign.getLine(2)); + amount = NumberConversions.toInt(sign.getSide(Side.FRONT).getLine(2)); isEmpty = amount == 0; stack = 1; From 84f4a6c14716466bd249163eb6e9f359d46ecb2a Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 3 Apr 2024 15:32:56 +0900 Subject: [PATCH 08/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E9=96=A2=E4=BF=82=E3=81=AE?= =?UTF-8?q?=E5=87=A6=E7=90=86=E5=A4=89=E6=9B=B4=E3=81=AE=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=81=AB=E6=96=B0=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=AE?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82=E7=9C=8B=E6=9D=BF=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=82=84NBT=E3=82=BF=E3=82=B0=E6=83=85=E5=A0=B1=E3=82=92?= =?UTF-8?q?=E5=86=85=E5=8C=85=E5=8C=96=E3=80=82=20SSC.java=E3=81=AEHeader?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=82=92=E9=9D=9E=E6=8E=A8=E5=A5=A8=E3=81=8B?= =?UTF-8?q?=E3=82=89=E6=8E=A8=E5=A5=A8=E6=96=B9=E5=BC=8F=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=82=20Logger=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE?= =?UTF-8?q?=E5=9C=9F=E5=8F=B0=E4=BD=9C=E6=88=90=E3=80=82=20PotionException?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../Exception/PotionException.java | 7 + .../wacky/storagesign/Logging/SSLogger.java | 8 + .../java/wacky/storagesign/PotionInfo.java | 183 ++++++++++++++++-- .../java/wacky/storagesign/StorageSign.java | 18 +- .../wacky/storagesign/StorageSignCore.java | 11 +- 6 files changed, 197 insertions(+), 32 deletions(-) create mode 100644 src/main/java/wacky/storagesign/Exception/PotionException.java create mode 100644 src/main/java/wacky/storagesign/Logging/SSLogger.java diff --git a/pom.xml b/pom.xml index 312a554..76197b6 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.5.2 + 1.5.3 jar StorageSign diff --git a/src/main/java/wacky/storagesign/Exception/PotionException.java b/src/main/java/wacky/storagesign/Exception/PotionException.java new file mode 100644 index 0000000..dc46614 --- /dev/null +++ b/src/main/java/wacky/storagesign/Exception/PotionException.java @@ -0,0 +1,7 @@ +package wacky.storagesign.Exception; + +public class PotionException extends RuntimeException { + public PotionException(String message){ + super(message); + } +} diff --git a/src/main/java/wacky/storagesign/Logging/SSLogger.java b/src/main/java/wacky/storagesign/Logging/SSLogger.java new file mode 100644 index 0000000..1b669ba --- /dev/null +++ b/src/main/java/wacky/storagesign/Logging/SSLogger.java @@ -0,0 +1,8 @@ +package wacky.storagesign.Logging; + + +import java.util.logging.Logger; + +public class SSLogger { + private Logger _logger; +} diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 4b71a0d..e9c04c3 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,15 +1,37 @@ package wacky.storagesign; import org.bukkit.Material; +import org.bukkit.PortalType; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; +import wacky.storagesign.Exception.PotionException; + +import java.util.Arrays; public class PotionInfo { - protected Material mat; - protected PotionType pot; - protected short damage = 0; + private static String ENHANCE_EXTENSION_CODE = "1"; + private static String ENHANCE_STRONG_CODE = "2"; + private static String ENHANCE_EXTENSION_PREF = "LONG_"; + private static String ENHANCE_STRONG_PREF = "STRONG_"; + private static String SHORT_NAME_HEAL = "HEAL"; + private static String SHORT_NAME_BREAT = "BREAT"; + private static String SHORT_NAME_DAMAG = "DAMAG"; + private static String SHORT_NAME_JUMP = "JUMP"; + private static String SHORT_NAME_SPEED = "SPEED"; + private static PotionType[] HEAL_POTIONS = {PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING}; + private static PotionType[] BREATH_POTIONS = {PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING}; + private static PotionType[] DAMAGE_POTIONS = {PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING}; + private static PotionType[] JUMP_POTIONS = {PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING}; + private static PotionType[] SPEED_POTIONS = {PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS}; + protected static String TYPE_SPLASH_PREF = "S"; + protected static String TYPE_LINGERING_PREF = "L"; + + protected Material mat; + protected PotionType pot; + protected short damage = 0; + // 旧メソッド public PotionInfo(Material mat, String[] str){ this.mat = mat; if(str.length == 2){//ダメージ値 @@ -74,26 +96,153 @@ public PotionInfo(Material mat, String[] str){ } } - private PotionType getType(String substring) { - if(substring.equals("BREAT")) return PotionType.WATER_BREATHING;//例外 - else if(substring.equals("HEAL")) return PotionType.INSTANT_HEAL; - else if(substring.equals("DAMAG")) return PotionType.INSTANT_DAMAGE; - else{ //後ろ切れてるかも - for(PotionType p : PotionType.values()) { - if(p.toString().startsWith(substring)) return p; + public PotionInfo(Material material, String type, String effName, String enhance) { + this.mat = material; + + // ポーション種別の設定 + if (type.startsWith(TYPE_SPLASH_PREF)) { + this.mat = Material.SPLASH_POTION; + } else if (type.startsWith(TYPE_LINGERING_PREF)) { + // 元のやつだと入ってないからいらない? + this.mat = Material.LINGERING_POTION; + } + + this.pot = getType(effName, enhance); + this.damage = NumberConversions.toShort(damage); + + // 一応前のロジックも入れておく + if (damage % 8192 > 64 && pot.isExtendable()) this.damage = 1;//延長 + else if (damage % 64 > 32 && pot.isUpgradeable()) this.damage = 2;//強化 + + } + + // 旧メソッド + private PotionType getType(String substring) { + if (substring.equals("BREAT")) return PotionType.WATER_BREATHING;//例外 + else if (substring.equals("HEAL")) return PotionType.INSTANT_HEAL; + else if (substring.equals("DAMAG")) return PotionType.INSTANT_DAMAGE; + else { //後ろ切れてるかも + for (PotionType p : PotionType.values()) { + if (p.toString().startsWith(substring)) return p; } } return null; } - public static String getShortType(PotionType pot){ - if(pot == PotionType.WATER_BREATHING) return "BREAT"; - else if(pot == PotionType.INSTANT_HEAL) return "HEAL"; - else if(pot == PotionType.INSTANT_DAMAGE) return "DAMAG"; - else if(pot.toString().length() <= 5) return pot.toString(); - return pot.toString().substring(0, 5); - } + private PotionType getType(String effName, String enhance) { + + // 表記上例外のケースたちの判定 + if (effName.equals(SHORT_NAME_HEAL)) { + if (enhance.isEmpty()) { + return PotionType.INSTANT_HEAL; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_HEALING; + } else { + throw new PotionException("治癒のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_BREAT)) { + if (enhance.isEmpty()) { + return PotionType.WATER_BREATHING; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_WATER_BREATHING; + } else { + throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_DAMAG)) { + if (enhance.isEmpty()) { + return PotionType.INSTANT_DAMAGE; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_HARMING; + } else { + throw new PotionException("ダメージのポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_JUMP)) { + if (enhance.isEmpty()) { + return PotionType.JUMP; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_LEAPING; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_LEAPING; + } else { + throw new PotionException("跳躍のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_SPEED)) { + if (enhance.isEmpty()) { + return PotionType.SPEED; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_SWIFTNESS; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_SWIFTNESS; + } else { + throw new PotionException("俊敏のポーションに対応する種類が存在しません"); + } + } else { + // それ以外は命名ルールに従って検索をかける + // 延長、強化があったら先頭にプレフィックスをつけて検索 + String name = effName; + if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + name = ENHANCE_EXTENSION_PREF + name; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + name = ENHANCE_STRONG_PREF + name; + } + for (PotionType p : PotionType.values()) { + if (p.toString().startsWith(name)) return p; + } + throw new PotionException("ポーションデータが存在しません"); + } + } + + public static String getShortType(PotionType pot) { + if (pot == PotionType.WATER_BREATHING) return "BREAT"; + else if (pot == PotionType.INSTANT_HEAL) return "HEAL"; + else if (pot == PotionType.INSTANT_DAMAGE) return "DAMAG"; + else if (pot.toString().length() <= 5) return pot.toString(); + return pot.toString().substring(0, 5); + } + + public static String getShortName(PotionType pot) { + String name = pot.toString(); + + // 特殊命名ルールの取り出し + if (Arrays.asList(HEAL_POTIONS).contains(pot)) { + return SHORT_NAME_HEAL; + } else if (Arrays.asList(BREATH_POTIONS).contains(pot)) { + return SHORT_NAME_BREAT; + } else if (Arrays.asList(DAMAGE_POTIONS).contains(pot)) { + return SHORT_NAME_DAMAG; + } else if (Arrays.asList(JUMP_POTIONS).contains(pot)) { + return SHORT_NAME_JUMP; + } else if (Arrays.asList(SPEED_POTIONS).contains(pot)) { + return SHORT_NAME_SPEED; + } else { + // それ以外のもの + // 延長・強化のプレフィックス除去 + if (name.startsWith(ENHANCE_EXTENSION_PREF)) { + name = name.substring(name.length() - ENHANCE_EXTENSION_PREF.length()); + } else if (name.startsWith(ENHANCE_STRONG_PREF)) { + name = name.substring(name.length() - ENHANCE_STRONG_PREF.length()); + } + + // 5文字以内の名前なら、そのまま使う。それ以外なら5文字に切り出す + if (name.length() <= 5) { + return name; + } + } + + return name.substring(0, 5); + } + + public static String getSignData(Material mat, PotionType pot, short damage) { + String prefix = ""; + if (mat == Material.SPLASH_POTION) prefix = PotionInfo.TYPE_SPLASH_PREF; + else if (mat == Material.LINGERING_POTION) prefix = PotionInfo.TYPE_LINGERING_PREF; + + return prefix + "POTION:" + PotionInfo.getShortType(pot) + ":" + damage; + } + public static String getTagData(Material mat, PotionType pot, short damage, int amount) { + return mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount; + } public short getDamage() { return damage; diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index dacf304..be1b780 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -40,7 +40,9 @@ public StorageSign(ItemStack item) { ench = ei.getEnchantType(); } else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ - PotionInfo pi = new PotionInfo(mat, str[0].split(":")); +// PotionInfo pi = new PotionInfo(mat, str[0].split(":")); + String[] potionStr = str[0].split(":"); + PotionInfo pi = new PotionInfo(mat, str[0],str[1], str[2]); mat = pi.getMaterial(); damage = pi.getDamage(); pot = pi.getPotionType(); @@ -68,7 +70,8 @@ public StorageSign(Sign sign,Material signmat) {//上と統合したい ench = ei.getEnchantType(); } else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ - PotionInfo pi = new PotionInfo(mat, line2); +// PotionInfo pi = new PotionInfo(mat, line2); + PotionInfo pi = new PotionInfo(mat, line2[0],line2[1], line2[2]); mat = pi.getMaterial(); damage = pi.getDamage(); pot = pi.getPotionType(); @@ -199,11 +202,7 @@ else if (mat == Material.END_PORTAL){ else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) { - String prefix = ""; - if(mat == Material.SPLASH_POTION) prefix = "S"; - else if(mat == Material.LINGERING_POTION) prefix = "L"; - - return prefix + "POTION:" + PotionInfo.getShortType(pot) +":" + damage; + return PotionInfo.getSignData(mat, pot, damage); } int limit = 99;//リミットブレイク @@ -226,7 +225,7 @@ public ItemStack getStorageSign() { if (isEmpty) list.add("Empty"); else if (mat == Material.ENCHANTED_BOOK) list.add(mat.toString() + ":" + ench.getKey().getKey() + ":" + damage + " " + amount); else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ - list.add(mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount); + list.add(PotionInfo.getTagData(mat, pot, damage, amount)); } else list.add(getShortName() +" "+ amount); meta.setLore(list); @@ -293,7 +292,8 @@ else if (mat == Material.ENCHANTED_BOOK) { else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ ItemStack item = new ItemStack(mat, 1); PotionMeta potionMeta = (PotionMeta)item.getItemMeta(); - potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); +// potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); + potionMeta.setBasePotionType(pot); item.setItemMeta(potionMeta); return item; }else if(mat == Material.FIREWORK_ROCKET){ diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index ce9b850..183650d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -1,5 +1,6 @@ package wacky.storagesign; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -63,7 +64,7 @@ public class StorageSignCore extends JavaPlugin implements Listener{ public void onEnable() { config = this.getConfig(); config.options().copyDefaults(true); - config.options().header("StorageSign Configuration"); + config.options().setHeader(Arrays.asList("StorageSign Configuration")); this.saveConfig(); //鯖別レシピが実装されたら @@ -166,10 +167,10 @@ else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Mater { storageSign.setMaterial(mat); PotionMeta potionMeta = (PotionMeta)itemMainHand.getItemMeta(); - PotionData potion = potionMeta.getBasePotionData(); - if(potion.isExtended()) storageSign.setDamage((short) 1); - if(potion.isUpgraded()) storageSign.setDamage((short) 2); - storageSign.setPotion(potion.getType()); + PotionType pot = potionMeta.getBasePotionType(); + if(pot.isExtendable()) storageSign.setDamage((short) 1); + if(pot.isUpgradeable()) storageSign.setDamage((short) 2); + storageSign.setPotion(pot); } else if (mat == Material.ENCHANTED_BOOK) { From 0e13511547ffea0d045351b073faf9c821ce56f6 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Wed, 3 Apr 2024 17:30:35 +0900 Subject: [PATCH 09/82] =?UTF-8?q?ItemStack=E8=80=90=E4=B9=85=E5=80=A4?= =?UTF-8?q?=E9=9D=9E=E6=8E=A8=E5=A5=A8=E5=8C=96=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSign.java | 14 ++++++++------ .../java/wacky/storagesign/StorageSignCore.java | 8 +++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index be1b780..ce52aa5 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -7,11 +7,7 @@ import org.bukkit.block.sign.Side; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.BannerMeta; -import org.bukkit.inventory.meta.EnchantmentStorageMeta; -import org.bukkit.inventory.meta.FireworkMeta; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.inventory.meta.*; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; @@ -309,7 +305,13 @@ else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Materi } if(damage == 0) return new ItemStack(mat, 1);//大半はダメージなくなった - return new ItemStack(mat, 1, damage);//ツール系のみダメージあり + var itemStack = new ItemStack(mat, 1); + var meta = itemStack.getItemMeta(); + if (meta instanceof Damageable dam) { + dam.setDamage(damage); + itemStack.setItemMeta(meta); + } + return itemStack;//ツール系のみダメージあり } //回収可能か判定、エンチャ本は本自身の合成回数を問わない diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 183650d..a28808d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -45,10 +45,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.ShapedRecipe; -import org.bukkit.inventory.meta.BannerMeta; -import org.bukkit.inventory.meta.EnchantmentStorageMeta; -import org.bukkit.inventory.meta.FireworkMeta; -import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.inventory.meta.*; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionType; @@ -197,7 +194,8 @@ else if(mat == Material.WHITE_BANNER){ else { storageSign.setMaterial(mat); - storageSign.setDamage(itemMainHand.getDurability()); + var meta = itemMainHand.getItemMeta(); + storageSign.setDamage((short) (meta instanceof Damageable dam ? dam.getDamage() : 0)); } for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); From 13e554fa463669316fe3fd23ab290b797b0bfba8 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Wed, 3 Apr 2024 17:44:44 +0900 Subject: [PATCH 10/82] =?UTF-8?q?EnchantInfo#values()=20=E9=9D=9E=E6=8E=A8?= =?UTF-8?q?=E5=A5=A8=E5=8C=96=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/EnchantInfo.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/wacky/storagesign/EnchantInfo.java b/src/main/java/wacky/storagesign/EnchantInfo.java index 53d548f..61246b8 100644 --- a/src/main/java/wacky/storagesign/EnchantInfo.java +++ b/src/main/java/wacky/storagesign/EnchantInfo.java @@ -1,6 +1,7 @@ package wacky.storagesign; import org.bukkit.Material; +import org.bukkit.Registry; import org.bukkit.enchantments.Enchantment; import org.bukkit.util.NumberConversions; @@ -18,7 +19,7 @@ public EnchantInfo(Material mat, String[] str){ private Enchantment getEnch(String substring) { //後ろ切れても可. - for(Enchantment e : Enchantment.values()) { + for(Enchantment e : Registry.ENCHANTMENT) { if(e.getKey().getKey().startsWith(substring)) return e; } return null; From 03f627ceccef7adc26c854a910ed81c4349dc3e0 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Wed, 3 Apr 2024 17:55:12 +0900 Subject: [PATCH 11/82] =?UTF-8?q?=E3=83=80=E3=83=A1=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E5=80=A4=E3=81=AE=E3=82=BB=E3=83=83=E3=83=88=E3=81=AB=E4=B8=89?= =?UTF-8?q?=E9=A0=85=E6=BC=94=E7=AE=97=E5=AD=90=E3=82=92=E4=BD=BF=E3=82=8F?= =?UTF-8?q?=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSignCore.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index a28808d..69c964d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -195,8 +195,10 @@ else if(mat == Material.WHITE_BANNER){ { storageSign.setMaterial(mat); var meta = itemMainHand.getItemMeta(); - storageSign.setDamage((short) (meta instanceof Damageable dam ? dam.getDamage() : 0)); - } + if (meta instanceof Damageable dam) { + storageSign.setDamage((short) dam.getDamage()); + } + } for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); From 21abce77b54195fd081a75543873b64f402995a6 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Wed, 3 Apr 2024 17:57:59 +0900 Subject: [PATCH 12/82] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSignCore.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 69c964d..b823abb 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -195,10 +195,10 @@ else if(mat == Material.WHITE_BANNER){ { storageSign.setMaterial(mat); var meta = itemMainHand.getItemMeta(); - if (meta instanceof Damageable dam) { + if (meta instanceof Damageable dam) { storageSign.setDamage((short) dam.getDamage()); } - } + } for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); sign.update(); From 2ac2e48655d58d0b48b9eacac2ee29b1653b0d73 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 3 Apr 2024 20:31:52 +0900 Subject: [PATCH 13/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E9=80=9A?= =?UTF-8?q?=E5=B8=B8=E3=81=AE=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/PotionInfo.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index e9c04c3..87ef059 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -10,6 +10,7 @@ public class PotionInfo { + private static String ENHANCE_NORMAL_CODE = "0"; private static String ENHANCE_EXTENSION_CODE = "1"; private static String ENHANCE_STRONG_CODE = "2"; private static String ENHANCE_EXTENSION_PREF = "LONG_"; @@ -133,7 +134,7 @@ private PotionType getType(String effName, String enhance) { // 表記上例外のケースたちの判定 if (effName.equals(SHORT_NAME_HEAL)) { - if (enhance.isEmpty()) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { return PotionType.INSTANT_HEAL; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { return PotionType.STRONG_HEALING; @@ -141,7 +142,7 @@ private PotionType getType(String effName, String enhance) { throw new PotionException("治癒のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_BREAT)) { - if (enhance.isEmpty()) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { return PotionType.WATER_BREATHING; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { return PotionType.LONG_WATER_BREATHING; @@ -149,7 +150,7 @@ private PotionType getType(String effName, String enhance) { throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_DAMAG)) { - if (enhance.isEmpty()) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { return PotionType.INSTANT_DAMAGE; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { return PotionType.STRONG_HARMING; @@ -157,7 +158,7 @@ private PotionType getType(String effName, String enhance) { throw new PotionException("ダメージのポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_JUMP)) { - if (enhance.isEmpty()) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { return PotionType.JUMP; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { return PotionType.LONG_LEAPING; @@ -167,7 +168,7 @@ private PotionType getType(String effName, String enhance) { throw new PotionException("跳躍のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_SPEED)) { - if (enhance.isEmpty()) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { return PotionType.SPEED; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { return PotionType.LONG_SWIFTNESS; From 07925eadd587a3f8ce7b4d65f26e0bbd082d78b1 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 4 Apr 2024 15:11:29 +0900 Subject: [PATCH 14/82] =?UTF-8?q?1.20.4=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=83=88=20=E5=86=85=E9=83=A8=E7=9A=84?= =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E5=90=8D=E3=81=8C?= =?UTF-8?q?=E6=B1=BA=E3=82=81=E6=89=93=E3=81=A1=E3=81=A0=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=82=92=E5=A4=89=E6=95=B0=E5=8C=96=E3=81=A8APIVersio?= =?UTF-8?q?n=E5=A4=89=E6=9B=B4=20=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E7=A8=AE=E9=A1=9E=E3=81=AE=E5=AE=9F=E8=A3=85=E3=82=92?= =?UTF-8?q?is~=E3=81=8B=E3=82=89PotionType=E3=81=8B=E3=82=89=E5=88=A4?= =?UTF-8?q?=E5=88=A5=E3=81=AB=E5=A4=89=E6=9B=B4=20SS=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AEPotionInfo=E3=81=AE=E6=83=85=E5=A0=B1=E3=81=AE?= =?UTF-8?q?=E5=BC=95=E6=95=B0=E3=82=92=E6=AD=A3=E3=81=97=E3=81=84=E3=82=82?= =?UTF-8?q?=E3=81=AE=E3=81=AB=E5=A4=89=E6=9B=B4=20SS=E3=81=AB=E8=A8=98?= =?UTF-8?q?=E8=BC=89=E3=81=99=E3=82=8B=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=81=AE=E5=AE=9F=E8=A3=85=E3=82=92=E6=97=A7?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=8B=E3=82=89=E6=96=B0?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=AB=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=20=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0=E5=90=8D=E3=81=AE?= =?UTF-8?q?=E7=9F=AD=E7=B8=AE=E6=96=87=E5=AD=97=E3=81=AE=E6=96=87=E5=AD=97?= =?UTF-8?q?=E5=88=97substr=E3=82=92LONG=E3=81=A8STRONG=E3=81=8C=E3=81=A1?= =?UTF-8?q?=E3=82=83=E3=82=93=E3=81=A8=E5=88=87=E3=82=8C=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=20=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E7=A8=AE=E9=A1=9E=E3=82=92?= =?UTF-8?q?PotionInfo=E3=81=A7=E5=8F=97=E3=81=91=E5=8F=96=E3=82=8C?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E3=80=81=E5=BC=95=E6=95=B0=E3=81=AE=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=82=92=E8=A8=AD=E5=AE=9A=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=20=E3=83=AD=E3=82=B0=E8=A8=AD=E8=A8=88?= =?UTF-8?q?=EF=BC=88=E9=80=94=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.yml | 4 +-- pom.xml | 12 +++++++++ .../storagesign/Logging/SSLoggerFactory.java | 26 +++++++++++++++++++ .../java/wacky/storagesign/PotionInfo.java | 25 ++++++++++++++---- .../java/wacky/storagesign/StorageSign.java | 2 +- .../wacky/storagesign/StorageSignCore.java | 14 ++++++---- src/main/resources/config.yml | 2 ++ src/main/resources/logback.xml | 17 ++++++++++++ 8 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java create mode 100644 src/main/resources/logback.xml diff --git a/plugin.yml b/plugin.yml index c797a34..53674f4 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,8 +1,8 @@ name: StorageSign main: wacky.storagesign.StorageSignCore -version: 1.4.0 +version: ${version} author: wackyls6 -api-version: 1.19 +api-version: 1.20 softdepend: [WorldGuard] website: https://github.com/wackyls6/StorageSign permissions: diff --git a/pom.xml b/pom.xml index 76197b6..a5ade7b 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,18 @@ junit-jupiter test + + org.slf4j + slf4j-api + 2.0.12 + compile + + + ch.qos.logback + logback-classic + 1.5.3 + compile + UTF-8 diff --git a/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java b/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java new file mode 100644 index 0000000..94c1651 --- /dev/null +++ b/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java @@ -0,0 +1,26 @@ +package wacky.storagesign.Logging; + +import ch.qos.logback.classic.Level; +import org.bukkit.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Objects; + +public class SSLoggerFactory { + private static String _LOGGERNAME; + + public SSLoggerFactory(String level){ + + if(Objects.isNull(_LOGGERNAME)){ + _LOGGERNAME = "SSLoggerFactory" + level; + Logger log = LoggerFactory.getLogger(_LOGGERNAME); + + } + + } + + public Logger getLogger(){ + return LoggerFactory.getLogger(SSLoggerFactory.class + _LOGGERNAME); + } +} diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 87ef059..d44de46 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,10 +1,11 @@ package wacky.storagesign; import org.bukkit.Material; -import org.bukkit.PortalType; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; +import org.slf4j.Logger; import wacky.storagesign.Exception.PotionException; +import wacky.storagesign.Logging.SSLoggerFactory; import java.util.Arrays; @@ -31,6 +32,7 @@ public class PotionInfo { protected Material mat; protected PotionType pot; protected short damage = 0; + protected Logger logger; // 旧メソッド public PotionInfo(Material mat, String[] str){ @@ -98,6 +100,9 @@ public PotionInfo(Material mat, String[] str){ } public PotionInfo(Material material, String type, String effName, String enhance) { + SSLoggerFactory factory = new SSLoggerFactory(""); + logger = factory.getLogger(); + logger.debug("PotionItnfoConstructor:Start"); this.mat = material; // ポーション種別の設定 @@ -109,7 +114,7 @@ public PotionInfo(Material material, String type, String effName, String enhance } this.pot = getType(effName, enhance); - this.damage = NumberConversions.toShort(damage); + this.damage = NumberConversions.toShort(enhance); // 一応前のロジックも入れておく if (damage % 8192 > 64 && pot.isExtendable()) this.damage = 1;//延長 @@ -219,9 +224,9 @@ public static String getShortName(PotionType pot) { // それ以外のもの // 延長・強化のプレフィックス除去 if (name.startsWith(ENHANCE_EXTENSION_PREF)) { - name = name.substring(name.length() - ENHANCE_EXTENSION_PREF.length()); + name = name.substring(ENHANCE_EXTENSION_PREF.length()); } else if (name.startsWith(ENHANCE_STRONG_PREF)) { - name = name.substring(name.length() - ENHANCE_STRONG_PREF.length()); + name = name.substring(ENHANCE_STRONG_PREF.length()); } // 5文字以内の名前なら、そのまま使う。それ以外なら5文字に切り出す @@ -238,13 +243,23 @@ public static String getSignData(Material mat, PotionType pot, short damage) { if (mat == Material.SPLASH_POTION) prefix = PotionInfo.TYPE_SPLASH_PREF; else if (mat == Material.LINGERING_POTION) prefix = PotionInfo.TYPE_LINGERING_PREF; - return prefix + "POTION:" + PotionInfo.getShortType(pot) + ":" + damage; + return prefix + "POTION:" + PotionInfo.getShortName(pot) + ":" + damage; } public static String getTagData(Material mat, PotionType pot, short damage, int amount) { return mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount; } + public static String getPotionTypeCode(PotionType pot){ + String name = pot.toString(); + if (name.startsWith(ENHANCE_EXTENSION_PREF)) { + return ENHANCE_EXTENSION_CODE; + } else if (name.startsWith(ENHANCE_STRONG_PREF)) { + return ENHANCE_STRONG_CODE; + } + return ENHANCE_NORMAL_CODE; + } + public short getDamage() { return damage; } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index be1b780..7af7e2a 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -42,7 +42,7 @@ public StorageSign(ItemStack item) { else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); - PotionInfo pi = new PotionInfo(mat, str[0],str[1], str[2]); + PotionInfo pi = new PotionInfo(mat, potionStr[0],potionStr[1], potionStr[2]); mat = pi.getMaterial(); damage = pi.getDamage(); pot = pi.getPotionType(); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 183650d..fc4f35e 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -50,14 +50,15 @@ import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionType; - -import java.util.logging.Logger; +import org.slf4j.Logger; +import wacky.storagesign.Logging.SSLoggerFactory; public class StorageSignCore extends JavaPlugin implements Listener{ FileConfiguration config; + public Logger logger; + public SSLoggerFactory logFactory; static BannerMeta ominousBannerMeta; @Override @@ -67,6 +68,10 @@ public void onEnable() { config.options().setHeader(Arrays.asList("StorageSign Configuration")); this.saveConfig(); + // ログ取得 + logFactory = new SSLoggerFactory(config.getString("log-level")); + logger = logFactory.getLogger(); + //鯖別レシピが実装されたら Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN,Material.CHERRY_SIGN,Material.BAMBOO_SIGN}; for(int i= 0 ;i<11;i++) { @@ -168,8 +173,7 @@ else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Mater storageSign.setMaterial(mat); PotionMeta potionMeta = (PotionMeta)itemMainHand.getItemMeta(); PotionType pot = potionMeta.getBasePotionType(); - if(pot.isExtendable()) storageSign.setDamage((short) 1); - if(pot.isUpgradeable()) storageSign.setDamage((short) 2); + storageSign.setDamage(Short.parseShort(PotionInfo.getPotionTypeCode(pot))); storageSign.setPotion(pot); } else if (mat == Material.ENCHANTED_BOOK) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ea53406..8d1a928 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,6 +1,8 @@ #StorageSign Configuration no-permisson: You don't have permission +log-level: DEBUG +#log-level: WARN manual-import: true manual-export: true auto-import: true diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..5f59556 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,17 @@ + + + + + + %d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n + + + + + + + + + + + \ No newline at end of file From d8640cb674fc72d27de0fb5df0aec27b11026f39 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Thu, 4 Apr 2024 22:05:52 +0900 Subject: [PATCH 15/82] =?UTF-8?q?isCancelled=E3=82=92useInteractedBlock?= =?UTF-8?q?=E3=81=AB=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSignCore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 538cc56..e0959d4 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -122,7 +122,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); Block block; //手持ちがブロックだと叩いた看板を取得できないことがあるとか - if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) { + if (event.useInteractedBlock() == Result.DENY && event.getAction() == Action.RIGHT_CLICK_AIR) { try { block = player.getTargetBlock((Set) null, 3); } catch (IllegalStateException ex) { From 61526e6d16c44a8a597989e41d39fe6b4b7d018a Mon Sep 17 00:00:00 2001 From: Teruteru Date: Thu, 4 Apr 2024 22:22:27 +0900 Subject: [PATCH 16/82] =?UTF-8?q?PotionInfo.getShortName=E3=81=A7Arrays.as?= =?UTF-8?q?List=E3=82=92=E4=BD=BF=E3=81=86=E3=81=AE=E3=82=92=E3=82=84?= =?UTF-8?q?=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index d44de46..af334e7 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -7,7 +7,9 @@ import wacky.storagesign.Exception.PotionException; import wacky.storagesign.Logging.SSLoggerFactory; -import java.util.Arrays; +import java.util.Collections; +import java.util.EnumSet; +import java.util.Set; public class PotionInfo { @@ -21,11 +23,11 @@ public class PotionInfo { private static String SHORT_NAME_DAMAG = "DAMAG"; private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; - private static PotionType[] HEAL_POTIONS = {PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING}; - private static PotionType[] BREATH_POTIONS = {PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING}; - private static PotionType[] DAMAGE_POTIONS = {PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING}; - private static PotionType[] JUMP_POTIONS = {PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING}; - private static PotionType[] SPEED_POTIONS = {PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS}; + private static final Set HEAL_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); + private static final Set BREATH_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); + private static final Set DAMAGE_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); + private static final Set JUMP_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); + private static final Set SPEED_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; @@ -210,15 +212,15 @@ public static String getShortName(PotionType pot) { String name = pot.toString(); // 特殊命名ルールの取り出し - if (Arrays.asList(HEAL_POTIONS).contains(pot)) { + if (HEAL_POTIONS.contains(pot)) { return SHORT_NAME_HEAL; - } else if (Arrays.asList(BREATH_POTIONS).contains(pot)) { + } else if (BREATH_POTIONS.contains(pot)) { return SHORT_NAME_BREAT; - } else if (Arrays.asList(DAMAGE_POTIONS).contains(pot)) { + } else if (DAMAGE_POTIONS.contains(pot)) { return SHORT_NAME_DAMAG; - } else if (Arrays.asList(JUMP_POTIONS).contains(pot)) { + } else if (JUMP_POTIONS.contains(pot)) { return SHORT_NAME_JUMP; - } else if (Arrays.asList(SPEED_POTIONS).contains(pot)) { + } else if (SPEED_POTIONS.contains(pot)) { return SHORT_NAME_SPEED; } else { // それ以外のもの From d11b931ef264387b412d5d6656551ee95fc57a37 Mon Sep 17 00:00:00 2001 From: sho_5414 Date: Fri, 5 Apr 2024 00:37:57 +0900 Subject: [PATCH 17/82] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92?= =?UTF-8?q?=E3=82=AF=E3=83=AA=E3=83=BC=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ・フォーマッタを適用 ・中括弧の無いIF文に中括弧を追加 ・ブランクのJavadocコメントを追加 ・可読性保持のため、適宜改行 --- .../java/wacky/storagesign/StorageSign.java | 798 ++++++++++++------ 1 file changed, 558 insertions(+), 240 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 7810bf6..b797d0f 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -1,4 +1,5 @@ package wacky.storagesign; + import java.util.ArrayList; import java.util.List; @@ -7,412 +8,729 @@ import org.bukkit.block.sign.Side; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.*; -import org.bukkit.potion.PotionData; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.FireworkMeta; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; -import wacky.storagesign.PotionInfo; +/** + * + * */ public class StorageSign { - - protected Material smat; - protected Material mat; + /** */ + protected Material smat; + /** */ + protected Material mat; + /** */ protected short damage; + /** */ protected Enchantment ench; + /** */ protected PotionType pot; + /** */ protected int amount; + /** */ protected int stack; + /** */ protected boolean isEmpty; - - //StorageSignだと確認してから使っちくりー + + /** + * + * */ public StorageSign(ItemStack item) { - String[] str = item.getItemMeta().getLore().get(0).split(" "); - if(str[0].matches("Empty")) isEmpty = true; - else { - mat = getMaterial(str[0].split(":")[0]); - if(mat == Material.ENCHANTED_BOOK){ - EnchantInfo ei = new EnchantInfo(mat, str[0].split(":")); - damage = ei.getDamage(); - ench = ei.getEnchantType(); - } - else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ -// PotionInfo pi = new PotionInfo(mat, str[0].split(":")); + //StorageSignだと確認してから使っちくりー + String[] str = item.getItemMeta().getLore().get(0).split(" "); + + if (str[0].matches("Empty")) { + isEmpty = true; + + } else { + mat = getMaterial(str[0].split(":")[0]); + + if (mat == Material.ENCHANTED_BOOK) { + EnchantInfo ei = new EnchantInfo(mat, str[0].split(":")); + damage = ei.getDamage(); + ench = ei.getEnchantType(); + + } else if (mat == Material.POTION + || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); - PotionInfo pi = new PotionInfo(mat, potionStr[0],potionStr[1], potionStr[2]); - mat = pi.getMaterial(); - damage = pi.getDamage(); - pot = pi.getPotionType(); - }else if(str[0].contains(":")) damage = NumberConversions.toShort(str[0].split(":")[1]); - else if(mat== Material.STONE_SLAB ) mat = Material.SMOOTH_STONE_SLAB;//1.13の滑らかハーフと1.14の石ハーフ区別 - amount = NumberConversions.toInt(str[1]); - } - smat = item.getType(); - stack = item.getAmount(); + PotionInfo pi = new PotionInfo(mat, potionStr[0], potionStr[1], potionStr[2]); + mat = pi.getMaterial(); + damage = pi.getDamage(); + pot = pi.getPotionType(); + + } else if (str[0].contains(":")) { + damage = NumberConversions.toShort(str[0].split(":")[1]); + + } else if (mat == Material.STONE_SLAB) { + //1.13の滑らかハーフと1.14の石ハーフ区別 + mat = Material.SMOOTH_STONE_SLAB; + + } + amount = NumberConversions.toInt(str[1]); + } + + smat = item.getType(); + stack = item.getAmount(); } //Sto(ry - /* public StorageSign(Sign sign) { + /* public StorageSign(Sign sign) { this(sign,Material.OAK_SIGN); }*/ - - public StorageSign(Sign sign,Material signmat) {//上と統合したい + + /** + * + * */ + public StorageSign(Sign sign, Material signmat) { + //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); mat = getMaterial(line2[0]); - isEmpty = mat == null || mat == Material.AIR; - - if(mat == Material.ENCHANTED_BOOK){ - EnchantInfo ei = new EnchantInfo(mat, line2); - damage = ei.getDamage(); - ench = ei.getEnchantType(); - } - else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ -// PotionInfo pi = new PotionInfo(mat, line2); - PotionInfo pi = new PotionInfo(mat, line2[0],line2[1], line2[2]); - mat = pi.getMaterial(); - damage = pi.getDamage(); - pot = pi.getPotionType(); + isEmpty = (mat == null || mat == Material.AIR); + + if (mat == Material.ENCHANTED_BOOK) { + EnchantInfo ei = new EnchantInfo(mat, line2); + damage = ei.getDamage(); + ench = ei.getEnchantType(); + + } else if (mat == Material.POTION + || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + // PotionInfo pi = new PotionInfo(mat, line2); + PotionInfo pi = new PotionInfo(mat, line2[0], line2[1], line2[2]); + mat = pi.getMaterial(); + damage = pi.getDamage(); + pot = pi.getPotionType(); + + } else if (line2.length == 2) { + damage = NumberConversions.toShort(line2[1]); + + } else if (mat == Material.STONE_SLAB) { + //1.13の滑らかハーフと1.14の石ハーフ区別 + mat = Material.SMOOTH_STONE_SLAB; + } - else if(line2.length == 2) damage = NumberConversions.toShort(line2[1]); - else if(mat== Material.STONE_SLAB ) mat = Material.SMOOTH_STONE_SLAB;//1.13の滑らかハーフと1.14の石ハーフ区別 - + amount = NumberConversions.toInt(sign.getSide(Side.FRONT).getLine(2)); isEmpty = amount == 0; stack = 1; //壁掛け看板のチェック - if(signmat == Material.OAK_WALL_SIGN) smat = Material.OAK_SIGN; - else if(signmat == Material.BIRCH_WALL_SIGN) smat = Material.BIRCH_SIGN; - else if(signmat == Material.SPRUCE_WALL_SIGN) smat = Material.SPRUCE_SIGN; - else if(signmat == Material.JUNGLE_WALL_SIGN) smat = Material.JUNGLE_SIGN; - else if(signmat == Material.ACACIA_WALL_SIGN) smat = Material.ACACIA_SIGN; - else if(signmat == Material.DARK_OAK_WALL_SIGN) smat = Material.DARK_OAK_SIGN; - else if(signmat == Material.CRIMSON_WALL_SIGN) smat = Material.CRIMSON_SIGN; - else if(signmat == Material.WARPED_WALL_SIGN) smat = Material.WARPED_SIGN; - else if(signmat == Material.MANGROVE_WALL_SIGN) smat = Material.MANGROVE_SIGN; - else if(signmat == Material.CHERRY_WALL_SIGN) smat = Material.CHERRY_SIGN; - else if(signmat == Material.BAMBOO_WALL_SIGN) smat = Material.BAMBOO_SIGN; - else smat = signmat; - + if (signmat == Material.OAK_WALL_SIGN) { + smat = Material.OAK_SIGN; + + } else if (signmat == Material.BIRCH_WALL_SIGN) { + smat = Material.BIRCH_SIGN; + + } else if (signmat == Material.SPRUCE_WALL_SIGN) { + smat = Material.SPRUCE_SIGN; + + } else if (signmat == Material.JUNGLE_WALL_SIGN) { + smat = Material.JUNGLE_SIGN; + + } else if (signmat == Material.ACACIA_WALL_SIGN) { + smat = Material.ACACIA_SIGN; + + } else if (signmat == Material.DARK_OAK_WALL_SIGN) { + smat = Material.DARK_OAK_SIGN; + + } else if (signmat == Material.CRIMSON_WALL_SIGN) { + smat = Material.CRIMSON_SIGN; + + } else if (signmat == Material.WARPED_WALL_SIGN) { + smat = Material.WARPED_SIGN; + + } else if (signmat == Material.MANGROVE_WALL_SIGN) { + smat = Material.MANGROVE_SIGN; + + } else if (signmat == Material.CHERRY_WALL_SIGN) { + smat = Material.CHERRY_SIGN; + + } else if (signmat == Material.BAMBOO_WALL_SIGN) { + smat = Material.BAMBOO_SIGN; + + } else { + smat = signmat; + + } + } - //変換 - protected Material getMaterial(String str) { - if (str.matches("")) return Material.AIR; - // if (str.matches("EmptySign")) return Material.END_PORTAL; - else if(str.matches("EmptySign") || str.matches("OakStorageSign")) { - damage = 1; - return Material.OAK_SIGN; + //変換 + /** + * + * */ + protected Material getMaterial(String str) { + if (str.matches("")) { + return Material.AIR; } - else if(str.matches("SpruceStorageSign")) { - damage = 1; - return Material.SPRUCE_SIGN; - } - else if(str.matches("BirchStorageSign")) { - damage = 1; - return Material.BIRCH_SIGN; - } - else if(str.matches("JungleStorageSign")) { - damage = 1; - return Material.JUNGLE_SIGN; - } - else if(str.matches("AcaciaStorageSign")) { - damage = 1; - return Material.ACACIA_SIGN; - } - else if(str.matches("DarkOakStorageSign")) { - damage = 1; - return Material.DARK_OAK_SIGN; - } - else if(str.matches("CrimsonStorageSign")) { - damage = 1; - return Material.CRIMSON_SIGN; - } - else if(str.matches("WarpedStorageSign")) { - damage = 1; - return Material.WARPED_SIGN; - } - else if(str.matches("MangroveStorageSign")) { + +// if (str.matches("EmptySign")) { +// return Material.END_PORTAL; +// } + + else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { + damage = 1; + return Material.OAK_SIGN; + + } else if (str.matches("SpruceStorageSign")) { + damage = 1; + return Material.SPRUCE_SIGN; + + } else if (str.matches("BirchStorageSign")) { + damage = 1; + return Material.BIRCH_SIGN; + + } else if (str.matches("JungleStorageSign")) { + damage = 1; + return Material.JUNGLE_SIGN; + + } else if (str.matches("AcaciaStorageSign")) { + damage = 1; + return Material.ACACIA_SIGN; + + } else if (str.matches("DarkOakStorageSign")) { + damage = 1; + return Material.DARK_OAK_SIGN; + + } else if (str.matches("CrimsonStorageSign")) { + damage = 1; + return Material.CRIMSON_SIGN; + + } else if (str.matches("WarpedStorageSign")) { + damage = 1; + return Material.WARPED_SIGN; + + } else if (str.matches("MangroveStorageSign")) { damage = 1; return Material.MANGROVE_SIGN; - } - else if(str.matches("CherryStorageSign")) { + + } else if (str.matches("CherryStorageSign")) { damage = 1; return Material.CHERRY_SIGN; - } - else if(str.matches("BambooStorageSign")) { + + } else if (str.matches("BambooStorageSign")) { damage = 1; return Material.BAMBOO_SIGN; + } - if (str.matches("HorseEgg")){ - damage = 1; - return Material.END_PORTAL;//ガスト卵でよくね? + + if (str.matches("HorseEgg")) { + damage = 1; + return Material.END_PORTAL; + //ガスト卵でよくね? } + //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; - + //1.13→1.14用 - if (str.startsWith("SIGN")) return Material.OAK_SIGN; - if (str.startsWith("ROSE_RED")) return Material.RED_DYE; - if (str.startsWith("DANDELION_YELLOW")) return Material.YELLOW_DYE; - if (str.startsWith("CACTUS_GREEN")) return Material.GREEN_DYE; - + if (str.startsWith("SIGN")) { + return Material.OAK_SIGN; + + } + + if (str.startsWith("ROSE_RED")) { + return Material.RED_DYE; + + } + + if (str.startsWith("DANDELION_YELLOW")) { + return Material.YELLOW_DYE; + + } + + if (str.startsWith("CACTUS_GREEN")) { + return Material.GREEN_DYE; + + } + //省略用 - if (str.startsWith("ENCHBOOK")) return Material.ENCHANTED_BOOK; - if (str.startsWith("SPOTION")) return Material.SPLASH_POTION; - if (str.startsWith("LPOTION")) return Material.LINGERING_POTION; + if (str.startsWith("ENCHBOOK")) { + return Material.ENCHANTED_BOOK; + + } + + if (str.startsWith("SPOTION")) { + return Material.SPLASH_POTION; + + } + if (str.startsWith("LPOTION")) { + return Material.LINGERING_POTION; + + } Material mat = Material.matchMaterial(str); - if (mat == null) { //後ろ切れる程度なら対応可 + + if (mat == null) { + //後ろ切れる程度なら対応可 for (Material m : Material.values()) { - if(m.toString().startsWith(str)) return m; + if (m.toString().startsWith(str)) + return m; } + } - return mat;//nullなら空. + + //nullなら空. + return mat; + } - - protected String getShortName() {//2行目の記載内容 - if (mat == null || mat == Material.AIR) return ""; - else if (mat == Material.END_PORTAL){ - if(damage == 0) return "OakStorageSign"; - if(damage == 1) return "HorseEgg"; - }else if(mat == Material.OAK_SIGN && damage == 1) return "OakStorageSign"; - else if(mat == Material.SPRUCE_SIGN && damage == 1) return "SpruceStorageSign"; - else if(mat == Material.BIRCH_SIGN && damage == 1) return "BirchStorageSign"; - else if(mat == Material.JUNGLE_SIGN && damage == 1) return "JungleStorageSign"; - else if(mat == Material.ACACIA_SIGN && damage == 1) return "AcaciaStorageSign"; - else if(mat == Material.DARK_OAK_SIGN && damage == 1) return "DarkOakStorageSign"; - else if(mat == Material.CRIMSON_SIGN && damage == 1) return "CrimsonStorageSign"; - else if(mat == Material.WARPED_SIGN && damage == 1) return "WarpedStorageSign"; - else if(mat == Material.MANGROVE_SIGN && damage == 1) return "MangroveStorageSign"; - else if(mat == Material.CHERRY_SIGN && damage == 1) return "CherryStorageSign"; - else if(mat == Material.BAMBOO_SIGN && damage == 1) return "BambooStorageSign"; + + /** + * + * */ + protected String getShortName() { + //2行目の記載内容 + if (mat == null || mat == Material.AIR) { + return ""; + + } else if (mat == Material.END_PORTAL) { + if (damage == 0) { + return "OakStorageSign"; + } + + if (damage == 1) { + return "HorseEgg"; + } + + } else if (mat == Material.OAK_SIGN && damage == 1) { + return "OakStorageSign"; + + } else if (mat == Material.SPRUCE_SIGN && damage == 1) { + return "SpruceStorageSign"; + + } else if (mat == Material.BIRCH_SIGN && damage == 1) { + return "BirchStorageSign"; + + } else if (mat == Material.JUNGLE_SIGN && damage == 1) { + return "JungleStorageSign"; + + } else if (mat == Material.ACACIA_SIGN && damage == 1) { + return "AcaciaStorageSign"; + + } else if (mat == Material.DARK_OAK_SIGN && damage == 1) { + return "DarkOakStorageSign"; + + } else if (mat == Material.CRIMSON_SIGN && damage == 1) { + return "CrimsonStorageSign"; + + } else if (mat == Material.WARPED_SIGN && damage == 1) { + return "WarpedStorageSign"; + + } else if (mat == Material.MANGROVE_SIGN && damage == 1) { + return "MangroveStorageSign"; + + } else if (mat == Material.CHERRY_SIGN && damage == 1) { + return "CherryStorageSign"; + + } else if (mat == Material.BAMBOO_SIGN && damage == 1) { + return "BambooStorageSign"; + + } + //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; - else if (mat == Material.ENCHANTED_BOOK) return "ENCHBOOK:" + EnchantInfo.getShortType(ench) + ":" + damage; - else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) - { - return PotionInfo.getSignData(mat, pot, damage); + else if (mat == Material.ENCHANTED_BOOK) { + return "ENCHBOOK:" + EnchantInfo.getShortType(ench) + ":" + damage; + + } + + else if (mat == Material.POTION + || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + return PotionInfo.getSignData(mat, pot, damage); + + } + + //リミットブレイク + int limit = 99; + + if (damage != 0) { + limit -= String.valueOf(damage).length() + 1; } - int limit = 99;//リミットブレイク - if (damage != 0) limit -= String.valueOf(damage).length() + 1; if (mat.toString().length() > limit) { - if (damage != 0) return mat.toString().substring(0, limit) + ":" + damage; + if (damage != 0) { + return mat.toString().substring(0, limit) + ":" + damage; + + } + return mat.toString().substring(0, limit); + } else { - if (damage != 0) return mat.toString() + ":" + damage; + if (damage != 0) { + return mat.toString() + ":" + damage; + + } return mat.toString(); + } } + /** + * + * */ public ItemStack getStorageSign() { ItemStack item = new ItemStack(smat, stack); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("StorageSign"); List list = new ArrayList<>(); + //IDとMaterial名が混ざってたり、エンチャ本対応したり - if (isEmpty) list.add("Empty"); - else if (mat == Material.ENCHANTED_BOOK) list.add(mat.toString() + ":" + ench.getKey().getKey() + ":" + damage + " " + amount); - else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ - list.add(PotionInfo.getTagData(mat, pot, damage, amount)); + if (isEmpty) { + list.add("Empty"); + + } else if (mat == Material.ENCHANTED_BOOK) { + list.add(mat.toString() + ":" + ench.getKey().getKey() + ":" + damage + " " + amount); + + } else if (mat == Material.POTION + || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + list.add(PotionInfo.getTagData(mat, pot, damage, amount)); + + } else { + list.add(getShortName() + " " + amount); + } - else list.add(getShortName() +" "+ amount); + meta.setLore(list); item.setItemMeta(meta); + return item; } + /** + * + * */ public static ItemStack emptySign() { - return emptySign(Material.OAK_SIGN); - + return emptySign(Material.OAK_SIGN); + } - public static ItemStack emptySign(Material smat) { + /** + * + * */ + public static ItemStack emptySign(Material smat) { ItemStack emptySign = new ItemStack(smat); ItemMeta meta = emptySign.getItemMeta(); List list = new ArrayList<>(); + meta.setDisplayName("StorageSign"); list.add("Empty"); meta.setLore(list); emptySign.setItemMeta(meta); + return emptySign; - } - + } + /** + * + * */ private ItemStack emptyHorseEgg() { ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); List list = new ArrayList<>(); + meta.setDisplayName("HorseEgg"); list.add("Empty"); meta.setLore(list); emptyHorseEgg.setItemMeta(meta); return emptyHorseEgg; - } + } + /** + * + * */ public String getSigntext(int i) { String[] sign = new String[4]; sign[0] = "StorageSign"; sign[1] = getShortName(); sign[2] = String.valueOf(amount); - sign[3] = String.valueOf(amount / 3456) + "LC " + String.valueOf(amount % 3456 / 64) + "s " + String.valueOf(amount % 64); + sign[3] = String.valueOf(amount / 3456) + "LC " + String.valueOf(amount % 3456 / 64) + "s " + + String.valueOf(amount % 64); return sign[i]; } - public ItemStack getContents() {//中身取得、一部アイテム用の例外 - if (mat == null) return null; - if (mat == Material.END_PORTAL){ - if(damage == 0) return emptySign(); - if(damage == 1) return emptyHorseEgg(); - }if(mat == Material.STONE_SLAB) return new ItemStack(mat,1);//ダメージ値0にする - else if(mat == Material.OAK_SIGN || mat == Material.SPRUCE_SIGN || mat == Material.BIRCH_SIGN || mat == Material.JUNGLE_SIGN || - mat == Material.ACACIA_SIGN || mat == Material.DARK_OAK_SIGN || mat == Material.CRIMSON_SIGN || mat == Material.WARPED_SIGN || - mat == Material.MANGROVE_SIGN || mat == Material.CHERRY_SIGN || mat == Material.BAMBOO_SIGN) { - if(damage == 0) return new ItemStack(mat,1); - else return emptySign(mat); + /** + * + * */ + public ItemStack getContents() { + //中身取得、一部アイテム用の例外 + if (mat == null) { + return null; + + } + + if (mat == Material.END_PORTAL) { + if (damage == 0) { + return emptySign(); + + } + + if (damage == 1) { + return emptyHorseEgg(); + + } + } - else if (mat == Material.ENCHANTED_BOOK) { + + if (mat == Material.STONE_SLAB) { + //ダメージ値0にする + return new ItemStack(mat, 1); + + } else if (mat == Material.OAK_SIGN + || mat == Material.SPRUCE_SIGN + || mat == Material.BIRCH_SIGN + || mat == Material.JUNGLE_SIGN + || mat == Material.ACACIA_SIGN + || mat == Material.DARK_OAK_SIGN + || mat == Material.CRIMSON_SIGN + || mat == Material.WARPED_SIGN + || mat == Material.MANGROVE_SIGN + || mat == Material.CHERRY_SIGN + || mat == Material.BAMBOO_SIGN) { + + if (damage == 0) { + return new ItemStack(mat, 1); + + } else { + return emptySign(mat); + + } + + } else if (mat == Material.ENCHANTED_BOOK) { ItemStack item = new ItemStack(mat, 1); - EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta)item.getItemMeta(); + EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); enchantMeta.addStoredEnchant(ench, damage, true); item.setItemMeta(enchantMeta); return item; - } - else if(mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION){ - ItemStack item = new ItemStack(mat, 1); - PotionMeta potionMeta = (PotionMeta)item.getItemMeta(); -// potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); + + } else if (mat == Material.POTION + || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + + ItemStack item = new ItemStack(mat, 1); + PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); + // potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); potionMeta.setBasePotionType(pot); item.setItemMeta(potionMeta); return item; - }else if(mat == Material.FIREWORK_ROCKET){ - ItemStack item = new ItemStack(mat, 1); - FireworkMeta fireworkMeta = (FireworkMeta)item.getItemMeta(); - fireworkMeta.setPower(damage); - item.setItemMeta(fireworkMeta); - return item; - }else if(mat == Material.WHITE_BANNER && damage == 8) { - ItemStack item = new ItemStack(mat,1); - item.setItemMeta(StorageSignCore.ominousBannerMeta);//どこかからコピー - return item; - + + } else if (mat == Material.FIREWORK_ROCKET) { + ItemStack item = new ItemStack(mat, 1); + FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); + fireworkMeta.setPower(damage); + item.setItemMeta(fireworkMeta); + return item; + + } else if (mat == Material.WHITE_BANNER && damage == 8) { + ItemStack item = new ItemStack(mat, 1); + //どこかからコピー + item.setItemMeta(StorageSignCore.ominousBannerMeta); + return item; + + } + + if (damage == 0) { + //大半はダメージなくなった + return new ItemStack(mat, 1); } - if(damage == 0) return new ItemStack(mat, 1);//大半はダメージなくなった + var itemStack = new ItemStack(mat, 1); var meta = itemStack.getItemMeta(); + if (meta instanceof Damageable dam) { dam.setDamage(damage); itemStack.setItemMeta(meta); } - return itemStack;//ツール系のみダメージあり + + //ツール系のみダメージあり + return itemStack; + } - //回収可能か判定、エンチャ本は本自身の合成回数を問わない + //回収可能か判定、エンチャ本は本自身の合成回数を問わない + /** + * + * */ public boolean isSimilar(ItemStack item) { - if(item == null) return false; + if (item == null) { + return false; + + } + if (mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { - EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta)item.getItemMeta(); - if(enchantMeta.getStoredEnchants().size() == 1) - { + + EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); + if (enchantMeta.getStoredEnchants().size() == 1) { Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - if (itemEnch == ench && enchantMeta.getStoredEnchantLevel(itemEnch) == damage) return true; + + if (itemEnch == ench && enchantMeta.getStoredEnchantLevel(itemEnch) == damage) { + return true; + + } } + return false; - }else if(isShulker(mat)){ - //後回し + + } else if (isShulker(mat)) { + //後回し + } + return getContents().isSimilar(item); } + /** + * + * */ public Material getMaterial() { return mat; } + + /** + * + * */ public void setMaterial(Material mat) { this.mat = mat; } + /** + * + * */ public short getDamage() { return damage; } + /** + * + * */ public void setDamage(short damage) { this.damage = damage; } + /** + * + * */ public int getAmount() { return amount; } + /** + * + * */ public void setAmount(int amount) { this.amount = amount; isEmpty = amount == 0; } + /** + * + * */ public void addAmount(int amount) { - if(this.amount < -amount) this.amount = 0; - else this.amount += amount; - if(this.amount < 0) this.amount = Integer.MAX_VALUE; + if (this.amount < -amount) { + this.amount = 0; + + } else { + this.amount += amount; + } + + if (this.amount < 0) { + this.amount = Integer.MAX_VALUE; + } + isEmpty = this.amount == 0; } + /** + * + * */ public int getStackSize() { return stack; } + /** + * + * */ public boolean isEmpty() { return isEmpty; } - public void setEnchant(Enchantment ench) { - this.ench = ench; - } - - public Enchantment getEnchant() { - return ench; - } - - public void setPotion(PotionType pot) { - this.pot = pot; - } - - public PotionType getPotion() { - return pot; - } - - public Material getSmat() { - return smat; - } - - private boolean isShulker(Material mat) { - switch(mat){ - case SHULKER_BOX: - case WHITE_SHULKER_BOX: - case ORANGE_SHULKER_BOX: - case MAGENTA_SHULKER_BOX: - case LIGHT_BLUE_SHULKER_BOX: - case YELLOW_SHULKER_BOX: - case LIME_SHULKER_BOX: - case PINK_SHULKER_BOX: - case GRAY_SHULKER_BOX: - case LIGHT_GRAY_SHULKER_BOX: - case CYAN_SHULKER_BOX: - case PURPLE_SHULKER_BOX: - case BLUE_SHULKER_BOX: - case BROWN_SHULKER_BOX: - case GREEN_SHULKER_BOX: - case RED_SHULKER_BOX: - case BLACK_SHULKER_BOX: - return true; - default: - } - return false; - } - + /** + * + * */ + public void setEnchant(Enchantment ench) { + this.ench = ench; + } + + /** + * + * */ + public Enchantment getEnchant() { + return ench; + } + + /** + * + * */ + public void setPotion(PotionType pot) { + this.pot = pot; + } + + /** + * + * */ + public PotionType getPotion() { + return pot; + } + + /** + * + * */ + public Material getSmat() { + return smat; + } + + /** + * + * */ + private boolean isShulker(Material mat) { + switch (mat) { + case SHULKER_BOX: + case WHITE_SHULKER_BOX: + case ORANGE_SHULKER_BOX: + case MAGENTA_SHULKER_BOX: + case LIGHT_BLUE_SHULKER_BOX: + case YELLOW_SHULKER_BOX: + case LIME_SHULKER_BOX: + case PINK_SHULKER_BOX: + case GRAY_SHULKER_BOX: + case LIGHT_GRAY_SHULKER_BOX: + case CYAN_SHULKER_BOX: + case PURPLE_SHULKER_BOX: + case BLUE_SHULKER_BOX: + case BROWN_SHULKER_BOX: + case GREEN_SHULKER_BOX: + case RED_SHULKER_BOX: + case BLACK_SHULKER_BOX: + return true; + + default: + } + return false; + } + } From 7a1622fa09cac0742a606ebbb2dbeb3206ec3c8a Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 5 Apr 2024 12:19:39 +0900 Subject: [PATCH 18/82] =?UTF-8?q?1.20.4=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=83=88=20=E3=83=AD=E3=82=B0=E8=A8=AD?= =?UTF-8?q?=E8=A8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 +-- .../wacky/storagesign/Logging/SSLogger.java | 130 +++++++++++++++++- .../storagesign/Logging/SSLoggerFactory.java | 26 ---- .../java/wacky/storagesign/PotionInfo.java | 8 +- .../wacky/storagesign/StorageSignCore.java | 16 ++- 5 files changed, 149 insertions(+), 47 deletions(-) delete mode 100644 src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java diff --git a/pom.xml b/pom.xml index a5ade7b..0611a71 100644 --- a/pom.xml +++ b/pom.xml @@ -62,17 +62,17 @@ junit-jupiter test + - org.slf4j - slf4j-api - 2.0.12 - compile + org.apache.logging.log4j + log4j-core + 2.23.1 + - ch.qos.logback - logback-classic - 1.5.3 - compile + org.apache.logging.log4j + log4j-api + 2.23.1 diff --git a/src/main/java/wacky/storagesign/Logging/SSLogger.java b/src/main/java/wacky/storagesign/Logging/SSLogger.java index 1b669ba..7ebba01 100644 --- a/src/main/java/wacky/storagesign/Logging/SSLogger.java +++ b/src/main/java/wacky/storagesign/Logging/SSLogger.java @@ -1,8 +1,134 @@ package wacky.storagesign.Logging; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.text.SimpleDateFormat; +import java.util.Objects; -import java.util.logging.Logger; public class SSLogger { - private Logger _logger; + private static String _LOGLEVELSTR; + private static int _LOGLEVELWEIGHT; + + private static final String _LEVELFATAL = "SERVER"; + private static final String _LEVELWARN = "WARN"; + private static final String _LEVELERROR = "ERROR"; + private static final String _LEVELINFO = "INFO"; + private static final String _LEVELDEBUG = "DEBUG"; + private static final String _LEVELTRACE = "TRACE"; + private static final int _LEVELWEIGHTFATAL = 6; + private static final int _LEVELWEIGHTERROR = 5; + private static final int _LEVELWEIGHTWARN = 4; + private static final int _LEVELWEIGHTINFO = 3; + private static final int _LEVELWEIGHTDEBUG = 2; + private static final int _LEVELWEIGHTTRACE = 1; + + private static final String _LOG_FORMAT = "【StorageSign】 %s"; + private static final String _LOG_FORMAT_LEVELSET = "【StorageSign】 [%s] %s"; + private final Logger _logger; + private SimpleDateFormat _dateFormat; + + public SSLogger(String level){ + + // 初期化メソッド内で呼び出し想定。初回のみ、レベルセットを実施 + if(Objects.isNull(_LOGLEVELSTR)){ + if(level.equals(_LEVELFATAL)){ + _LOGLEVELSTR = _LEVELFATAL; + _LOGLEVELWEIGHT = _LEVELWEIGHTFATAL; + } else if(level.equals(_LEVELERROR)){ + _LOGLEVELSTR = _LEVELERROR; + _LOGLEVELWEIGHT = _LEVELWEIGHTERROR; + } else if(level.equals(_LEVELWARN)){ + _LOGLEVELSTR = _LEVELWARN; + _LOGLEVELWEIGHT = _LEVELWEIGHTWARN; + } else if(level.equals(_LEVELDEBUG)){ + _LOGLEVELSTR = _LEVELDEBUG; + _LOGLEVELWEIGHT = _LEVELWEIGHTDEBUG; + } else if(level.equals(_LEVELTRACE)){ + _LOGLEVELSTR = _LEVELTRACE; + _LOGLEVELWEIGHT = _LEVELWEIGHTTRACE; + } else{ + _LOGLEVELSTR = _LEVELINFO; + _LOGLEVELWEIGHT = _LEVELWEIGHTINFO; + } + } + _logger = LogManager.getLogger(SSLogger.class); + } + + public void fatal(String msg){ + if(_LEVELWEIGHTFATAL >= _LOGLEVELWEIGHT){ + _logger.fatal(_LOG_FORMAT.formatted( msg)); + } + } + + public void fatal(String msg, Exception e){ + if(_LEVELWEIGHTFATAL >= _LOGLEVELWEIGHT){ + _logger.fatal(_LOG_FORMAT.formatted( msg), e); + } + } + + public void error(String msg){ + if(_LEVELWEIGHTERROR >= _LOGLEVELWEIGHT){ + _logger.error(_LOG_FORMAT.formatted( msg)); + } + } + + public void error(String msg, Exception e){ + if(_LEVELWEIGHTERROR >= _LOGLEVELWEIGHT){ + _logger.error(_LOG_FORMAT.formatted( msg), e); + } + } + + public void warn(String msg){ + if(_LEVELWEIGHTWARN >= _LOGLEVELWEIGHT){ + _logger.warn(_LOG_FORMAT.formatted( msg)); + } + } + + public void warn(String msg, Exception e){ + if(_LEVELWEIGHTWARN >= _LOGLEVELWEIGHT){ + _logger.warn(_LOG_FORMAT.formatted( msg), e); + } + } + + public void info(String msg){ + if(_LEVELWEIGHTINFO >= _LOGLEVELWEIGHT){ + _logger.info(_LOG_FORMAT.formatted( msg)); + } + } + + public void info(String msg, Exception e){ + if(_LEVELWEIGHTINFO >= _LOGLEVELWEIGHT){ + _logger.info(_LOG_FORMAT.formatted( msg), e); + } + } + + public void debug(String msg){ + if(_LEVELWEIGHTDEBUG >= _LOGLEVELWEIGHT){ + // Debugレベルはマイクラで出してくれないので、INFOでだす + _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELDEBUG, msg)); + } + } + + public void debug(String msg, Exception e){ + if(_LEVELWEIGHTDEBUG >= _LOGLEVELWEIGHT){ + // Debugレベルはマイクラで出してくれないので、INFOでだす + _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELDEBUG, msg), e); + } + } + + public void trace(String msg){ + if(_LEVELWEIGHTTRACE >= _LOGLEVELWEIGHT){ + // Traceレベルはマイクラで出してくれないので、INFOでだす + _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELTRACE, msg)); + } + } + + public void trace(String msg, Exception e){ + if(_LEVELWEIGHTTRACE >= _LOGLEVELWEIGHT){ + // Traceレベルはマイクラで出してくれないので、INFOでだす + _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELTRACE, msg), e); + } + } } diff --git a/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java b/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java deleted file mode 100644 index 94c1651..0000000 --- a/src/main/java/wacky/storagesign/Logging/SSLoggerFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package wacky.storagesign.Logging; - -import ch.qos.logback.classic.Level; -import org.bukkit.util.StringUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Objects; - -public class SSLoggerFactory { - private static String _LOGGERNAME; - - public SSLoggerFactory(String level){ - - if(Objects.isNull(_LOGGERNAME)){ - _LOGGERNAME = "SSLoggerFactory" + level; - Logger log = LoggerFactory.getLogger(_LOGGERNAME); - - } - - } - - public Logger getLogger(){ - return LoggerFactory.getLogger(SSLoggerFactory.class + _LOGGERNAME); - } -} diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index d44de46..6995621 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -3,9 +3,8 @@ import org.bukkit.Material; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; -import org.slf4j.Logger; import wacky.storagesign.Exception.PotionException; -import wacky.storagesign.Logging.SSLoggerFactory; +import wacky.storagesign.Logging.SSLogger; import java.util.Arrays; @@ -32,7 +31,7 @@ public class PotionInfo { protected Material mat; protected PotionType pot; protected short damage = 0; - protected Logger logger; + protected SSLogger logger; // 旧メソッド public PotionInfo(Material mat, String[] str){ @@ -100,8 +99,7 @@ public PotionInfo(Material mat, String[] str){ } public PotionInfo(Material material, String type, String effName, String enhance) { - SSLoggerFactory factory = new SSLoggerFactory(""); - logger = factory.getLogger(); + logger = new SSLogger(""); logger.debug("PotionItnfoConstructor:Start"); this.mat = material; diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 538cc56..ecd3dcd 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -48,14 +48,12 @@ import org.bukkit.inventory.meta.*; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; -import org.slf4j.Logger; -import wacky.storagesign.Logging.SSLoggerFactory; +import wacky.storagesign.Logging.SSLogger; public class StorageSignCore extends JavaPlugin implements Listener{ FileConfiguration config; - public Logger logger; - public SSLoggerFactory logFactory; + public SSLogger logger; static BannerMeta ominousBannerMeta; @Override @@ -66,8 +64,14 @@ public void onEnable() { this.saveConfig(); // ログ取得 - logFactory = new SSLoggerFactory(config.getString("log-level")); - logger = logFactory.getLogger(); + logger = new SSLogger(config.getString("log-level")); +// +// logger.fatal("serverLog"); +// logger.error("errorLog"); +// logger.warn("warnLog"); +// logger.info("infoLog"); +// logger.debug("debugLog"); +// logger.trace("traceLog"); //鯖別レシピが実装されたら Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN,Material.CHERRY_SIGN,Material.BAMBOO_SIGN}; From 9a1c9abf2dea355fa129ea788ed67c51030072c0 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 5 Apr 2024 12:21:29 +0900 Subject: [PATCH 19/82] =?UTF-8?q?1.20.4=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=83=88=20=E3=83=AD=E3=82=B0=E8=A8=AD?= =?UTF-8?q?=E8=A8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/logback.xml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/main/resources/logback.xml diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml deleted file mode 100644 index 5f59556..0000000 --- a/src/main/resources/logback.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - %d{yyyy/MM/dd HH:mm:ss} %-5level [%thread] - %msg%n - - - - - - - - - - - \ No newline at end of file From b32ef580d812e6065f30fe8453eef8a9b5b7d2dc Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sun, 7 Apr 2024 19:37:59 +0900 Subject: [PATCH 20/82] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=AF?= =?UTF-8?q?=E3=83=AA=E3=83=BC=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ■CheckStyle違反修正 ・IF文の中括弧を追加(前回分漏れ対応) ・インデントを修正 ■フィールド変数使用箇所をthisキーワードで明示的に ■Javadocコメント追加(仕様が分かる範囲のみ) --- .../java/wacky/storagesign/StorageSign.java | 1290 +++++++++-------- 1 file changed, 670 insertions(+), 620 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index b797d0f..96082ba 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -17,720 +17,770 @@ import org.bukkit.util.NumberConversions; /** - * + * StrageSignの実体クラスです. * */ public class StorageSign { - /** */ - protected Material smat; - /** */ - protected Material mat; - /** */ - protected short damage; - /** */ - protected Enchantment ench; - /** */ - protected PotionType pot; - /** */ - protected int amount; - /** */ - protected int stack; - /** */ - protected boolean isEmpty; - - /** - * - * */ - public StorageSign(ItemStack item) { - //StorageSignだと確認してから使っちくりー - String[] str = item.getItemMeta().getLore().get(0).split(" "); - - if (str[0].matches("Empty")) { - isEmpty = true; - - } else { - mat = getMaterial(str[0].split(":")[0]); - - if (mat == Material.ENCHANTED_BOOK) { - EnchantInfo ei = new EnchantInfo(mat, str[0].split(":")); - damage = ei.getDamage(); - ench = ei.getEnchantType(); - - } else if (mat == Material.POTION - || mat == Material.SPLASH_POTION - || mat == Material.LINGERING_POTION) { - // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); - String[] potionStr = str[0].split(":"); - PotionInfo pi = new PotionInfo(mat, potionStr[0], potionStr[1], potionStr[2]); - mat = pi.getMaterial(); - damage = pi.getDamage(); - pot = pi.getPotionType(); - - } else if (str[0].contains(":")) { - damage = NumberConversions.toShort(str[0].split(":")[1]); - - } else if (mat == Material.STONE_SLAB) { - //1.13の滑らかハーフと1.14の石ハーフ区別 - mat = Material.SMOOTH_STONE_SLAB; - - } - amount = NumberConversions.toInt(str[1]); - } - - smat = item.getType(); - stack = item.getAmount(); + /** */ + protected Material smat; + /** */ + protected Material mat; + /** */ + protected short damage; + /** */ + protected Enchantment ench; + /** */ + protected PotionType pot; + /** */ + protected int amount; + /** */ + protected int stack; + /** */ + protected boolean isEmpty; + + //StorageSignだと確認してから使っちくりー + /** + * + * */ + public StorageSign(ItemStack item) { + String[] str = item.getItemMeta().getLore().get(0).split(" "); + + if (str[0].matches("Empty")) { + this.isEmpty = true; + + } else { + this.mat = getMaterial(str[0].split(":")[0]); + + if (this.mat == Material.ENCHANTED_BOOK) { + EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":")); + this.damage = ei.getDamage(); + this.ench = ei.getEnchantType(); + + } else if (this.mat == Material.POTION + || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { + // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); + String[] potionStr = str[0].split(":"); + PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2]); + this.mat = pi.getMaterial(); + this.damage = pi.getDamage(); + this.pot = pi.getPotionType(); + + } else if (str[0].contains(":")) { + this.damage = NumberConversions.toShort(str[0].split(":")[1]); + + } else if (this.mat == Material.STONE_SLAB) { + //1.13の滑らかハーフと1.14の石ハーフ区別 + this.mat = Material.SMOOTH_STONE_SLAB; + + } + this.amount = NumberConversions.toInt(str[1]); } - //Sto(ry - /* public StorageSign(Sign sign) { - this(sign,Material.OAK_SIGN); - }*/ - - /** - * - * */ - public StorageSign(Sign sign, Material signmat) { - //上と統合したい - String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); - mat = getMaterial(line2[0]); - isEmpty = (mat == null || mat == Material.AIR); - - if (mat == Material.ENCHANTED_BOOK) { - EnchantInfo ei = new EnchantInfo(mat, line2); - damage = ei.getDamage(); - ench = ei.getEnchantType(); - - } else if (mat == Material.POTION - || mat == Material.SPLASH_POTION - || mat == Material.LINGERING_POTION) { - // PotionInfo pi = new PotionInfo(mat, line2); - PotionInfo pi = new PotionInfo(mat, line2[0], line2[1], line2[2]); - mat = pi.getMaterial(); - damage = pi.getDamage(); - pot = pi.getPotionType(); - - } else if (line2.length == 2) { - damage = NumberConversions.toShort(line2[1]); - - } else if (mat == Material.STONE_SLAB) { - //1.13の滑らかハーフと1.14の石ハーフ区別 - mat = Material.SMOOTH_STONE_SLAB; - - } - - amount = NumberConversions.toInt(sign.getSide(Side.FRONT).getLine(2)); - isEmpty = amount == 0; - stack = 1; - - //壁掛け看板のチェック - if (signmat == Material.OAK_WALL_SIGN) { - smat = Material.OAK_SIGN; - - } else if (signmat == Material.BIRCH_WALL_SIGN) { - smat = Material.BIRCH_SIGN; - - } else if (signmat == Material.SPRUCE_WALL_SIGN) { - smat = Material.SPRUCE_SIGN; - - } else if (signmat == Material.JUNGLE_WALL_SIGN) { - smat = Material.JUNGLE_SIGN; - - } else if (signmat == Material.ACACIA_WALL_SIGN) { - smat = Material.ACACIA_SIGN; - - } else if (signmat == Material.DARK_OAK_WALL_SIGN) { - smat = Material.DARK_OAK_SIGN; - - } else if (signmat == Material.CRIMSON_WALL_SIGN) { - smat = Material.CRIMSON_SIGN; - - } else if (signmat == Material.WARPED_WALL_SIGN) { - smat = Material.WARPED_SIGN; - - } else if (signmat == Material.MANGROVE_WALL_SIGN) { - smat = Material.MANGROVE_SIGN; - - } else if (signmat == Material.CHERRY_WALL_SIGN) { - smat = Material.CHERRY_SIGN; - - } else if (signmat == Material.BAMBOO_WALL_SIGN) { - smat = Material.BAMBOO_SIGN; - - } else { - smat = signmat; - - } + this.smat = item.getType(); + this.stack = item.getAmount(); + } + + //Sto(ry + /* public StorageSign(Sign sign) { + this(sign,Material.OAK_SIGN); + }*/ + + /** + * + * */ + public StorageSign(Sign sign, Material signmat) { + //上と統合したい + String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); + this.mat = getMaterial(line2[0]); + this.isEmpty = (this.mat == null + || this.mat == Material.AIR); + + if (this.mat == Material.ENCHANTED_BOOK) { + EnchantInfo ei = new EnchantInfo(this.mat, line2); + this.damage = ei.getDamage(); + this.ench = ei.getEnchantType(); + + } else if (this.mat == Material.POTION + || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { + // PotionInfo pi = new PotionInfo(mat, line2); + PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2]); + this.mat = pi.getMaterial(); + this.damage = pi.getDamage(); + this.pot = pi.getPotionType(); + + } else if (line2.length == 2) { + this.damage = NumberConversions.toShort(line2[1]); + + } else if (this.mat == Material.STONE_SLAB) { + //1.13の滑らかハーフと1.14の石ハーフ区別 + this.mat = Material.SMOOTH_STONE_SLAB; } - //変換 - /** - * - * */ - protected Material getMaterial(String str) { - if (str.matches("")) { - return Material.AIR; - } - -// if (str.matches("EmptySign")) { -// return Material.END_PORTAL; -// } - - else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { - damage = 1; - return Material.OAK_SIGN; - - } else if (str.matches("SpruceStorageSign")) { - damage = 1; - return Material.SPRUCE_SIGN; - - } else if (str.matches("BirchStorageSign")) { - damage = 1; - return Material.BIRCH_SIGN; - - } else if (str.matches("JungleStorageSign")) { - damage = 1; - return Material.JUNGLE_SIGN; - - } else if (str.matches("AcaciaStorageSign")) { - damage = 1; - return Material.ACACIA_SIGN; - - } else if (str.matches("DarkOakStorageSign")) { - damage = 1; - return Material.DARK_OAK_SIGN; - - } else if (str.matches("CrimsonStorageSign")) { - damage = 1; - return Material.CRIMSON_SIGN; - - } else if (str.matches("WarpedStorageSign")) { - damage = 1; - return Material.WARPED_SIGN; - - } else if (str.matches("MangroveStorageSign")) { - damage = 1; - return Material.MANGROVE_SIGN; - - } else if (str.matches("CherryStorageSign")) { - damage = 1; - return Material.CHERRY_SIGN; - - } else if (str.matches("BambooStorageSign")) { - damage = 1; - return Material.BAMBOO_SIGN; - - } - - if (str.matches("HorseEgg")) { - damage = 1; - return Material.END_PORTAL; - //ガスト卵でよくね? - } - - //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; - //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; - //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; - //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; - //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; - - //1.13→1.14用 - if (str.startsWith("SIGN")) { - return Material.OAK_SIGN; + this.amount = NumberConversions.toInt(sign.getSide(Side.FRONT).getLine(2)); + this.isEmpty = this.amount == 0; + this.stack = 1; - } + //壁掛け看板のチェック + if (signmat == Material.OAK_WALL_SIGN) { + this.smat = Material.OAK_SIGN; - if (str.startsWith("ROSE_RED")) { - return Material.RED_DYE; + } else if (signmat == Material.BIRCH_WALL_SIGN) { + this.smat = Material.BIRCH_SIGN; - } + } else if (signmat == Material.SPRUCE_WALL_SIGN) { + this.smat = Material.SPRUCE_SIGN; - if (str.startsWith("DANDELION_YELLOW")) { - return Material.YELLOW_DYE; + } else if (signmat == Material.JUNGLE_WALL_SIGN) { + this.smat = Material.JUNGLE_SIGN; - } + } else if (signmat == Material.ACACIA_WALL_SIGN) { + this.smat = Material.ACACIA_SIGN; - if (str.startsWith("CACTUS_GREEN")) { - return Material.GREEN_DYE; + } else if (signmat == Material.DARK_OAK_WALL_SIGN) { + this.smat = Material.DARK_OAK_SIGN; - } + } else if (signmat == Material.CRIMSON_WALL_SIGN) { + this.smat = Material.CRIMSON_SIGN; - //省略用 - if (str.startsWith("ENCHBOOK")) { - return Material.ENCHANTED_BOOK; + } else if (signmat == Material.WARPED_WALL_SIGN) { + this.smat = Material.WARPED_SIGN; - } + } else if (signmat == Material.MANGROVE_WALL_SIGN) { + this.smat = Material.MANGROVE_SIGN; - if (str.startsWith("SPOTION")) { - return Material.SPLASH_POTION; + } else if (signmat == Material.CHERRY_WALL_SIGN) { + this.smat = Material.CHERRY_SIGN; - } - if (str.startsWith("LPOTION")) { - return Material.LINGERING_POTION; + } else if (signmat == Material.BAMBOO_WALL_SIGN) { + this.smat = Material.BAMBOO_SIGN; - } - - Material mat = Material.matchMaterial(str); - - if (mat == null) { - //後ろ切れる程度なら対応可 - for (Material m : Material.values()) { - if (m.toString().startsWith(str)) - return m; - } - - } - - //nullなら空. - return mat; + } else { + this.smat = signmat; } - /** - * - * */ - protected String getShortName() { - //2行目の記載内容 - if (mat == null || mat == Material.AIR) { - return ""; - - } else if (mat == Material.END_PORTAL) { - if (damage == 0) { - return "OakStorageSign"; - } - - if (damage == 1) { - return "HorseEgg"; - } - - } else if (mat == Material.OAK_SIGN && damage == 1) { - return "OakStorageSign"; - - } else if (mat == Material.SPRUCE_SIGN && damage == 1) { - return "SpruceStorageSign"; - - } else if (mat == Material.BIRCH_SIGN && damage == 1) { - return "BirchStorageSign"; - - } else if (mat == Material.JUNGLE_SIGN && damage == 1) { - return "JungleStorageSign"; - - } else if (mat == Material.ACACIA_SIGN && damage == 1) { - return "AcaciaStorageSign"; - - } else if (mat == Material.DARK_OAK_SIGN && damage == 1) { - return "DarkOakStorageSign"; - - } else if (mat == Material.CRIMSON_SIGN && damage == 1) { - return "CrimsonStorageSign"; - - } else if (mat == Material.WARPED_SIGN && damage == 1) { - return "WarpedStorageSign"; - - } else if (mat == Material.MANGROVE_SIGN && damage == 1) { - return "MangroveStorageSign"; - - } else if (mat == Material.CHERRY_SIGN && damage == 1) { - return "CherryStorageSign"; - - } else if (mat == Material.BAMBOO_SIGN && damage == 1) { - return "BambooStorageSign"; + } + + //変換 + /** + * 指定された文字列でMaterialに変換します. + * + * @param str + * + * @return Material + * */ + protected Material getMaterial(String str) { + if (str.matches("")) { + return Material.AIR; + + // if (str.matches("EmptySign")) { + // return Material.END_PORTAL; + // } + + } else if (str.matches("EmptySign") + || str.matches("OakStorageSign")) { + this.damage = 1; + return Material.OAK_SIGN; + + } else if (str.matches("SpruceStorageSign")) { + this.damage = 1; + return Material.SPRUCE_SIGN; + + } else if (str.matches("BirchStorageSign")) { + this.damage = 1; + return Material.BIRCH_SIGN; + + } else if (str.matches("JungleStorageSign")) { + this.damage = 1; + return Material.JUNGLE_SIGN; + + } else if (str.matches("AcaciaStorageSign")) { + this.damage = 1; + return Material.ACACIA_SIGN; + + } else if (str.matches("DarkOakStorageSign")) { + this.damage = 1; + return Material.DARK_OAK_SIGN; + + } else if (str.matches("CrimsonStorageSign")) { + this.damage = 1; + return Material.CRIMSON_SIGN; + + } else if (str.matches("WarpedStorageSign")) { + this.damage = 1; + return Material.WARPED_SIGN; + + } else if (str.matches("MangroveStorageSign")) { + this.damage = 1; + return Material.MANGROVE_SIGN; + + } else if (str.matches("CherryStorageSign")) { + this.damage = 1; + return Material.CHERRY_SIGN; + + } else if (str.matches("BambooStorageSign")) { + this.damage = 1; + return Material.BAMBOO_SIGN; - } - - //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; - //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; - //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; - - else if (mat == Material.ENCHANTED_BOOK) { - return "ENCHBOOK:" + EnchantInfo.getShortType(ench) + ":" + damage; - - } - - else if (mat == Material.POTION - || mat == Material.SPLASH_POTION - || mat == Material.LINGERING_POTION) { - return PotionInfo.getSignData(mat, pot, damage); - - } - - //リミットブレイク - int limit = 99; - - if (damage != 0) { - limit -= String.valueOf(damage).length() + 1; - } - - if (mat.toString().length() > limit) { - if (damage != 0) { - return mat.toString().substring(0, limit) + ":" + damage; + } - } + if (str.matches("HorseEgg")) { + this.damage = 1; + return Material.END_PORTAL; + //ガスト卵でよくね? + } - return mat.toString().substring(0, limit); + //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; + //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; + //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; + //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; + //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; - } else { - if (damage != 0) { - return mat.toString() + ":" + damage; + //1.13→1.14用 + if (str.startsWith("SIGN")) { + return Material.OAK_SIGN; + } - } - return mat.toString(); + if (str.startsWith("ROSE_RED")) { + return Material.RED_DYE; + } - } + if (str.startsWith("DANDELION_YELLOW")) { + return Material.YELLOW_DYE; } - /** - * - * */ - public ItemStack getStorageSign() { - ItemStack item = new ItemStack(smat, stack); - ItemMeta meta = item.getItemMeta(); - meta.setDisplayName("StorageSign"); - List list = new ArrayList<>(); + if (str.startsWith("CACTUS_GREEN")) { + return Material.GREEN_DYE; + } - //IDとMaterial名が混ざってたり、エンチャ本対応したり - if (isEmpty) { - list.add("Empty"); + //省略用 + if (str.startsWith("ENCHBOOK")) { + return Material.ENCHANTED_BOOK; + } - } else if (mat == Material.ENCHANTED_BOOK) { - list.add(mat.toString() + ":" + ench.getKey().getKey() + ":" + damage + " " + amount); + if (str.startsWith("SPOTION")) { + return Material.SPLASH_POTION; + } - } else if (mat == Material.POTION - || mat == Material.SPLASH_POTION - || mat == Material.LINGERING_POTION) { - list.add(PotionInfo.getTagData(mat, pot, damage, amount)); + if (str.startsWith("LPOTION")) { + return Material.LINGERING_POTION; + } - } else { - list.add(getShortName() + " " + amount); + Material mat = Material.matchMaterial(str); + if (mat == null) { + //後ろ切れる程度なら対応可 + for (Material m : Material.values()) { + if (m.toString().startsWith(str)) { + return m; } + } + } - meta.setLore(list); - item.setItemMeta(meta); - - return item; + //nullなら空. + return mat; + + } + + /** + * StorageSignが保持しているMaterialを取得します. + * + * @return Material + * */ + public Material getMaterial() { + return this.mat; + } + + /** + * Materialの短い名前を文字列として取得します. + * + * @return Materialの短い名前 + * */ + protected String getShortName() { + //2行目の記載内容 + if (this.mat == null + || this.mat == Material.AIR) { + return ""; + + } else if (this.mat == Material.END_PORTAL) { + if (this.damage == 0) { + return "OakStorageSign"; + } + + if (this.damage == 1) { + return "HorseEgg"; + } + + } else if (this.mat == Material.OAK_SIGN + && this.damage == 1) { + return "OakStorageSign"; + + } else if (this.mat == Material.SPRUCE_SIGN + && this.damage == 1) { + return "SpruceStorageSign"; + + } else if (this.mat == Material.BIRCH_SIGN + && this.damage == 1) { + return "BirchStorageSign"; + + } else if (this.mat == Material.JUNGLE_SIGN + && this.damage == 1) { + return "JungleStorageSign"; + + } else if (this.mat == Material.ACACIA_SIGN + && this.damage == 1) { + return "AcaciaStorageSign"; + + } else if (this.mat == Material.DARK_OAK_SIGN + && this.damage == 1) { + return "DarkOakStorageSign"; + + } else if (this.mat == Material.CRIMSON_SIGN + && this.damage == 1) { + return "CrimsonStorageSign"; + + } else if (this.mat == Material.WARPED_SIGN + && this.damage == 1) { + return "WarpedStorageSign"; + + } else if (this.mat == Material.MANGROVE_SIGN + && this.damage == 1) { + return "MangroveStorageSign"; + + } else if (this.mat == Material.CHERRY_SIGN + && this.damage == 1) { + return "CherryStorageSign"; + + } else if (this.mat == Material.BAMBOO_SIGN + && this.damage == 1) { + return "BambooStorageSign"; + + //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; + //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; + //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; + //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; + //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; + + } else if (this.mat == Material.ENCHANTED_BOOK) { + return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; + + } else if (this.mat == Material.POTION + || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { + return PotionInfo.getSignData(this.mat, pot, this.damage); } - /** - * - * */ - public static ItemStack emptySign() { - return emptySign(Material.OAK_SIGN); + //リミットブレイク + int limit = 99; + if (this.damage != 0) { + limit -= String.valueOf(this.damage).length() + 1; } - /** - * - * */ - public static ItemStack emptySign(Material smat) { - ItemStack emptySign = new ItemStack(smat); - ItemMeta meta = emptySign.getItemMeta(); - List list = new ArrayList<>(); + if (this.mat.toString().length() > limit) { + if (this.damage != 0) { + return this.mat.toString().substring(0, limit) + ":" + this.damage; + } - meta.setDisplayName("StorageSign"); - list.add("Empty"); - meta.setLore(list); - emptySign.setItemMeta(meta); + return this.mat.toString().substring(0, limit); - return emptySign; - } + } else { + if (this.damage != 0) { + return this.mat.toString() + ":" + this.damage; + } - /** - * - * */ - private ItemStack emptyHorseEgg() { - ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); - ItemMeta meta = emptyHorseEgg.getItemMeta(); - List list = new ArrayList<>(); - - meta.setDisplayName("HorseEgg"); - list.add("Empty"); - meta.setLore(list); - emptyHorseEgg.setItemMeta(meta); - return emptyHorseEgg; + return this.mat.toString(); } + } + + /** + * 空のStorageSignを作成して、ItemStackとして取得します. + * + * @return ItemStack 空のStorageSign + * */ + public ItemStack getStorageSign() { + ItemStack item = new ItemStack(this.smat, this.stack); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("StorageSign"); + List list = new ArrayList<>(); + + //IDとMaterial名が混ざってたり、エンチャ本対応したり + if (this.isEmpty) { + list.add("Empty"); + + } else if (this.mat == Material.ENCHANTED_BOOK) { + list.add(this.mat.toString() + + ":" + this.ench.getKey().getKey() + + ":" + this.damage + + " " + this.amount); + + } else if (this.mat == Material.POTION + || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { + list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); + + } else { + list.add(getShortName() + " " + this.amount); - /** - * - * */ - public String getSigntext(int i) { - String[] sign = new String[4]; - sign[0] = "StorageSign"; - sign[1] = getShortName(); - sign[2] = String.valueOf(amount); - sign[3] = String.valueOf(amount / 3456) + "LC " + String.valueOf(amount % 3456 / 64) + "s " - + String.valueOf(amount % 64); - return sign[i]; } - /** - * - * */ - public ItemStack getContents() { - //中身取得、一部アイテム用の例外 - if (mat == null) { - return null; - - } + meta.setLore(list); + item.setItemMeta(meta); + + return item; + } + + /** + * 空のStorageSignを作成して、ItemStackとして取得します. + * + * @return ItemStack 空のStorageSign + * */ + public static ItemStack emptySign() { + return emptySign(Material.OAK_SIGN); + } + + /** + * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. + * + * @param smat Material + * + * @return ItemStack 空のStorageSign + * */ + public static ItemStack emptySign(Material smat) { + ItemStack emptySign = new ItemStack(smat); + ItemMeta meta = emptySign.getItemMeta(); + List list = new ArrayList<>(); + + meta.setDisplayName("StorageSign"); + list.add("Empty"); + meta.setLore(list); + emptySign.setItemMeta(meta); + + return emptySign; + } + + /** + * 空のHorseEggを作成して、ItemStackとして取得します. + * + * @return ItemStack 空のHoerseEgg + * */ + private ItemStack emptyHorseEgg() { + ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); + ItemMeta meta = emptyHorseEgg.getItemMeta(); + List list = new ArrayList<>(); + + meta.setDisplayName("HorseEgg"); + list.add("Empty"); + meta.setLore(list); + emptyHorseEgg.setItemMeta(meta); + + return emptyHorseEgg; + } + + /** + * StrageSignから、設置されている看板として表示される文字列を取得します. + * + * @param i 看板の何行目の文字列を取得したいか指定します
+ * (ex.)1行目⇒0 + * + * @return 取得した文字列 + * */ + public String getSigntext(int i) { + String[] sign = new String[4]; + + sign[0] = "StorageSign"; + sign[1] = getShortName(); + sign[2] = String.valueOf(this.amount); + sign[3] = String.valueOf(this.amount / 3456) + "LC " + + String.valueOf(this.amount % 3456 / 64) + "s " + + String.valueOf(this.amount % 64); + + return sign[i]; + } + + /** + * StrageSignの内容を取得します. + * + * @return ItemStack + * */ + public ItemStack getContents() { + //中身取得、一部アイテム用の例外 + if (this.mat == null) { + return null; + } - if (mat == Material.END_PORTAL) { - if (damage == 0) { - return emptySign(); + if (this.mat == Material.END_PORTAL) { + if (this.damage == 0) { + return emptySign(); + } - } + if (this.damage == 1) { + return emptyHorseEgg(); + } - if (damage == 1) { - return emptyHorseEgg(); + } - } + if (this.mat == Material.STONE_SLAB) { + //ダメージ値0にする + return new ItemStack(this.mat, 1); - } + } else if (this.mat == Material.OAK_SIGN + || this.mat == Material.SPRUCE_SIGN + || this.mat == Material.BIRCH_SIGN + || this.mat == Material.JUNGLE_SIGN + || this.mat == Material.ACACIA_SIGN + || this.mat == Material.DARK_OAK_SIGN + || this.mat == Material.CRIMSON_SIGN + || this.mat == Material.WARPED_SIGN + || this.mat == Material.MANGROVE_SIGN + || this.mat == Material.CHERRY_SIGN + || this.mat == Material.BAMBOO_SIGN) { - if (mat == Material.STONE_SLAB) { - //ダメージ値0にする - return new ItemStack(mat, 1); - - } else if (mat == Material.OAK_SIGN - || mat == Material.SPRUCE_SIGN - || mat == Material.BIRCH_SIGN - || mat == Material.JUNGLE_SIGN - || mat == Material.ACACIA_SIGN - || mat == Material.DARK_OAK_SIGN - || mat == Material.CRIMSON_SIGN - || mat == Material.WARPED_SIGN - || mat == Material.MANGROVE_SIGN - || mat == Material.CHERRY_SIGN - || mat == Material.BAMBOO_SIGN) { - - if (damage == 0) { - return new ItemStack(mat, 1); - - } else { - return emptySign(mat); - - } - - } else if (mat == Material.ENCHANTED_BOOK) { - ItemStack item = new ItemStack(mat, 1); - EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); - enchantMeta.addStoredEnchant(ench, damage, true); - item.setItemMeta(enchantMeta); - return item; - - } else if (mat == Material.POTION - || mat == Material.SPLASH_POTION - || mat == Material.LINGERING_POTION) { - - ItemStack item = new ItemStack(mat, 1); - PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); - // potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); - potionMeta.setBasePotionType(pot); - item.setItemMeta(potionMeta); - return item; - - } else if (mat == Material.FIREWORK_ROCKET) { - ItemStack item = new ItemStack(mat, 1); - FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); - fireworkMeta.setPower(damage); - item.setItemMeta(fireworkMeta); - return item; - - } else if (mat == Material.WHITE_BANNER && damage == 8) { - ItemStack item = new ItemStack(mat, 1); - //どこかからコピー - item.setItemMeta(StorageSignCore.ominousBannerMeta); - return item; + if (this.damage == 0) { + return new ItemStack(this.mat, 1); - } + } else { + return emptySign(this.mat); + } - if (damage == 0) { - //大半はダメージなくなった - return new ItemStack(mat, 1); - } + } else if (this.mat == Material.ENCHANTED_BOOK) { + ItemStack item = new ItemStack(this.mat, 1); - var itemStack = new ItemStack(mat, 1); - var meta = itemStack.getItemMeta(); + EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); + enchantMeta.addStoredEnchant(this.ench, this.damage, true); + item.setItemMeta(enchantMeta); - if (meta instanceof Damageable dam) { - dam.setDamage(damage); - itemStack.setItemMeta(meta); - } + return item; - //ツール系のみダメージあり - return itemStack; + } else if (this.mat == Material.POTION + || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { - } - - //回収可能か判定、エンチャ本は本自身の合成回数を問わない - /** - * - * */ - public boolean isSimilar(ItemStack item) { - if (item == null) { - return false; + ItemStack item = new ItemStack(this.mat, 1); + PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); + // potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); - } + potionMeta.setBasePotionType(this.pot); + item.setItemMeta(potionMeta); - if (mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { + return item; - EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); - if (enchantMeta.getStoredEnchants().size() == 1) { - Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; + } else if (this.mat == Material.FIREWORK_ROCKET) { + ItemStack item = new ItemStack(this.mat, 1); + FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); - if (itemEnch == ench && enchantMeta.getStoredEnchantLevel(itemEnch) == damage) { - return true; + fireworkMeta.setPower(this.damage); + item.setItemMeta(fireworkMeta); - } - } + return item; - return false; + } else if (this.mat == Material.WHITE_BANNER + && this.damage == 8) { - } else if (isShulker(mat)) { - //後回し + ItemStack item = new ItemStack(this.mat, 1); + //どこかからコピー + item.setItemMeta(StorageSignCore.ominousBannerMeta); - } + return item; - return getContents().isSimilar(item); } - /** - * - * */ - public Material getMaterial() { - return mat; + if (this.damage == 0) { + //大半はダメージなくなった + return new ItemStack(this.mat, 1); } - /** - * - * */ - public void setMaterial(Material mat) { - this.mat = mat; - } + var itemStack = new ItemStack(this.mat, 1); + var meta = itemStack.getItemMeta(); - /** - * - * */ - public short getDamage() { - return damage; + if (meta instanceof Damageable dam) { + dam.setDamage(this.damage); + itemStack.setItemMeta(meta); } - /** - * - * */ - public void setDamage(short damage) { - this.damage = damage; - } + //ツール系のみダメージあり + return itemStack; + } - /** - * - * */ - public int getAmount() { - return amount; - } + //回収可能か判定、エンチャ本は本自身の合成回数を問わない + /** + * 回収可能か判定、エンチャ本は本自身の合成回数を問わない. + * + * @return true:回収できるよ/false:回収できないよ + * */ + public boolean isSimilar(ItemStack item) { + if (item == null) { + return false; - /** - * - * */ - public void setAmount(int amount) { - this.amount = amount; - isEmpty = amount == 0; } - /** - * - * */ - public void addAmount(int amount) { - if (this.amount < -amount) { - this.amount = 0; + if (this.mat == Material.ENCHANTED_BOOK + && item.getType() == Material.ENCHANTED_BOOK) { - } else { - this.amount += amount; - } + EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); - if (this.amount < 0) { - this.amount = Integer.MAX_VALUE; - } + if (enchantMeta.getStoredEnchants().size() == 1) { + Enchantment itemEnch + = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - isEmpty = this.amount == 0; - } + if (itemEnch == this.ench + && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { + return true; - /** - * - * */ - public int getStackSize() { - return stack; - } + } + } + return false; - /** - * - * */ - public boolean isEmpty() { - return isEmpty; - } + } else if (isShulker(this.mat)) { + //後回し - /** - * - * */ - public void setEnchant(Enchantment ench) { - this.ench = ench; } - /** - * - * */ - public Enchantment getEnchant() { - return ench; - } + return getContents().isSimilar(item); + } + + /** + * フィールド変数:matのsetter. + * */ + public void setMaterial(Material mat) { + this.mat = mat; + } + + /** + * フィールド変数:damageのgetter. + * */ + public short getDamage() { + return this.damage; + } + + /** + * フィールド変数:damageのsetter. + * */ + public void setDamage(short damage) { + this.damage = damage; + } + + /** + * フィールド変数:amountのgetter. + * */ + public int getAmount() { + return this.amount; + } + + /** + * フィールド変数:amountのsetter. + * */ + public void setAmount(int amount) { + this.amount = amount; + this.isEmpty = amount == 0; + } + + /** + * フィールド変数:amountへ加算をします. + * + * @param amount 加算対象の値 + * */ + public void addAmount(int amount) { + if (this.amount < -amount) { + this.amount = 0; + + } else { + this.amount += amount; - /** - * - * */ - public void setPotion(PotionType pot) { - this.pot = pot; } - /** - * - * */ - public PotionType getPotion() { - return pot; - } + if (this.amount < 0) { + this.amount = Integer.MAX_VALUE; - /** - * - * */ - public Material getSmat() { - return smat; } - /** - * - * */ - private boolean isShulker(Material mat) { - switch (mat) { - case SHULKER_BOX: - case WHITE_SHULKER_BOX: - case ORANGE_SHULKER_BOX: - case MAGENTA_SHULKER_BOX: - case LIGHT_BLUE_SHULKER_BOX: - case YELLOW_SHULKER_BOX: - case LIME_SHULKER_BOX: - case PINK_SHULKER_BOX: - case GRAY_SHULKER_BOX: - case LIGHT_GRAY_SHULKER_BOX: - case CYAN_SHULKER_BOX: - case PURPLE_SHULKER_BOX: - case BLUE_SHULKER_BOX: - case BROWN_SHULKER_BOX: - case GREEN_SHULKER_BOX: - case RED_SHULKER_BOX: - case BLACK_SHULKER_BOX: - return true; - - default: - } - return false; - } + this.isEmpty = this.amount == 0; + } + + /** + * StorageSignが保持しているStackSizeを取得します. + * + * @return StackSize + * */ + public int getStackSize() { + return this.stack; + } + + /** + * StrageSignが保持している内容か空かを取得します. + * + * @return true:空っぽ/false:入ってます + * */ + public boolean isEmpty() { + return this.isEmpty; + } + + /** + * フィールド変数:enchのsetter. + * */ + public void setEnchant(Enchantment ench) { + this.ench = ench; + } + + /** + * フィールド変数:enchのgetter. + * */ + public Enchantment getEnchant() { + return this.ench; + } + + /** + * フィールド変数:potのsetter. + * */ + public void setPotion(PotionType pot) { + this.pot = pot; + } + + /** + * フィールド変数:potのgetter. + * */ + public PotionType getPotion() { + return this.pot; + } + + /** + * フィールド変数:smatのgetter. + * */ + public Material getSmat() { + return this.smat; + } + + /** + * マテリアルがシュルカーボックスかを検査します. + * + * @return true:シュルカーボックスにだよ/false:シュルカーボックスじゃないよ + * */ + private boolean isShulker(Material mat) { + switch (mat) { + case SHULKER_BOX: + case WHITE_SHULKER_BOX: + case ORANGE_SHULKER_BOX: + case MAGENTA_SHULKER_BOX: + case LIGHT_BLUE_SHULKER_BOX: + case YELLOW_SHULKER_BOX: + case LIME_SHULKER_BOX: + case PINK_SHULKER_BOX: + case GRAY_SHULKER_BOX: + case LIGHT_GRAY_SHULKER_BOX: + case CYAN_SHULKER_BOX: + case PURPLE_SHULKER_BOX: + case BLUE_SHULKER_BOX: + case BROWN_SHULKER_BOX: + case GREEN_SHULKER_BOX: + case RED_SHULKER_BOX: + case BLACK_SHULKER_BOX: + return true; + + default: + } + return false; + } } From 6cb2715cb55fe4dd64a162c470c63b25998910b9 Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sun, 7 Apr 2024 19:49:37 +0900 Subject: [PATCH 21/82] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=AF?= =?UTF-8?q?=E3=83=AA=E3=83=BC=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ■前回プルリクエスト指摘点の取り込み --- .../java/wacky/storagesign/StorageSign.java | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 96082ba..7eec281 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -163,7 +163,6 @@ public StorageSign(Sign sign, Material signmat) { } - //変換 /** * 指定された文字列でMaterialに変換します. * @@ -172,12 +171,16 @@ public StorageSign(Sign sign, Material signmat) { * @return Material * */ protected Material getMaterial(String str) { - if (str.matches("")) { - return Material.AIR; - // if (str.matches("EmptySign")) { // return Material.END_PORTAL; // } + //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; + //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; + //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; + //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; + //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; + if (str.matches("")) { + return Material.AIR; } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { @@ -223,47 +226,32 @@ protected Material getMaterial(String str) { } else if (str.matches("BambooStorageSign")) { this.damage = 1; return Material.BAMBOO_SIGN; - } - if (str.matches("HorseEgg")) { this.damage = 1; return Material.END_PORTAL; //ガスト卵でよくね? } - - //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; - //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; - //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; - //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; - //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; - //1.13→1.14用 if (str.startsWith("SIGN")) { return Material.OAK_SIGN; } - if (str.startsWith("ROSE_RED")) { return Material.RED_DYE; } - if (str.startsWith("DANDELION_YELLOW")) { return Material.YELLOW_DYE; } - if (str.startsWith("CACTUS_GREEN")) { return Material.GREEN_DYE; } - //省略用 if (str.startsWith("ENCHBOOK")) { return Material.ENCHANTED_BOOK; } - if (str.startsWith("SPOTION")) { return Material.SPLASH_POTION; } - if (str.startsWith("LPOTION")) { return Material.LINGERING_POTION; } @@ -371,10 +359,8 @@ protected String getShortName() { || this.mat == Material.LINGERING_POTION) { return PotionInfo.getSignData(this.mat, pot, this.damage); } - //リミットブレイク int limit = 99; - if (this.damage != 0) { limit -= String.valueOf(this.damage).length() + 1; } @@ -594,7 +580,6 @@ public ItemStack getContents() { var itemStack = new ItemStack(this.mat, 1); var meta = itemStack.getItemMeta(); - if (meta instanceof Damageable dam) { dam.setDamage(this.damage); itemStack.setItemMeta(meta); @@ -604,7 +589,6 @@ public ItemStack getContents() { return itemStack; } - //回収可能か判定、エンチャ本は本自身の合成回数を問わない /** * 回収可能か判定、エンチャ本は本自身の合成回数を問わない. * From 4481a6b3119a100344398d82d4007cc6f7b0cfe2 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 12 Apr 2024 13:22:08 +0900 Subject: [PATCH 22/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E5=9F=8B=E3=82=81=EF=BC=88=E9=80=94=E4=B8=AD=EF=BC=89?= =?UTF-8?q?=20=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=81=AEconfig?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E5=80=A4=E3=82=92INFO=E3=81=AB=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=20Logger=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../java/wacky/storagesign/EnchantInfo.java | 10 +- .../wacky/storagesign/Logging/SSLogger.java | 134 ------------ .../java/wacky/storagesign/PotionInfo.java | 10 +- .../wacky/storagesign/SignPhysicsEvent.java | 8 +- .../java/wacky/storagesign/StorageSign.java | 18 +- .../wacky/storagesign/StorageSignCore.java | 193 ++++++++++++++---- src/main/resources/config.yml | 2 +- 8 files changed, 192 insertions(+), 188 deletions(-) delete mode 100644 src/main/java/wacky/storagesign/Logging/SSLogger.java diff --git a/pom.xml b/pom.xml index 0611a71..032afe6 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,11 @@ log4j-api 2.23.1 + + com.github.teruteru128 + logger + 1.1.1 + UTF-8 diff --git a/src/main/java/wacky/storagesign/EnchantInfo.java b/src/main/java/wacky/storagesign/EnchantInfo.java index 61246b8..6800544 100644 --- a/src/main/java/wacky/storagesign/EnchantInfo.java +++ b/src/main/java/wacky/storagesign/EnchantInfo.java @@ -1,5 +1,6 @@ package wacky.storagesign; +import com.github.teruteru128.logger.Logger; import org.bukkit.Material; import org.bukkit.Registry; import org.bukkit.enchantments.Enchantment; @@ -10,11 +11,14 @@ public class EnchantInfo { protected Material mat; protected Enchantment ench; protected short damage = 0; + private Logger _logger; - public EnchantInfo(Material mat, String[] str){ + public EnchantInfo(Material mat, String[] str, Logger logger){ this.mat = mat; - ench = getEnch(str[1]); - damage = NumberConversions.toShort(str[2]); + this._logger = logger; + + ench = getEnch(str[1]); + damage = NumberConversions.toShort(str[2]); } private Enchantment getEnch(String substring) { diff --git a/src/main/java/wacky/storagesign/Logging/SSLogger.java b/src/main/java/wacky/storagesign/Logging/SSLogger.java deleted file mode 100644 index 7ebba01..0000000 --- a/src/main/java/wacky/storagesign/Logging/SSLogger.java +++ /dev/null @@ -1,134 +0,0 @@ -package wacky.storagesign.Logging; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.text.SimpleDateFormat; -import java.util.Objects; - - -public class SSLogger { - private static String _LOGLEVELSTR; - private static int _LOGLEVELWEIGHT; - - private static final String _LEVELFATAL = "SERVER"; - private static final String _LEVELWARN = "WARN"; - private static final String _LEVELERROR = "ERROR"; - private static final String _LEVELINFO = "INFO"; - private static final String _LEVELDEBUG = "DEBUG"; - private static final String _LEVELTRACE = "TRACE"; - private static final int _LEVELWEIGHTFATAL = 6; - private static final int _LEVELWEIGHTERROR = 5; - private static final int _LEVELWEIGHTWARN = 4; - private static final int _LEVELWEIGHTINFO = 3; - private static final int _LEVELWEIGHTDEBUG = 2; - private static final int _LEVELWEIGHTTRACE = 1; - - private static final String _LOG_FORMAT = "【StorageSign】 %s"; - private static final String _LOG_FORMAT_LEVELSET = "【StorageSign】 [%s] %s"; - private final Logger _logger; - private SimpleDateFormat _dateFormat; - - public SSLogger(String level){ - - // 初期化メソッド内で呼び出し想定。初回のみ、レベルセットを実施 - if(Objects.isNull(_LOGLEVELSTR)){ - if(level.equals(_LEVELFATAL)){ - _LOGLEVELSTR = _LEVELFATAL; - _LOGLEVELWEIGHT = _LEVELWEIGHTFATAL; - } else if(level.equals(_LEVELERROR)){ - _LOGLEVELSTR = _LEVELERROR; - _LOGLEVELWEIGHT = _LEVELWEIGHTERROR; - } else if(level.equals(_LEVELWARN)){ - _LOGLEVELSTR = _LEVELWARN; - _LOGLEVELWEIGHT = _LEVELWEIGHTWARN; - } else if(level.equals(_LEVELDEBUG)){ - _LOGLEVELSTR = _LEVELDEBUG; - _LOGLEVELWEIGHT = _LEVELWEIGHTDEBUG; - } else if(level.equals(_LEVELTRACE)){ - _LOGLEVELSTR = _LEVELTRACE; - _LOGLEVELWEIGHT = _LEVELWEIGHTTRACE; - } else{ - _LOGLEVELSTR = _LEVELINFO; - _LOGLEVELWEIGHT = _LEVELWEIGHTINFO; - } - } - _logger = LogManager.getLogger(SSLogger.class); - } - - public void fatal(String msg){ - if(_LEVELWEIGHTFATAL >= _LOGLEVELWEIGHT){ - _logger.fatal(_LOG_FORMAT.formatted( msg)); - } - } - - public void fatal(String msg, Exception e){ - if(_LEVELWEIGHTFATAL >= _LOGLEVELWEIGHT){ - _logger.fatal(_LOG_FORMAT.formatted( msg), e); - } - } - - public void error(String msg){ - if(_LEVELWEIGHTERROR >= _LOGLEVELWEIGHT){ - _logger.error(_LOG_FORMAT.formatted( msg)); - } - } - - public void error(String msg, Exception e){ - if(_LEVELWEIGHTERROR >= _LOGLEVELWEIGHT){ - _logger.error(_LOG_FORMAT.formatted( msg), e); - } - } - - public void warn(String msg){ - if(_LEVELWEIGHTWARN >= _LOGLEVELWEIGHT){ - _logger.warn(_LOG_FORMAT.formatted( msg)); - } - } - - public void warn(String msg, Exception e){ - if(_LEVELWEIGHTWARN >= _LOGLEVELWEIGHT){ - _logger.warn(_LOG_FORMAT.formatted( msg), e); - } - } - - public void info(String msg){ - if(_LEVELWEIGHTINFO >= _LOGLEVELWEIGHT){ - _logger.info(_LOG_FORMAT.formatted( msg)); - } - } - - public void info(String msg, Exception e){ - if(_LEVELWEIGHTINFO >= _LOGLEVELWEIGHT){ - _logger.info(_LOG_FORMAT.formatted( msg), e); - } - } - - public void debug(String msg){ - if(_LEVELWEIGHTDEBUG >= _LOGLEVELWEIGHT){ - // Debugレベルはマイクラで出してくれないので、INFOでだす - _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELDEBUG, msg)); - } - } - - public void debug(String msg, Exception e){ - if(_LEVELWEIGHTDEBUG >= _LOGLEVELWEIGHT){ - // Debugレベルはマイクラで出してくれないので、INFOでだす - _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELDEBUG, msg), e); - } - } - - public void trace(String msg){ - if(_LEVELWEIGHTTRACE >= _LOGLEVELWEIGHT){ - // Traceレベルはマイクラで出してくれないので、INFOでだす - _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELTRACE, msg)); - } - } - - public void trace(String msg, Exception e){ - if(_LEVELWEIGHTTRACE >= _LOGLEVELWEIGHT){ - // Traceレベルはマイクラで出してくれないので、INFOでだす - _logger.info(_LOG_FORMAT_LEVELSET.formatted(_LEVELTRACE, msg), e); - } - } -} diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index c8c1b59..f9fc7c0 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,10 +1,11 @@ package wacky.storagesign; import org.bukkit.Material; +import org.bukkit.plugin.Plugin; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; import wacky.storagesign.Exception.PotionException; -import wacky.storagesign.Logging.SSLogger; +import com.github.teruteru128.logger.Logger; import java.util.Collections; import java.util.EnumSet; @@ -33,7 +34,7 @@ public class PotionInfo { protected Material mat; protected PotionType pot; protected short damage = 0; - protected SSLogger logger; + protected Logger logger; // 旧メソッド public PotionInfo(Material mat, String[] str){ @@ -100,8 +101,9 @@ public PotionInfo(Material mat, String[] str){ } } - public PotionInfo(Material material, String type, String effName, String enhance) { - logger = new SSLogger(""); + public PotionInfo(Material material, String type, String effName, String enhance, Logger logger) { + + this.logger = logger; logger.debug("PotionItnfoConstructor:Start"); this.mat = material; diff --git a/src/main/java/wacky/storagesign/SignPhysicsEvent.java b/src/main/java/wacky/storagesign/SignPhysicsEvent.java index 87644c2..5c3fcbe 100644 --- a/src/main/java/wacky/storagesign/SignPhysicsEvent.java +++ b/src/main/java/wacky/storagesign/SignPhysicsEvent.java @@ -1,5 +1,6 @@ package wacky.storagesign; +import com.github.teruteru128.logger.Logger; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPhysicsEvent; @@ -7,10 +8,13 @@ public class SignPhysicsEvent implements Listener { StorageSignCore plugin; + private Logger _logger; - public SignPhysicsEvent(StorageSignCore plugin) { + public SignPhysicsEvent(StorageSignCore plugin, Logger logger) { this.plugin = plugin; - plugin.getServer().getPluginManager().registerEvents(this, plugin); + this._logger = logger; + + plugin.getServer().getPluginManager().registerEvents(this, plugin); } @EventHandler diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 7eec281..e190d60 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -1,5 +1,6 @@ package wacky.storagesign; +import com.github.teruteru128.logger.Logger; import java.util.ArrayList; import java.util.List; @@ -37,11 +38,16 @@ public class StorageSign { /** */ protected boolean isEmpty; + /** */ + private Logger _logger; + //StorageSignだと確認してから使っちくりー /** * * */ - public StorageSign(ItemStack item) { + public StorageSign(ItemStack item, Logger logger) { + this._logger = logger; + String[] str = item.getItemMeta().getLore().get(0).split(" "); if (str[0].matches("Empty")) { @@ -51,7 +57,7 @@ public StorageSign(ItemStack item) { this.mat = getMaterial(str[0].split(":")[0]); if (this.mat == Material.ENCHANTED_BOOK) { - EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":")); + EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -60,7 +66,7 @@ public StorageSign(ItemStack item) { || this.mat == Material.LINGERING_POTION) { // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); - PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2]); + PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2], logger); this.mat = pi.getMaterial(); this.damage = pi.getDamage(); this.pot = pi.getPotionType(); @@ -88,7 +94,7 @@ public StorageSign(ItemStack item) { /** * * */ - public StorageSign(Sign sign, Material signmat) { + public StorageSign(Sign sign, Material signmat, Logger logger) { //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); @@ -96,7 +102,7 @@ public StorageSign(Sign sign, Material signmat) { || this.mat == Material.AIR); if (this.mat == Material.ENCHANTED_BOOK) { - EnchantInfo ei = new EnchantInfo(this.mat, line2); + EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -104,7 +110,7 @@ public StorageSign(Sign sign, Material signmat) { || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { // PotionInfo pi = new PotionInfo(mat, line2); - PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2]); + PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2], logger); this.mat = pi.getMaterial(); this.damage = pi.getDamage(); this.pot = pi.getPotionType(); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index c07fedc..263c86b 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; +import java.util.logging.Level; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.GameMode; @@ -48,13 +49,14 @@ import org.bukkit.inventory.meta.*; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; -import wacky.storagesign.Logging.SSLogger; + +import com.github.teruteru128.logger.Logger; public class StorageSignCore extends JavaPlugin implements Listener{ FileConfiguration config; - public SSLogger logger; - static BannerMeta ominousBannerMeta; + public Logger logger; + static BannerMeta ominousBannerMeta; @Override public void onEnable() { @@ -63,9 +65,13 @@ public void onEnable() { config.options().setHeader(Arrays.asList("StorageSign Configuration")); this.saveConfig(); + // ロガーの初期設定 + String logLevel = config.getString("log-level"); // ログ取得 - logger = new SSLogger(config.getString("log-level")); -// + Logger.register(this, logLevel); + logger = Logger.getInstance(this); + + logger.debug("onEnable:Start"); // logger.fatal("serverLog"); // logger.error("errorLog"); // logger.warn("warnLog"); @@ -76,19 +82,29 @@ public void onEnable() { //鯖別レシピが実装されたら Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN,Material.CHERRY_SIGN,Material.BAMBOO_SIGN}; for(int i= 0 ;i<11;i++) { - + logger.trace("signRecipi name:" + sign[i]); + ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this,"ssr"+i),StorageSign.emptySign(sign[i])); + logger.trace("storageSignRecipe:" + storageSignRecipe); //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); storageSignRecipe.shape("CCC","CSC","CHC"); storageSignRecipe.setIngredient('C', Material.CHEST); storageSignRecipe.setIngredient('S', sign[i]); + + logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); if (config.getBoolean("hardrecipe")) storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); else storageSignRecipe.setIngredient('H', Material.CHEST); getServer().addRecipe(storageSignRecipe); + logger.trace(sign[i] + "StorageSign Recipe added."); } + logger.trace("setEvent"); getServer().getPluginManager().registerEvents(this, this); - if(config.getBoolean("no-bud")) new SignPhysicsEvent(this); + + logger.trace("no-bud:" + config.getBoolean("no-bud")); + if(config.getBoolean("no-bud")) new SignPhysicsEvent(this, logger); + + logger.debug("onEnable:End"); } @Override @@ -96,81 +112,170 @@ public void onDisable(){} public boolean isStorageSign(ItemStack item) { - if (item == null) return false; + logger.debug("isStorageSign(ItemStack):Start"); + if (item == null) { + logger.debug("item is null."); + return false; + } + + logger.trace("isSignPost:" + isSignPost(item.getType())); if(isSignPost(item.getType())) { - - if (!item.getItemMeta().hasDisplayName()) return false; - if (!item.getItemMeta().getDisplayName().matches("StorageSign")) return false; + + logger.trace("!item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); + if (!item.getItemMeta().hasDisplayName()) { + logger.debug("itemMeta hasn't displayName."); + return false; + } + logger.trace("!item.getItemMeta().getDisplayName().matches(\"StorageSign\")" + !item.getItemMeta().getDisplayName().matches("StorageSign")); + if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { + logger.debug("itemMetaName hasn't StorageSign."); + return false; + } + logger.trace("item.getItemMeta().hasLore()" + item.getItemMeta().hasLore()); return item.getItemMeta().hasLore(); } + logger.debug("isSignPost is false."); return false; } public boolean isStorageSign(Block block) { - if(isSignPost(block.getType()) || isWallSign(block.getType())) { + logger.debug("isStorageSign(Block):Start"); + + logger.trace("block.getType(): " + block.getType()); + logger.trace("isSignPost(block.getType()): " + isSignPost(block.getType())); + logger.trace("isWallSign(block.getType()) :" + isWallSign(block.getType())); + if(isSignPost(block.getType()) || isWallSign(block.getType())) { + logger.debug("This Block is Sign."); Sign sign = (Sign) block.getState(); - if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) return true; + + logger.trace("sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")); + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { + logger.debug("This Sign is StorageSign."); + return true; + } } + + logger.debug("This Block isn't StorageSign."); return false; } public boolean isHorseEgg(ItemStack item){ - if(item.getType() != Material.GHAST_SPAWN_EGG) return false; - if(item.getItemMeta().hasLore()) return true; + logger.debug("isHorseEgg: Start"); + if(item.getType() != Material.GHAST_SPAWN_EGG) { + logger.debug("This item isn't HorseEgg."); + return false; + } + if(item.getItemMeta().hasLore()) { + logger.debug("This item is HorseEgg."); + return true; + } + + logger.debug("This item isn't HorseEgg."); return false; } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { + logger.debug("onPlayerInteract: Start"); Player player = event.getPlayer(); Block block; + + logger.trace("event.useInteractedBlock() == Result.DENY :" + (event.useInteractedBlock() == Result.DENY )); + logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() == Action.RIGHT_CLICK_AIR)); //手持ちがブロックだと叩いた看板を取得できないことがあるとか if (event.useInteractedBlock() == Result.DENY && event.getAction() == Action.RIGHT_CLICK_AIR) { try { + logger.debug("try getTargetBlock."); block = player.getTargetBlock((Set) null, 3); } catch (IllegalStateException ex) { + java.util.logging.Logger log = logger.getLogger(); + log.log(Level.SEVERE, "getTargetBlock is Error. Trace", ex); return; } } else { + logger.debug("ClickedBlock :" + event.getClickedBlock()); block = event.getClickedBlock(); } - if (block == null) return; - if(player.getGameMode() == GameMode.SPECTATOR) return; + logger.trace("block == null:" + (block == null)); + if (block == null) { + logger.debug("block is null."); + return; + } + + logger.trace("player.getGameMode() == GameMode.SPECTATOR:" + (player.getGameMode() == GameMode.SPECTATOR)); + if(player.getGameMode() == GameMode.SPECTATOR) { + logger.debug("UserGameMode is Spectator."); + return; + } + + logger.trace("event.getAction():" + event.getAction()); + logger.trace("event.getAction() == Action.RIGHT_CLICK_BLOCK:" + (event.getAction() == Action.RIGHT_CLICK_BLOCK)); + logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() == Action.RIGHT_CLICK_AIR)); if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR) { + logger.debug("UserAction is RIGHT_CLICK_BLOCK or RIGHT_CLICK_AIR"); - if (!isStorageSign(block)) return; - if(event.getHand() == EquipmentSlot.OFF_HAND) return;//一応 + if (!isStorageSign(block)) { + logger.debug("This Block not StorageSign."); + return; + } + if(event.getHand() == EquipmentSlot.OFF_HAND) { + logger.debug("This hand is OFF_HAND."); + //一応 + return; + } event.setUseItemInHand(Result.DENY); event.setUseInteractedBlock(Result.DENY); + + logger.trace("!player.hasPermission(\"storagesign.use\") + " + !player.hasPermission("storagesign.use")); if (!player.hasPermission("storagesign.use")) { + logger.debug("This User hasn't permission.storagesign.use"); player.sendMessage(ChatColor.RED + config.getString("no-permisson")); event.setCancelled(true); return; } Sign sign = (Sign) block.getState(); - StorageSign storageSign = new StorageSign(sign,block.getType()); + StorageSign storageSign = new StorageSign(sign,block.getType(), logger); ItemStack itemMainHand = event.getItem(); Material mat; + logger.trace("sign:" + sign); + logger.trace("storageSign:" + storageSign); + logger.trace("itemMainHand:" + itemMainHand); + logger.trace("storageSign.getMaterial() == null:" + (storageSign.getMaterial() == null)); + logger.trace("storageSign.getMaterial() == Material.AIR:" + (storageSign.getMaterial() == Material.AIR)); //アイテム登録 if (storageSign.getMaterial() == null || storageSign.getMaterial() == Material.AIR) { - if(itemMainHand == null) return;//申し訳ないが素手はNG + logger.debug("SS Material Regist."); + logger.trace("itemMainHand:" + itemMainHand); + logger.trace("itemMainHand == null:" + (itemMainHand == null)); + if(itemMainHand == null) { + logger.debug("User MainHand is Null."); + //申し訳ないが素手はNG + return; + } mat = itemMainHand.getType(); + logger.trace("isStorageSign(itemMainHand):" + isStorageSign(itemMainHand)); + logger.trace("isHorseEgg(itemMainHand):" + isHorseEgg(itemMainHand)); + logger.trace("mat:" + mat); if (isStorageSign(itemMainHand)) { + logger.debug("main hand has StorageSign."); storageSign.setMaterial(mat); storageSign.setDamage((short) 1); } else if (isHorseEgg(itemMainHand)){ + logger.debug("main hand has HorseEgg."); storageSign.setMaterial(Material.END_PORTAL); storageSign.setDamage((short) 1); } - else if(mat == Material.STONE_SLAB){ + else if(mat == Material.STONE_SLAB){ + logger.debug("main hand has STONE_SLAB."); storageSign.setMaterial(mat); storageSign.setDamage((short) 1); } else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) { + logger.debug("main hand has PotionSeries."); storageSign.setMaterial(mat); PotionMeta potionMeta = (PotionMeta)itemMainHand.getItemMeta(); PotionType pot = potionMeta.getBasePotionType(); @@ -179,6 +284,7 @@ else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Mater } else if (mat == Material.ENCHANTED_BOOK) { + logger.debug("main hand has EnchantedBook."); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta)itemMainHand.getItemMeta(); if(enchantMeta.getStoredEnchants().size() == 1) { Enchantment ench = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; @@ -187,11 +293,13 @@ else if (mat == Material.ENCHANTED_BOOK) storageSign.setEnchant(ench); } }else if(mat == Material.FIREWORK_ROCKET){ + logger.debug("main hand has FireRocket."); storageSign.setMaterial(mat); FireworkMeta fireworkMeta = (FireworkMeta)itemMainHand.getItemMeta(); storageSign.setDamage((short) fireworkMeta.getPower()); } else if(mat == Material.WHITE_BANNER){ + logger.debug("main hand has WhiteBanner."); storageSign.setMaterial(mat); BannerMeta bannerMeta = (BannerMeta)itemMainHand.getItemMeta(); if(bannerMeta.getPatterns().size() == 8) { @@ -201,21 +309,31 @@ else if(mat == Material.WHITE_BANNER){ } else { + logger.debug("main hand has " + mat); storageSign.setMaterial(mat); var meta = itemMainHand.getItemMeta(); + + logger.trace("meta instanceof Damageable dam" + (meta instanceof Damageable dam)); if (meta instanceof Damageable dam) { + logger.debug("This Item has Damage.damage:" + dam.getDamage()); storageSign.setDamage((short) dam.getDamage()); } } - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + logger.debug("SignTextUpdate."); + for (int i=0; i<4; i++) { + logger.trace("[i]:" + i + ". signText:" + storageSign.getSigntext(i)); + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } sign.update(); + + logger.debug("onPlayerInteract: End"); return; } if (isStorageSign(itemMainHand)) { //看板合成 - StorageSign itemSign = new StorageSign(itemMainHand); + StorageSign itemSign = new StorageSign(itemMainHand, logger); if (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean("manual-import")) { storageSign.addAmount(itemSign.getAmount() * itemSign.getStackSize()); itemSign.setAmount(0); @@ -279,8 +397,7 @@ else if (itemMainHand != null && isSac(itemMainHand)) { event.setUseItemInHand(Result.ALLOW); event.setUseInteractedBlock(Result.ALLOW); return; - } - else if (storageSign.isEmpty()) return; + } else if (storageSign.isEmpty()) return; ItemStack item = storageSign.getContents(); int max = item.getMaxStackSize(); @@ -336,13 +453,13 @@ public void onBlockBreak(BlockBreakEvent event) { if (event.isCancelled()) return; Block block = event.getBlock(); Map breakSignMap = new HashMap<>(); - if (isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType())); + if (isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); for (int i=0; i<5; i++) {//東西南北で判定 BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; block = event.getBlock().getRelative(face[i]); - if (i==0 && isSignPost(block) && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType())); - else if(isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType())); + if (i==0 && isSignPost(block) && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); + else if(isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); } if (breakSignMap.isEmpty()) return; if (!event.getPlayer().hasPermission("storagesign.break")) { @@ -369,7 +486,7 @@ public void onBlockPlace(BlockPlaceEvent event) { event.setCancelled(true); return; } - StorageSign storageSign = new StorageSign(event.getItemInHand()); + StorageSign storageSign = new StorageSign(event.getItemInHand(), logger); Sign sign = (Sign)event.getBlock().getState(); for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); @@ -414,14 +531,14 @@ else if (event.getDestination().getHolder() instanceof DoubleChest) { // } sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(item)) { flag = true; break importLoop; } } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(item)) { flag = true; break importLoop; @@ -457,14 +574,14 @@ else if (event.getSource().getHolder() instanceof DoubleChest) { Block block = blockInventory[j].getBlock().getRelative(face[i]); if (i==0 && isSignPost(block) && isStorageSign(block)) { sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(item)) { flag = true; break exportLoop; } } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(item)) { flag = true; break exportLoop; @@ -584,14 +701,14 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに Block block = ((BlockState)holder).getBlock().getRelative(face[i]); if (i==0 && isSignPost(block) && isStorageSign(block)) { sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(event.getItem().getItemStack())) { flag = true; break; } } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) {//BlockFaceに変更?(めんどい) sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType()); + storageSign = new StorageSign(sign,block.getType(), logger); if (storageSign.isSimilar(event.getItem().getItemStack())) { flag = true; break; @@ -613,7 +730,7 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { //ここでは、エラーを出さずに無視する if(!player.hasPermission("storagesign.autocollect")) return; if(isStorageSign(playerInv.getItemInMainHand())){ - storagesign = new StorageSign(playerInv.getItemInMainHand()); + storagesign = new StorageSign(playerInv.getItemInMainHand(), logger); if(storagesign.getContents() != null){ if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { @@ -629,7 +746,7 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { } } }if(isStorageSign(playerInv.getItemInOffHand())){//メインハンドで回収されなかった時 - storagesign = new StorageSign(playerInv.getItemInOffHand()); + storagesign = new StorageSign(playerInv.getItemInOffHand(), logger); if(storagesign.getContents() != null){ if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8d1a928..6b9438f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,7 +1,7 @@ #StorageSign Configuration no-permisson: You don't have permission -log-level: DEBUG +log-level: INFO #log-level: WARN manual-import: true manual-export: true From ccb8590b9245b0cdffff828f91635a3acc971dab Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 12 Apr 2024 13:33:42 +0900 Subject: [PATCH 23/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E6=95=B4=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/EnchantInfo.java | 85 +- .../Exception/PotionException.java | 7 +- .../java/wacky/storagesign/PotionInfo.java | 520 ++--- .../wacky/storagesign/SignPhysicsEvent.java | 20 +- .../java/wacky/storagesign/StorageSign.java | 203 +- .../wacky/storagesign/StorageSignCore.java | 1696 +++++++++-------- 6 files changed, 1353 insertions(+), 1178 deletions(-) diff --git a/src/main/java/wacky/storagesign/EnchantInfo.java b/src/main/java/wacky/storagesign/EnchantInfo.java index 6800544..00eef82 100644 --- a/src/main/java/wacky/storagesign/EnchantInfo.java +++ b/src/main/java/wacky/storagesign/EnchantInfo.java @@ -8,46 +8,51 @@ public class EnchantInfo { - protected Material mat; - protected Enchantment ench; - protected short damage = 0; - private Logger _logger; - - public EnchantInfo(Material mat, String[] str, Logger logger){ - this.mat = mat; - this._logger = logger; - - ench = getEnch(str[1]); - damage = NumberConversions.toShort(str[2]); - } - - private Enchantment getEnch(String substring) { - //後ろ切れても可. - for(Enchantment e : Registry.ENCHANTMENT) { - if(e.getKey().getKey().startsWith(substring)) return e; + protected Material mat; + protected Enchantment ench; + protected short damage = 0; + private Logger _logger; + + public EnchantInfo(Material mat, String[] str, Logger logger) { + this.mat = mat; + this._logger = logger; + + ench = getEnch(str[1]); + damage = NumberConversions.toShort(str[2]); + } + + public static String getShortType(Enchantment e) { + String key = e.getKey().getKey(); + if (key.matches("fire_protection")) { + return "fire_p"; + } else if (key.matches("fire_aspect")) { + return "fire_a"; + } else if (key.length() <= 5) { + return key; } - return null; - } - - public static String getShortType(Enchantment e){ - String key = e.getKey().getKey(); - if(key.matches("fire_protection")) return "fire_p"; - else if(key.matches("fire_aspect")) return "fire_a"; - - else if(key.length() <= 5) return key; - return key.substring(0, 5); - } - - public short getDamage() { - return damage; - } - - public Material getMaterial() { - return mat; - } - - public Enchantment getEnchantType() { - return ench; - } + return key.substring(0, 5); + } + + private Enchantment getEnch(String substring) { + //後ろ切れても可. + for (Enchantment e : Registry.ENCHANTMENT) { + if (e.getKey().getKey().startsWith(substring)) { + return e; + } + } + return null; + } + + public short getDamage() { + return damage; + } + + public Material getMaterial() { + return mat; + } + + public Enchantment getEnchantType() { + return ench; + } } diff --git a/src/main/java/wacky/storagesign/Exception/PotionException.java b/src/main/java/wacky/storagesign/Exception/PotionException.java index dc46614..aa94821 100644 --- a/src/main/java/wacky/storagesign/Exception/PotionException.java +++ b/src/main/java/wacky/storagesign/Exception/PotionException.java @@ -1,7 +1,8 @@ package wacky.storagesign.Exception; public class PotionException extends RuntimeException { - public PotionException(String message){ - super(message); - } + + public PotionException(String message) { + super(message); + } } diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index f9fc7c0..a018b9f 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,277 +1,307 @@ package wacky.storagesign; -import org.bukkit.Material; -import org.bukkit.plugin.Plugin; -import org.bukkit.potion.PotionType; -import org.bukkit.util.NumberConversions; -import wacky.storagesign.Exception.PotionException; import com.github.teruteru128.logger.Logger; - import java.util.Collections; import java.util.EnumSet; import java.util.Set; +import org.bukkit.Material; +import org.bukkit.potion.PotionType; +import org.bukkit.util.NumberConversions; +import wacky.storagesign.Exception.PotionException; public class PotionInfo { - private static String ENHANCE_NORMAL_CODE = "0"; - private static String ENHANCE_EXTENSION_CODE = "1"; - private static String ENHANCE_STRONG_CODE = "2"; - private static String ENHANCE_EXTENSION_PREF = "LONG_"; - private static String ENHANCE_STRONG_PREF = "STRONG_"; - private static String SHORT_NAME_HEAL = "HEAL"; - private static String SHORT_NAME_BREAT = "BREAT"; - private static String SHORT_NAME_DAMAG = "DAMAG"; - private static String SHORT_NAME_JUMP = "JUMP"; - private static String SHORT_NAME_SPEED = "SPEED"; - private static final Set HEAL_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); - private static final Set BREATH_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); - private static final Set DAMAGE_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); - private static final Set JUMP_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); - private static final Set SPEED_POTIONS = Collections.unmodifiableSet(EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); - protected static String TYPE_SPLASH_PREF = "S"; - protected static String TYPE_LINGERING_PREF = "L"; - - protected Material mat; - protected PotionType pot; - protected short damage = 0; - protected Logger logger; - - // 旧メソッド - public PotionInfo(Material mat, String[] str){ - this.mat = mat; - if(str.length == 2){//ダメージ値 - short old = NumberConversions.toShort(str[1]); - if(old >= 16384) this.mat = Material.SPLASH_POTION; - switch(old % 16){ - case 1: - pot = PotionType.REGEN; - break; - case 2: - pot = PotionType.SPEED; - break; - case 3: - pot = PotionType.FIRE_RESISTANCE; - break; - case 4: - pot = PotionType.POISON; - break; - case 5: - pot = PotionType.INSTANT_HEAL; - break; - case 6: - pot = PotionType.NIGHT_VISION; - break; - case 8: - pot = PotionType.WEAKNESS; - break; - case 9: - pot = PotionType.STRENGTH; - break; - case 10: - pot = PotionType.SLOWNESS; - break; - case 11: - pot = PotionType.JUMP; - break; - case 12: - pot = PotionType.INSTANT_DAMAGE; - break; - case 13: - pot = PotionType.WATER_BREATHING; - break; - case 14: - pot = PotionType.INVISIBILITY; - break; - - default: - if(old == 16) pot = PotionType.AWKWARD; - else if(old == 32) pot = PotionType.THICK; - else if(old == 64 || old == 8192 || old == 16384) pot = PotionType.MUNDANE; - else pot = PotionType.WATER; - } - - if(old % 8192 > 64 && pot.isExtendable()) damage = 1;//延長 - else if(old % 64 > 32 && pot.isUpgradeable()) damage = 2;//強化 - - }else if(str.length == 1) pot = PotionType.WATER; - - else{//タイプとレベル - pot = getType(str[1]); - damage = NumberConversions.toShort(str[2]); - } - } - - public PotionInfo(Material material, String type, String effName, String enhance, Logger logger) { - - this.logger = logger; - logger.debug("PotionItnfoConstructor:Start"); - this.mat = material; - - // ポーション種別の設定 - if (type.startsWith(TYPE_SPLASH_PREF)) { - this.mat = Material.SPLASH_POTION; - } else if (type.startsWith(TYPE_LINGERING_PREF)) { - // 元のやつだと入ってないからいらない? - this.mat = Material.LINGERING_POTION; - } + private static final Set HEAL_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); + private static final Set BREATH_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); + private static final Set DAMAGE_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); + private static final Set JUMP_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); + private static final Set SPEED_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); + protected static String TYPE_SPLASH_PREF = "S"; + protected static String TYPE_LINGERING_PREF = "L"; + private static String ENHANCE_NORMAL_CODE = "0"; + private static String ENHANCE_EXTENSION_CODE = "1"; + private static String ENHANCE_STRONG_CODE = "2"; + private static String ENHANCE_EXTENSION_PREF = "LONG_"; + private static String ENHANCE_STRONG_PREF = "STRONG_"; + private static String SHORT_NAME_HEAL = "HEAL"; + private static String SHORT_NAME_BREAT = "BREAT"; + private static String SHORT_NAME_DAMAG = "DAMAG"; + private static String SHORT_NAME_JUMP = "JUMP"; + private static String SHORT_NAME_SPEED = "SPEED"; + protected Material mat; + protected PotionType pot; + protected short damage = 0; + protected Logger logger; + + // 旧メソッド + public PotionInfo(Material mat, String[] str) { + this.mat = mat; + if (str.length == 2) {//ダメージ値 + short old = NumberConversions.toShort(str[1]); + if (old >= 16384) { + this.mat = Material.SPLASH_POTION; + } + switch (old % 16) { + case 1: + pot = PotionType.REGEN; + break; + case 2: + pot = PotionType.SPEED; + break; + case 3: + pot = PotionType.FIRE_RESISTANCE; + break; + case 4: + pot = PotionType.POISON; + break; + case 5: + pot = PotionType.INSTANT_HEAL; + break; + case 6: + pot = PotionType.NIGHT_VISION; + break; + case 8: + pot = PotionType.WEAKNESS; + break; + case 9: + pot = PotionType.STRENGTH; + break; + case 10: + pot = PotionType.SLOWNESS; + break; + case 11: + pot = PotionType.JUMP; + break; + case 12: + pot = PotionType.INSTANT_DAMAGE; + break; + case 13: + pot = PotionType.WATER_BREATHING; + break; + case 14: + pot = PotionType.INVISIBILITY; + break; + + default: + if (old == 16) { + pot = PotionType.AWKWARD; + } else if (old == 32) { + pot = PotionType.THICK; + } else if (old == 64 || old == 8192 || old == 16384) { + pot = PotionType.MUNDANE; + } else { + pot = PotionType.WATER; + } + } + + if (old % 8192 > 64 && pot.isExtendable()) { + damage = 1;//延長 + } else if (old % 64 > 32 && pot.isUpgradeable()) { + damage = 2;//強化 + } + + } else if (str.length == 1) { + pot = PotionType.WATER; + } else {//タイプとレベル + pot = getType(str[1]); + damage = NumberConversions.toShort(str[2]); + } + } - this.pot = getType(effName, enhance); - this.damage = NumberConversions.toShort(enhance); + public PotionInfo(Material material, String type, String effName, String enhance, Logger logger) { - // 一応前のロジックも入れておく - if (damage % 8192 > 64 && pot.isExtendable()) this.damage = 1;//延長 - else if (damage % 64 > 32 && pot.isUpgradeable()) this.damage = 2;//強化 + this.logger = logger; + logger.debug("PotionItnfoConstructor:Start"); + this.mat = material; + // ポーション種別の設定 + if (type.startsWith(TYPE_SPLASH_PREF)) { + this.mat = Material.SPLASH_POTION; + } else if (type.startsWith(TYPE_LINGERING_PREF)) { + // 元のやつだと入ってないからいらない? + this.mat = Material.LINGERING_POTION; } - // 旧メソッド - private PotionType getType(String substring) { - if (substring.equals("BREAT")) return PotionType.WATER_BREATHING;//例外 - else if (substring.equals("HEAL")) return PotionType.INSTANT_HEAL; - else if (substring.equals("DAMAG")) return PotionType.INSTANT_DAMAGE; - else { //後ろ切れてるかも - for (PotionType p : PotionType.values()) { - if (p.toString().startsWith(substring)) return p; - } - } - return null; - } - - private PotionType getType(String effName, String enhance) { + this.pot = getType(effName, enhance); + this.damage = NumberConversions.toShort(enhance); - // 表記上例外のケースたちの判定 - if (effName.equals(SHORT_NAME_HEAL)) { - if (enhance.equals(ENHANCE_NORMAL_CODE)) { - return PotionType.INSTANT_HEAL; - } else if (enhance.equals(ENHANCE_STRONG_CODE)) { - return PotionType.STRONG_HEALING; - } else { - throw new PotionException("治癒のポーションに対応する種類が存在しません"); - } - } else if (effName.equals(SHORT_NAME_BREAT)) { - if (enhance.equals(ENHANCE_NORMAL_CODE)) { - return PotionType.WATER_BREATHING; - } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { - return PotionType.LONG_WATER_BREATHING; - } else { - throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); - } - } else if (effName.equals(SHORT_NAME_DAMAG)) { - if (enhance.equals(ENHANCE_NORMAL_CODE)) { - return PotionType.INSTANT_DAMAGE; - } else if (enhance.equals(ENHANCE_STRONG_CODE)) { - return PotionType.STRONG_HARMING; - } else { - throw new PotionException("ダメージのポーションに対応する種類が存在しません"); - } - } else if (effName.equals(SHORT_NAME_JUMP)) { - if (enhance.equals(ENHANCE_NORMAL_CODE)) { - return PotionType.JUMP; - } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { - return PotionType.LONG_LEAPING; - } else if (enhance.equals(ENHANCE_STRONG_CODE)) { - return PotionType.STRONG_LEAPING; - } else { - throw new PotionException("跳躍のポーションに対応する種類が存在しません"); - } - } else if (effName.equals(SHORT_NAME_SPEED)) { - if (enhance.equals(ENHANCE_NORMAL_CODE)) { - return PotionType.SPEED; - } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { - return PotionType.LONG_SWIFTNESS; - } else if (enhance.equals(ENHANCE_STRONG_CODE)) { - return PotionType.STRONG_SWIFTNESS; - } else { - throw new PotionException("俊敏のポーションに対応する種類が存在しません"); - } - } else { - // それ以外は命名ルールに従って検索をかける - // 延長、強化があったら先頭にプレフィックスをつけて検索 - String name = effName; - if (enhance.equals(ENHANCE_EXTENSION_CODE)) { - name = ENHANCE_EXTENSION_PREF + name; - } else if (enhance.equals(ENHANCE_STRONG_CODE)) { - name = ENHANCE_STRONG_PREF + name; - } - for (PotionType p : PotionType.values()) { - if (p.toString().startsWith(name)) return p; - } - throw new PotionException("ポーションデータが存在しません"); - } + // 一応前のロジックも入れておく + if (damage % 8192 > 64 && pot.isExtendable()) { + this.damage = 1;//延長 + } else if (damage % 64 > 32 && pot.isUpgradeable()) { + this.damage = 2;//強化 } - public static String getShortType(PotionType pot) { - if (pot == PotionType.WATER_BREATHING) return "BREAT"; - else if (pot == PotionType.INSTANT_HEAL) return "HEAL"; - else if (pot == PotionType.INSTANT_DAMAGE) return "DAMAG"; - else if (pot.toString().length() <= 5) return pot.toString(); - return pot.toString().substring(0, 5); + } + + public static String getShortType(PotionType pot) { + if (pot == PotionType.WATER_BREATHING) { + return "BREAT"; + } else if (pot == PotionType.INSTANT_HEAL) { + return "HEAL"; + } else if (pot == PotionType.INSTANT_DAMAGE) { + return "DAMAG"; + } else if (pot.toString().length() <= 5) { + return pot.toString(); + } + return pot.toString().substring(0, 5); + } + + public static String getShortName(PotionType pot) { + String name = pot.toString(); + + // 特殊命名ルールの取り出し + if (HEAL_POTIONS.contains(pot)) { + return SHORT_NAME_HEAL; + } else if (BREATH_POTIONS.contains(pot)) { + return SHORT_NAME_BREAT; + } else if (DAMAGE_POTIONS.contains(pot)) { + return SHORT_NAME_DAMAG; + } else if (JUMP_POTIONS.contains(pot)) { + return SHORT_NAME_JUMP; + } else if (SPEED_POTIONS.contains(pot)) { + return SHORT_NAME_SPEED; + } else { + // それ以外のもの + // 延長・強化のプレフィックス除去 + if (name.startsWith(ENHANCE_EXTENSION_PREF)) { + name = name.substring(ENHANCE_EXTENSION_PREF.length()); + } else if (name.startsWith(ENHANCE_STRONG_PREF)) { + name = name.substring(ENHANCE_STRONG_PREF.length()); + } + + // 5文字以内の名前なら、そのまま使う。それ以外なら5文字に切り出す + if (name.length() <= 5) { + return name; + } } - public static String getShortName(PotionType pot) { - String name = pot.toString(); - - // 特殊命名ルールの取り出し - if (HEAL_POTIONS.contains(pot)) { - return SHORT_NAME_HEAL; - } else if (BREATH_POTIONS.contains(pot)) { - return SHORT_NAME_BREAT; - } else if (DAMAGE_POTIONS.contains(pot)) { - return SHORT_NAME_DAMAG; - } else if (JUMP_POTIONS.contains(pot)) { - return SHORT_NAME_JUMP; - } else if (SPEED_POTIONS.contains(pot)) { - return SHORT_NAME_SPEED; - } else { - // それ以外のもの - // 延長・強化のプレフィックス除去 - if (name.startsWith(ENHANCE_EXTENSION_PREF)) { - name = name.substring(ENHANCE_EXTENSION_PREF.length()); - } else if (name.startsWith(ENHANCE_STRONG_PREF)) { - name = name.substring(ENHANCE_STRONG_PREF.length()); - } - - // 5文字以内の名前なら、そのまま使う。それ以外なら5文字に切り出す - if (name.length() <= 5) { - return name; - } - } + return name.substring(0, 5); + } - return name.substring(0, 5); + public static String getSignData(Material mat, PotionType pot, short damage) { + String prefix = ""; + if (mat == Material.SPLASH_POTION) { + prefix = PotionInfo.TYPE_SPLASH_PREF; + } else if (mat == Material.LINGERING_POTION) { + prefix = PotionInfo.TYPE_LINGERING_PREF; } - public static String getSignData(Material mat, PotionType pot, short damage) { - String prefix = ""; - if (mat == Material.SPLASH_POTION) prefix = PotionInfo.TYPE_SPLASH_PREF; - else if (mat == Material.LINGERING_POTION) prefix = PotionInfo.TYPE_LINGERING_PREF; + return prefix + "POTION:" + PotionInfo.getShortName(pot) + ":" + damage; + } - return prefix + "POTION:" + PotionInfo.getShortName(pot) + ":" + damage; - } + public static String getTagData(Material mat, PotionType pot, short damage, int amount) { + return mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount; + } - public static String getTagData(Material mat, PotionType pot, short damage, int amount) { - return mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount; + public static String getPotionTypeCode(PotionType pot) { + String name = pot.toString(); + if (name.startsWith(ENHANCE_EXTENSION_PREF)) { + return ENHANCE_EXTENSION_CODE; + } else if (name.startsWith(ENHANCE_STRONG_PREF)) { + return ENHANCE_STRONG_CODE; } - - public static String getPotionTypeCode(PotionType pot){ - String name = pot.toString(); - if (name.startsWith(ENHANCE_EXTENSION_PREF)) { - return ENHANCE_EXTENSION_CODE; - } else if (name.startsWith(ENHANCE_STRONG_PREF)) { - return ENHANCE_STRONG_CODE; + return ENHANCE_NORMAL_CODE; + } + + // 旧メソッド + private PotionType getType(String substring) { + if (substring.equals("BREAT")) { + return PotionType.WATER_BREATHING;//例外 + } else if (substring.equals("HEAL")) { + return PotionType.INSTANT_HEAL; + } else if (substring.equals("DAMAG")) { + return PotionType.INSTANT_DAMAGE; + } else { //後ろ切れてるかも + for (PotionType p : PotionType.values()) { + if (p.toString().startsWith(substring)) { + return p; + } + } + } + return null; + } + + private PotionType getType(String effName, String enhance) { + + // 表記上例外のケースたちの判定 + if (effName.equals(SHORT_NAME_HEAL)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + return PotionType.INSTANT_HEAL; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_HEALING; + } else { + throw new PotionException("治癒のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_BREAT)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + return PotionType.WATER_BREATHING; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_WATER_BREATHING; + } else { + throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_DAMAG)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + return PotionType.INSTANT_DAMAGE; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_HARMING; + } else { + throw new PotionException("ダメージのポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_JUMP)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + return PotionType.JUMP; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_LEAPING; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_LEAPING; + } else { + throw new PotionException("跳躍のポーションに対応する種類が存在しません"); + } + } else if (effName.equals(SHORT_NAME_SPEED)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + return PotionType.SPEED; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + return PotionType.LONG_SWIFTNESS; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + return PotionType.STRONG_SWIFTNESS; + } else { + throw new PotionException("俊敏のポーションに対応する種類が存在しません"); + } + } else { + // それ以外は命名ルールに従って検索をかける + // 延長、強化があったら先頭にプレフィックスをつけて検索 + String name = effName; + if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + name = ENHANCE_EXTENSION_PREF + name; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + name = ENHANCE_STRONG_PREF + name; + } + for (PotionType p : PotionType.values()) { + if (p.toString().startsWith(name)) { + return p; } - return ENHANCE_NORMAL_CODE; + } + throw new PotionException("ポーションデータが存在しません"); } + } - public short getDamage() { - return damage; - } + public short getDamage() { + return damage; + } - public Material getMaterial() { - return mat; - } + public Material getMaterial() { + return mat; + } - public PotionType getPotionType() { - return pot; - } + public PotionType getPotionType() { + return pot; + } } diff --git a/src/main/java/wacky/storagesign/SignPhysicsEvent.java b/src/main/java/wacky/storagesign/SignPhysicsEvent.java index 5c3fcbe..2bd29f2 100644 --- a/src/main/java/wacky/storagesign/SignPhysicsEvent.java +++ b/src/main/java/wacky/storagesign/SignPhysicsEvent.java @@ -7,18 +7,18 @@ public class SignPhysicsEvent implements Listener { - StorageSignCore plugin; + StorageSignCore plugin; private Logger _logger; - public SignPhysicsEvent(StorageSignCore plugin, Logger logger) { - this.plugin = plugin; - this._logger = logger; + public SignPhysicsEvent(StorageSignCore plugin, Logger logger) { + this.plugin = plugin; + this._logger = logger; - plugin.getServer().getPluginManager().registerEvents(this, plugin); - } + plugin.getServer().getPluginManager().registerEvents(this, plugin); + } - @EventHandler - public void onBlockPhysics(BlockPhysicsEvent event) { - event.setCancelled(plugin.isStorageSign(event.getBlock())); - } + @EventHandler + public void onBlockPhysics(BlockPhysicsEvent event) { + event.setCancelled(plugin.isStorageSign(event.getBlock())); + } } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index e190d60..b821066 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -3,7 +3,6 @@ import com.github.teruteru128.logger.Logger; import java.util.ArrayList; import java.util.List; - import org.bukkit.Material; import org.bukkit.block.Sign; import org.bukkit.block.sign.Side; @@ -19,32 +18,52 @@ /** * StrageSignの実体クラスです. - * */ + */ public class StorageSign { - /** */ + + /** + * + */ protected Material smat; - /** */ + /** + * + */ protected Material mat; - /** */ + /** + * + */ protected short damage; - /** */ + /** + * + */ protected Enchantment ench; - /** */ + /** + * + */ protected PotionType pot; - /** */ + /** + * + */ protected int amount; - /** */ + /** + * + */ protected int stack; - /** */ + /** + * + */ protected boolean isEmpty; - /** */ + /** + * + */ private Logger _logger; //StorageSignだと確認してから使っちくりー - /** - * - * */ + + /** + * + */ public StorageSign(ItemStack item, Logger logger) { this._logger = logger; @@ -92,14 +111,14 @@ public StorageSign(ItemStack item, Logger logger) { }*/ /** - * - * */ + * + */ public StorageSign(Sign sign, Material signmat, Logger logger) { //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); this.isEmpty = (this.mat == null - || this.mat == Material.AIR); + || this.mat == Material.AIR); if (this.mat == Material.ENCHANTED_BOOK) { EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); @@ -169,13 +188,40 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { } + /** + * 空のStorageSignを作成して、ItemStackとして取得します. + * + * @return ItemStack 空のStorageSign + */ + public static ItemStack emptySign() { + return emptySign(Material.OAK_SIGN); + } + + /** + * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. + * + * @param smat Material + * @return ItemStack 空のStorageSign + */ + public static ItemStack emptySign(Material smat) { + ItemStack emptySign = new ItemStack(smat); + ItemMeta meta = emptySign.getItemMeta(); + List list = new ArrayList<>(); + + meta.setDisplayName("StorageSign"); + list.add("Empty"); + meta.setLore(list); + emptySign.setItemMeta(meta); + + return emptySign; + } + /** * 指定された文字列でMaterialに変換します. * - * @param str - * + * @param str * @return Material - * */ + */ protected Material getMaterial(String str) { // if (str.matches("EmptySign")) { // return Material.END_PORTAL; @@ -282,16 +328,23 @@ protected Material getMaterial(String str) { * StorageSignが保持しているMaterialを取得します. * * @return Material - * */ + */ public Material getMaterial() { return this.mat; } + /** + * フィールド変数:matのsetter. + */ + public void setMaterial(Material mat) { + this.mat = mat; + } + /** * Materialの短い名前を文字列として取得します. * * @return Materialの短い名前 - * */ + */ protected String getShortName() { //2行目の記載内容 if (this.mat == null @@ -351,11 +404,11 @@ protected String getShortName() { && this.damage == 1) { return "BambooStorageSign"; - //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; - //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; - //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; + //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; + //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; + //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; + //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; + //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; } else if (this.mat == Material.ENCHANTED_BOOK) { return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; @@ -391,7 +444,7 @@ protected String getShortName() { * 空のStorageSignを作成して、ItemStackとして取得します. * * @return ItemStack 空のStorageSign - * */ + */ public ItemStack getStorageSign() { ItemStack item = new ItemStack(this.smat, this.stack); ItemMeta meta = item.getItemMeta(); @@ -424,40 +477,11 @@ public ItemStack getStorageSign() { return item; } - /** - * 空のStorageSignを作成して、ItemStackとして取得します. - * - * @return ItemStack 空のStorageSign - * */ - public static ItemStack emptySign() { - return emptySign(Material.OAK_SIGN); - } - - /** - * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. - * - * @param smat Material - * - * @return ItemStack 空のStorageSign - * */ - public static ItemStack emptySign(Material smat) { - ItemStack emptySign = new ItemStack(smat); - ItemMeta meta = emptySign.getItemMeta(); - List list = new ArrayList<>(); - - meta.setDisplayName("StorageSign"); - list.add("Empty"); - meta.setLore(list); - emptySign.setItemMeta(meta); - - return emptySign; - } - /** * 空のHorseEggを作成して、ItemStackとして取得します. * * @return ItemStack 空のHoerseEgg - * */ + */ private ItemStack emptyHorseEgg() { ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); @@ -474,11 +498,9 @@ private ItemStack emptyHorseEgg() { /** * StrageSignから、設置されている看板として表示される文字列を取得します. * - * @param i 看板の何行目の文字列を取得したいか指定します
- * (ex.)1行目⇒0 - * + * @param i 看板の何行目の文字列を取得したいか指定します
(ex.)1行目⇒0 * @return 取得した文字列 - * */ + */ public String getSigntext(int i) { String[] sign = new String[4]; @@ -496,7 +518,7 @@ public String getSigntext(int i) { * StrageSignの内容を取得します. * * @return ItemStack - * */ + */ public ItemStack getContents() { //中身取得、一部アイテム用の例外 if (this.mat == null) { @@ -599,7 +621,7 @@ public ItemStack getContents() { * 回収可能か判定、エンチャ本は本自身の合成回数を問わない. * * @return true:回収できるよ/false:回収できないよ - * */ + */ public boolean isSimilar(ItemStack item) { if (item == null) { return false; @@ -631,37 +653,30 @@ public boolean isSimilar(ItemStack item) { return getContents().isSimilar(item); } - /** - * フィールド変数:matのsetter. - * */ - public void setMaterial(Material mat) { - this.mat = mat; - } - /** * フィールド変数:damageのgetter. - * */ + */ public short getDamage() { return this.damage; } /** * フィールド変数:damageのsetter. - * */ + */ public void setDamage(short damage) { this.damage = damage; } /** * フィールド変数:amountのgetter. - * */ + */ public int getAmount() { return this.amount; } /** * フィールド変数:amountのsetter. - * */ + */ public void setAmount(int amount) { this.amount = amount; this.isEmpty = amount == 0; @@ -671,7 +686,7 @@ public void setAmount(int amount) { * フィールド変数:amountへ加算をします. * * @param amount 加算対象の値 - * */ + */ public void addAmount(int amount) { if (this.amount < -amount) { this.amount = 0; @@ -693,7 +708,7 @@ public void addAmount(int amount) { * StorageSignが保持しているStackSizeを取得します. * * @return StackSize - * */ + */ public int getStackSize() { return this.stack; } @@ -702,42 +717,42 @@ public int getStackSize() { * StrageSignが保持している内容か空かを取得します. * * @return true:空っぽ/false:入ってます - * */ + */ public boolean isEmpty() { return this.isEmpty; } - /** - * フィールド変数:enchのsetter. - * */ - public void setEnchant(Enchantment ench) { - this.ench = ench; - } - /** * フィールド変数:enchのgetter. - * */ + */ public Enchantment getEnchant() { return this.ench; } /** - * フィールド変数:potのsetter. - * */ - public void setPotion(PotionType pot) { - this.pot = pot; + * フィールド変数:enchのsetter. + */ + public void setEnchant(Enchantment ench) { + this.ench = ench; } /** * フィールド変数:potのgetter. - * */ + */ public PotionType getPotion() { return this.pot; } + /** + * フィールド変数:potのsetter. + */ + public void setPotion(PotionType pot) { + this.pot = pot; + } + /** * フィールド変数:smatのgetter. - * */ + */ public Material getSmat() { return this.smat; } @@ -746,7 +761,7 @@ public Material getSmat() { * マテリアルがシュルカーボックスかを検査します. * * @return true:シュルカーボックスにだよ/false:シュルカーボックスじゃないよ - * */ + */ private boolean isShulker(Material mat) { switch (mat) { case SHULKER_BOX: @@ -767,7 +782,7 @@ private boolean isShulker(Material mat) { case RED_SHULKER_BOX: case BLACK_SHULKER_BOX: return true; - + default: } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 263c86b..012f8c9 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -1,10 +1,10 @@ package wacky.storagesign; +import com.github.teruteru128.logger.Logger; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; - import java.util.logging.Level; import org.bukkit.ChatColor; import org.bukkit.DyeColor; @@ -46,32 +46,34 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.ShapedRecipe; -import org.bukkit.inventory.meta.*; +import org.bukkit.inventory.meta.BannerMeta; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.FireworkMeta; +import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; -import com.github.teruteru128.logger.Logger; +public class StorageSignCore extends JavaPlugin implements Listener { -public class StorageSignCore extends JavaPlugin implements Listener{ + static BannerMeta ominousBannerMeta; + public Logger logger; + FileConfiguration config; - FileConfiguration config; - public Logger logger; - static BannerMeta ominousBannerMeta; + @Override + public void onEnable() { + config = this.getConfig(); + config.options().copyDefaults(true); + config.options().setHeader(Arrays.asList("StorageSign Configuration")); + this.saveConfig(); - @Override - public void onEnable() { - config = this.getConfig(); - config.options().copyDefaults(true); - config.options().setHeader(Arrays.asList("StorageSign Configuration")); - this.saveConfig(); + // ロガーの初期設定 + String logLevel = config.getString("log-level"); + // ログ取得 + Logger.register(this, logLevel); + logger = Logger.getInstance(this); - // ロガーの初期設定 - String logLevel = config.getString("log-level"); - // ログ取得 - Logger.register(this, logLevel); - logger = Logger.getInstance(this); - - logger.debug("onEnable:Start"); + logger.debug("onEnable:Start"); // logger.fatal("serverLog"); // logger.error("errorLog"); // logger.warn("warnLog"); @@ -79,832 +81,954 @@ public void onEnable() { // logger.debug("debugLog"); // logger.trace("traceLog"); - //鯖別レシピが実装されたら - Material[] sign = {Material.OAK_SIGN,Material.BIRCH_SIGN,Material.SPRUCE_SIGN,Material.JUNGLE_SIGN,Material.ACACIA_SIGN,Material.DARK_OAK_SIGN,Material.CRIMSON_SIGN,Material.WARPED_SIGN,Material.MANGROVE_SIGN,Material.CHERRY_SIGN,Material.BAMBOO_SIGN}; - for(int i= 0 ;i<11;i++) { - logger.trace("signRecipi name:" + sign[i]); - - ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this,"ssr"+i),StorageSign.emptySign(sign[i])); - logger.trace("storageSignRecipe:" + storageSignRecipe); - //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); - storageSignRecipe.shape("CCC","CSC","CHC"); - storageSignRecipe.setIngredient('C', Material.CHEST); - storageSignRecipe.setIngredient('S', sign[i]); - - logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); - if (config.getBoolean("hardrecipe")) storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); - else storageSignRecipe.setIngredient('H', Material.CHEST); - getServer().addRecipe(storageSignRecipe); - logger.trace(sign[i] + "StorageSign Recipe added."); - } + //鯖別レシピが実装されたら + Material[] sign = {Material.OAK_SIGN, Material.BIRCH_SIGN, Material.SPRUCE_SIGN, + Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, + Material.WARPED_SIGN, Material.MANGROVE_SIGN, Material.CHERRY_SIGN, Material.BAMBOO_SIGN}; + for (int i = 0; i < 11; i++) { + logger.trace("signRecipi name:" + sign[i]); + + ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this, "ssr" + i), + StorageSign.emptySign(sign[i])); + logger.trace("storageSignRecipe:" + storageSignRecipe); + //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); + storageSignRecipe.shape("CCC", "CSC", "CHC"); + storageSignRecipe.setIngredient('C', Material.CHEST); + storageSignRecipe.setIngredient('S', sign[i]); + + logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); + if (config.getBoolean("hardrecipe")) { + storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); + } else { + storageSignRecipe.setIngredient('H', Material.CHEST); + } + getServer().addRecipe(storageSignRecipe); + logger.trace(sign[i] + "StorageSign Recipe added."); + } - logger.trace("setEvent"); - getServer().getPluginManager().registerEvents(this, this); + logger.trace("setEvent"); + getServer().getPluginManager().registerEvents(this, this); - logger.trace("no-bud:" + config.getBoolean("no-bud")); - if(config.getBoolean("no-bud")) new SignPhysicsEvent(this, logger); + logger.trace("no-bud:" + config.getBoolean("no-bud")); + if (config.getBoolean("no-bud")) { + new SignPhysicsEvent(this, logger); + } - logger.debug("onEnable:End"); - } + logger.debug("onEnable:End"); + } - @Override - public void onDisable(){} + @Override + public void onDisable() { + } - - public boolean isStorageSign(ItemStack item) { - logger.debug("isStorageSign(ItemStack):Start"); - if (item == null) { - logger.debug("item is null."); - return false; - } - logger.trace("isSignPost:" + isSignPost(item.getType())); - if(isSignPost(item.getType())) { + public boolean isStorageSign(ItemStack item) { + logger.debug("isStorageSign(ItemStack):Start"); + if (item == null) { + logger.debug("item is null."); + return false; + } - logger.trace("!item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); - if (!item.getItemMeta().hasDisplayName()) { - logger.debug("itemMeta hasn't displayName."); - return false; - } - logger.trace("!item.getItemMeta().getDisplayName().matches(\"StorageSign\")" + !item.getItemMeta().getDisplayName().matches("StorageSign")); - if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { - logger.debug("itemMetaName hasn't StorageSign."); - return false; - } - logger.trace("item.getItemMeta().hasLore()" + item.getItemMeta().hasLore()); - return item.getItemMeta().hasLore(); - } - logger.debug("isSignPost is false."); - return false; - } - - public boolean isStorageSign(Block block) { - logger.debug("isStorageSign(Block):Start"); - - logger.trace("block.getType(): " + block.getType()); - logger.trace("isSignPost(block.getType()): " + isSignPost(block.getType())); - logger.trace("isWallSign(block.getType()) :" + isWallSign(block.getType())); - if(isSignPost(block.getType()) || isWallSign(block.getType())) { - logger.debug("This Block is Sign."); - Sign sign = (Sign) block.getState(); - - logger.trace("sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")); - if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { - logger.debug("This Sign is StorageSign."); - return true; - } - } + logger.trace("isSignPost:" + isSignPost(item.getType())); + if (isSignPost(item.getType())) { + + logger.trace("!item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); + if (!item.getItemMeta().hasDisplayName()) { + logger.debug("itemMeta hasn't displayName."); + return false; + } + logger.trace( + "!item.getItemMeta().getDisplayName().matches(\"StorageSign\")" + !item.getItemMeta() + .getDisplayName().matches("StorageSign")); + if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { + logger.debug("itemMetaName hasn't StorageSign."); + return false; + } + logger.trace("item.getItemMeta().hasLore()" + item.getItemMeta().hasLore()); + return item.getItemMeta().hasLore(); + } + logger.debug("isSignPost is false."); + return false; + } + + public boolean isStorageSign(Block block) { + logger.debug("isStorageSign(Block):Start"); + + logger.trace("block.getType(): " + block.getType()); + logger.trace("isSignPost(block.getType()): " + isSignPost(block.getType())); + logger.trace("isWallSign(block.getType()) :" + isWallSign(block.getType())); + if (isSignPost(block.getType()) || isWallSign(block.getType())) { + logger.debug("This Block is Sign."); + Sign sign = (Sign) block.getState(); + + logger.trace("sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( + Side.FRONT).getLine(0).matches("StorageSign")); + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { + logger.debug("This Sign is StorageSign."); + return true; + } + } - logger.debug("This Block isn't StorageSign."); - return false; - } + logger.debug("This Block isn't StorageSign."); + return false; + } - public boolean isHorseEgg(ItemStack item){ - logger.debug("isHorseEgg: Start"); - if(item.getType() != Material.GHAST_SPAWN_EGG) { - logger.debug("This item isn't HorseEgg."); - return false; - } - if(item.getItemMeta().hasLore()) { - logger.debug("This item is HorseEgg."); - return true; - } + public boolean isHorseEgg(ItemStack item) { + logger.debug("isHorseEgg: Start"); + if (item.getType() != Material.GHAST_SPAWN_EGG) { + logger.debug("This item isn't HorseEgg."); + return false; + } + if (item.getItemMeta().hasLore()) { + logger.debug("This item is HorseEgg."); + return true; + } - logger.debug("This item isn't HorseEgg."); - return false; - } - - - @EventHandler - public void onPlayerInteract(PlayerInteractEvent event) { - logger.debug("onPlayerInteract: Start"); - Player player = event.getPlayer(); - Block block; - - logger.trace("event.useInteractedBlock() == Result.DENY :" + (event.useInteractedBlock() == Result.DENY )); - logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() == Action.RIGHT_CLICK_AIR)); - //手持ちがブロックだと叩いた看板を取得できないことがあるとか - if (event.useInteractedBlock() == Result.DENY && event.getAction() == Action.RIGHT_CLICK_AIR) { - try { - logger.debug("try getTargetBlock."); - block = player.getTargetBlock((Set) null, 3); - } catch (IllegalStateException ex) { - java.util.logging.Logger log = logger.getLogger(); - log.log(Level.SEVERE, "getTargetBlock is Error. Trace", ex); - return; - } - } else { - logger.debug("ClickedBlock :" + event.getClickedBlock()); - block = event.getClickedBlock(); - } - logger.trace("block == null:" + (block == null)); - if (block == null) { - logger.debug("block is null."); - return; - } + logger.debug("This item isn't HorseEgg."); + return false; + } + + + @EventHandler + public void onPlayerInteract(PlayerInteractEvent event) { + logger.debug("onPlayerInteract: Start"); + Player player = event.getPlayer(); + Block block; + + logger.trace("event.useInteractedBlock() == Result.DENY :" + (event.useInteractedBlock() + == Result.DENY)); + logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() + == Action.RIGHT_CLICK_AIR)); + //手持ちがブロックだと叩いた看板を取得できないことがあるとか + if (event.useInteractedBlock() == Result.DENY && event.getAction() == Action.RIGHT_CLICK_AIR) { + try { + logger.debug("try getTargetBlock."); + block = player.getTargetBlock((Set) null, 3); + } catch (IllegalStateException ex) { + java.util.logging.Logger log = logger.getLogger(); + log.log(Level.SEVERE, "getTargetBlock is Error. Trace", ex); + return; + } + } else { + logger.debug("ClickedBlock :" + event.getClickedBlock()); + block = event.getClickedBlock(); + } + logger.trace("block == null:" + (block == null)); + if (block == null) { + logger.debug("block is null."); + return; + } - logger.trace("player.getGameMode() == GameMode.SPECTATOR:" + (player.getGameMode() == GameMode.SPECTATOR)); - if(player.getGameMode() == GameMode.SPECTATOR) { - logger.debug("UserGameMode is Spectator."); - return; - } + logger.trace("player.getGameMode() == GameMode.SPECTATOR:" + (player.getGameMode() + == GameMode.SPECTATOR)); + if (player.getGameMode() == GameMode.SPECTATOR) { + logger.debug("UserGameMode is Spectator."); + return; + } - logger.trace("event.getAction():" + event.getAction()); - logger.trace("event.getAction() == Action.RIGHT_CLICK_BLOCK:" + (event.getAction() == Action.RIGHT_CLICK_BLOCK)); - logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() == Action.RIGHT_CLICK_AIR)); - if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR) { - logger.debug("UserAction is RIGHT_CLICK_BLOCK or RIGHT_CLICK_AIR"); + logger.trace("event.getAction():" + event.getAction()); + logger.trace("event.getAction() == Action.RIGHT_CLICK_BLOCK:" + (event.getAction() + == Action.RIGHT_CLICK_BLOCK)); + logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() + == Action.RIGHT_CLICK_AIR)); + if (event.getAction() == Action.RIGHT_CLICK_BLOCK + || event.getAction() == Action.RIGHT_CLICK_AIR) { + logger.debug("UserAction is RIGHT_CLICK_BLOCK or RIGHT_CLICK_AIR"); + + if (!isStorageSign(block)) { + logger.debug("This Block not StorageSign."); + return; + } + if (event.getHand() == EquipmentSlot.OFF_HAND) { + logger.debug("This hand is OFF_HAND."); + //一応 + return; + } + event.setUseItemInHand(Result.DENY); + event.setUseInteractedBlock(Result.DENY); + + logger.trace("!player.hasPermission(\"storagesign.use\") + " + !player.hasPermission( + "storagesign.use")); + if (!player.hasPermission("storagesign.use")) { + logger.debug("This User hasn't permission.storagesign.use"); + player.sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.setCancelled(true); + return; + } + Sign sign = (Sign) block.getState(); + StorageSign storageSign = new StorageSign(sign, block.getType(), logger); + ItemStack itemMainHand = event.getItem(); + Material mat; + + logger.trace("sign:" + sign); + logger.trace("storageSign:" + storageSign); + logger.trace("itemMainHand:" + itemMainHand); + logger.trace("storageSign.getMaterial() == null:" + (storageSign.getMaterial() == null)); + logger.trace("storageSign.getMaterial() == Material.AIR:" + (storageSign.getMaterial() + == Material.AIR)); + //アイテム登録 + if (storageSign.getMaterial() == null || storageSign.getMaterial() == Material.AIR) { + logger.debug("SS Material Regist."); + logger.trace("itemMainHand:" + itemMainHand); + logger.trace("itemMainHand == null:" + (itemMainHand == null)); + if (itemMainHand == null) { + logger.debug("User MainHand is Null."); + //申し訳ないが素手はNG + return; + } + mat = itemMainHand.getType(); + logger.trace("isStorageSign(itemMainHand):" + isStorageSign(itemMainHand)); + logger.trace("isHorseEgg(itemMainHand):" + isHorseEgg(itemMainHand)); + logger.trace("mat:" + mat); + if (isStorageSign(itemMainHand)) { + logger.debug("main hand has StorageSign."); + storageSign.setMaterial(mat); + storageSign.setDamage((short) 1); + } else if (isHorseEgg(itemMainHand)) { + logger.debug("main hand has HorseEgg."); + storageSign.setMaterial(Material.END_PORTAL); + storageSign.setDamage((short) 1); + } else if (mat == Material.STONE_SLAB) { + logger.debug("main hand has STONE_SLAB."); + storageSign.setMaterial(mat); + storageSign.setDamage((short) 1); + } else if (mat == Material.POTION || mat == Material.SPLASH_POTION + || mat == Material.LINGERING_POTION) { + logger.debug("main hand has PotionSeries."); + storageSign.setMaterial(mat); + PotionMeta potionMeta = (PotionMeta) itemMainHand.getItemMeta(); + PotionType pot = potionMeta.getBasePotionType(); + storageSign.setDamage(Short.parseShort(PotionInfo.getPotionTypeCode(pot))); + storageSign.setPotion(pot); + } else if (mat == Material.ENCHANTED_BOOK) { + logger.debug("main hand has EnchantedBook."); + EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) itemMainHand.getItemMeta(); + if (enchantMeta.getStoredEnchants().size() == 1) { + Enchantment ench = enchantMeta.getStoredEnchants().keySet() + .toArray(new Enchantment[0])[0]; + storageSign.setMaterial(mat); + storageSign.setDamage((short) enchantMeta.getStoredEnchantLevel(ench)); + storageSign.setEnchant(ench); + } + } else if (mat == Material.FIREWORK_ROCKET) { + logger.debug("main hand has FireRocket."); + storageSign.setMaterial(mat); + FireworkMeta fireworkMeta = (FireworkMeta) itemMainHand.getItemMeta(); + storageSign.setDamage((short) fireworkMeta.getPower()); + } else if (mat == Material.WHITE_BANNER) { + logger.debug("main hand has WhiteBanner."); + storageSign.setMaterial(mat); + BannerMeta bannerMeta = (BannerMeta) itemMainHand.getItemMeta(); + if (bannerMeta.getPatterns().size() == 8) { + ominousBannerMeta = bannerMeta;//襲撃バナー登録 + storageSign.setDamage((short) 8); + } + } else { + logger.debug("main hand has " + mat); + storageSign.setMaterial(mat); + var meta = itemMainHand.getItemMeta(); + + logger.trace("meta instanceof Damageable dam" + (meta instanceof Damageable dam)); + if (meta instanceof Damageable dam) { + logger.debug("This Item has Damage.damage:" + dam.getDamage()); + storageSign.setDamage((short) dam.getDamage()); + } + } - if (!isStorageSign(block)) { - logger.debug("This Block not StorageSign."); - return; - } - if(event.getHand() == EquipmentSlot.OFF_HAND) { - logger.debug("This hand is OFF_HAND."); - //一応 - return; - } - event.setUseItemInHand(Result.DENY); - event.setUseInteractedBlock(Result.DENY); - - logger.trace("!player.hasPermission(\"storagesign.use\") + " + !player.hasPermission("storagesign.use")); - if (!player.hasPermission("storagesign.use")) { - logger.debug("This User hasn't permission.storagesign.use"); - player.sendMessage(ChatColor.RED + config.getString("no-permisson")); - event.setCancelled(true); - return; - } - Sign sign = (Sign) block.getState(); - StorageSign storageSign = new StorageSign(sign,block.getType(), logger); - ItemStack itemMainHand = event.getItem(); - Material mat; - - logger.trace("sign:" + sign); - logger.trace("storageSign:" + storageSign); - logger.trace("itemMainHand:" + itemMainHand); - logger.trace("storageSign.getMaterial() == null:" + (storageSign.getMaterial() == null)); - logger.trace("storageSign.getMaterial() == Material.AIR:" + (storageSign.getMaterial() == Material.AIR)); - //アイテム登録 - if (storageSign.getMaterial() == null || storageSign.getMaterial() == Material.AIR) { - logger.debug("SS Material Regist."); - logger.trace("itemMainHand:" + itemMainHand); - logger.trace("itemMainHand == null:" + (itemMainHand == null)); - if(itemMainHand == null) { - logger.debug("User MainHand is Null."); - //申し訳ないが素手はNG - return; - } - mat = itemMainHand.getType(); - logger.trace("isStorageSign(itemMainHand):" + isStorageSign(itemMainHand)); - logger.trace("isHorseEgg(itemMainHand):" + isHorseEgg(itemMainHand)); - logger.trace("mat:" + mat); - if (isStorageSign(itemMainHand)) { - logger.debug("main hand has StorageSign."); - storageSign.setMaterial(mat); - storageSign.setDamage((short) 1); - } - else if (isHorseEgg(itemMainHand)){ - logger.debug("main hand has HorseEgg."); - storageSign.setMaterial(Material.END_PORTAL); - storageSign.setDamage((short) 1); - } - else if(mat == Material.STONE_SLAB){ - logger.debug("main hand has STONE_SLAB."); - storageSign.setMaterial(mat); - storageSign.setDamage((short) 1); - } - else if (mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) - { - logger.debug("main hand has PotionSeries."); - storageSign.setMaterial(mat); - PotionMeta potionMeta = (PotionMeta)itemMainHand.getItemMeta(); - PotionType pot = potionMeta.getBasePotionType(); - storageSign.setDamage(Short.parseShort(PotionInfo.getPotionTypeCode(pot))); - storageSign.setPotion(pot); - } - else if (mat == Material.ENCHANTED_BOOK) - { - logger.debug("main hand has EnchantedBook."); - EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta)itemMainHand.getItemMeta(); - if(enchantMeta.getStoredEnchants().size() == 1) { - Enchantment ench = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - storageSign.setMaterial(mat); - storageSign.setDamage((short) enchantMeta.getStoredEnchantLevel(ench)); - storageSign.setEnchant(ench); - } - }else if(mat == Material.FIREWORK_ROCKET){ - logger.debug("main hand has FireRocket."); - storageSign.setMaterial(mat); - FireworkMeta fireworkMeta = (FireworkMeta)itemMainHand.getItemMeta(); - storageSign.setDamage((short) fireworkMeta.getPower()); - } - else if(mat == Material.WHITE_BANNER){ - logger.debug("main hand has WhiteBanner."); - storageSign.setMaterial(mat); - BannerMeta bannerMeta = (BannerMeta)itemMainHand.getItemMeta(); - if(bannerMeta.getPatterns().size() == 8) { - ominousBannerMeta = bannerMeta;//襲撃バナー登録 - storageSign.setDamage((short) 8); + logger.debug("SignTextUpdate."); + for (int i = 0; i < 4; i++) { + logger.trace("[i]:" + i + ". signText:" + storageSign.getSigntext(i)); + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } + sign.update(); + + logger.debug("onPlayerInteract: End"); + return; + } + + if (isStorageSign(itemMainHand)) { + //看板合成 + StorageSign itemSign = new StorageSign(itemMainHand, logger); + if (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean( + "manual-import")) { + storageSign.addAmount(itemSign.getAmount() * itemSign.getStackSize()); + itemSign.setAmount(0); + player.getInventory().setItemInMainHand(itemSign.getStorageSign()); + } else if (itemSign.isEmpty() && storageSign.getMaterial() == itemSign.getSmat() + && storageSign.getDamage() == 1 && config.getBoolean("manual-import")) { + //空看板収納 + if (player.isSneaking()) { + storageSign.addAmount(itemMainHand.getAmount()); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { + for (int i = 0; i < player.getInventory().getSize(); i++) { + ItemStack item = player.getInventory().getItem(i); + if (storageSign.isSimilar(item)) { + storageSign.addAmount(item.getAmount()); + player.getInventory().clear(i); + } + } } - } - else - { - logger.debug("main hand has " + mat); - storageSign.setMaterial(mat); - var meta = itemMainHand.getItemMeta(); - - logger.trace("meta instanceof Damageable dam" + (meta instanceof Damageable dam)); - if (meta instanceof Damageable dam) { - logger.debug("This Item has Damage.damage:" + dam.getDamage()); - storageSign.setDamage((short) dam.getDamage()); + } else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() + && config.getBoolean("manual-export")) { + //中身分割機能 + itemSign.setMaterial(storageSign.getMaterial()); + itemSign.setDamage(storageSign.getDamage()); + itemSign.setEnchant(storageSign.getEnchant()); + itemSign.setPotion(storageSign.getPotion()); + + int limit = config.getInt("divide-limit"); + + if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { + itemSign.setAmount(limit); + } else { + itemSign.setAmount(storageSign.getAmount() / (itemSign.getStackSize() + 1)); } - } - - logger.debug("SignTextUpdate."); - for (int i=0; i<4; i++) { - logger.trace("[i]:" + i + ". signText:" + storageSign.getSigntext(i)); + player.getInventory().setItemInMainHand(itemSign.getStorageSign()); + storageSign.setAmount(storageSign.getAmount() - (itemSign.getStackSize() + * itemSign.getAmount()));//余りは看板に引き受けてもらう + } + for (int i = 0; i < 4; i++) { sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } - sign.update(); - - logger.debug("onPlayerInteract: End"); - return; - } + sign.update(); + return; + } - if (isStorageSign(itemMainHand)) { - //看板合成 - StorageSign itemSign = new StorageSign(itemMainHand, logger); - if (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean("manual-import")) { - storageSign.addAmount(itemSign.getAmount() * itemSign.getStackSize()); - itemSign.setAmount(0); - player.getInventory().setItemInMainHand(itemSign.getStorageSign()); - }//空看板収納 - else if (itemSign.isEmpty() && storageSign.getMaterial() == itemSign.getSmat() && storageSign.getDamage() == 1 && config.getBoolean("manual-import")) { - if (player.isSneaking() ) { - storageSign.addAmount(itemMainHand.getAmount()); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } else for (int i=0; i itemMainHand.getAmount() && config.getBoolean("manual-export")) { - itemSign.setMaterial(storageSign.getMaterial()); - itemSign.setDamage(storageSign.getDamage()); - itemSign.setEnchant(storageSign.getEnchant()); - itemSign.setPotion(storageSign.getPotion()); - - int limit = config.getInt("divide-limit"); - - if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) itemSign.setAmount(limit); - else itemSign.setAmount(storageSign.getAmount() / (itemSign.getStackSize() + 1)); - player.getInventory().setItemInMainHand(itemSign.getStorageSign()); - storageSign.setAmount(storageSign.getAmount() - (itemSign.getStackSize() * itemSign.getAmount()));//余りは看板に引き受けてもらう } - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - sign.update(); - return; - } - //ここから搬入 - if (storageSign.isSimilar(itemMainHand)) { - if (!config.getBoolean("manual-import")) return; - if (player.isSneaking()) { - storageSign.addAmount(itemMainHand.getAmount()); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - if(isDye(itemMainHand)) sign.getSide(Side.FRONT).setColor(getDyeColor(itemMainHand)); //同色用 - if(isSac(itemMainHand)) sign.getSide(Side.FRONT).setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 - } else for (int i=0; i max) { - item.setAmount(max); - storageSign.addAmount(-max); - } else { - item.setAmount(storageSign.getAmount()); - storageSign.setAmount(0); - } - - Location loc = player.getLocation(); - loc.setY(loc.getY() + 0.5); - player.getWorld().dropItem(loc, item); - } + } + ItemStack item = storageSign.getContents(); + int max = item.getMaxStackSize(); + + if (player.isSneaking()) { + storageSign.addAmount(-1); + } else if (storageSign.getAmount() > max) { + item.setAmount(max); + storageSign.addAmount(-max); + } else { + item.setAmount(storageSign.getAmount()); + storageSign.setAmount(0); + } - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - sign.update(); - } + Location loc = player.getLocation(); + loc.setY(loc.getY() + 0.5); + player.getWorld().dropItem(loc, item); + } + + for (int i = 0; i < 4; i++) { + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } + sign.update(); } + } - @EventHandler - public void onSignChange(SignChangeEvent event) { - if (event.isCancelled()) return; + @EventHandler + public void onSignChange(SignChangeEvent event) { + if (event.isCancelled()) { + return; + } - // バックの場合、キャンセルイベントを発行して終了する - if(event.getSide().equals(Side.BACK) ){ - event.setCancelled(true); + // バックの場合、キャンセルイベントを発行して終了する + if (event.getSide().equals(Side.BACK)) { + event.setCancelled(true); + return; + } + Sign sign = (Sign) event.getBlock().getState(); + + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign"))/*変更拒否*/ { + event.setLine(0, sign.getSide(Side.FRONT).getLine(0)); + event.setLine(1, sign.getSide(Side.FRONT).getLine(1)); + event.setLine(2, sign.getSide(Side.FRONT).getLine(2)); + event.setLine(3, sign.getSide(Side.FRONT).getLine(3)); + sign.update(); + } else if (event.getLine(0).equalsIgnoreCase("storagesign"))/*書き込んで生成禁止*/ { + if (event.getPlayer().hasPermission("storagesign.create")) { + event.setLine(0, "StorageSign"); + sign.update(); + } else { + event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.setCancelled(true); + } + } + } + + @EventHandler(priority = EventPriority.HIGH) + public void onBlockBreak(BlockBreakEvent event) { + if (event.isCancelled()) { return; } - Sign sign = (Sign) event.getBlock().getState(); - - if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign"))/*変更拒否*/ { - event.setLine(0, sign.getSide(Side.FRONT).getLine(0)); - event.setLine(1, sign.getSide(Side.FRONT).getLine(1)); - event.setLine(2, sign.getSide(Side.FRONT).getLine(2)); - event.setLine(3, sign.getSide(Side.FRONT).getLine(3)); - sign.update(); - } else if (event.getLine(0).equalsIgnoreCase("storagesign"))/*書き込んで生成禁止*/ { - if (event.getPlayer().hasPermission("storagesign.create")) { - event.setLine(0, "StorageSign"); - sign.update(); - } else { - event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); - event.setCancelled(true); - } - } + Block block = event.getBlock(); + Map breakSignMap = new HashMap<>(); + if (isStorageSign(block)) { + breakSignMap.put(block.getLocation(), + new StorageSign((Sign) block.getState(), block.getType(), logger)); + } + + for (int i = 0; i < 5; i++) {//東西南北で判定 + BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, + BlockFace.WEST}; + block = event.getBlock().getRelative(face[i]); + if (i == 0 && isSignPost(block) && isStorageSign(block)) { + breakSignMap.put(block.getLocation(), + new StorageSign((Sign) block.getState(), block.getType(), logger)); + } else if (isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] + && isStorageSign(block)) { + breakSignMap.put(block.getLocation(), + new StorageSign((Sign) block.getState(), block.getType(), logger)); + } + } + if (breakSignMap.isEmpty()) { + return; + } + if (!event.getPlayer().hasPermission("storagesign.break")) { + event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.setCancelled(true); + return; } - @EventHandler(priority = EventPriority.HIGH) - public void onBlockBreak(BlockBreakEvent event) { - if (event.isCancelled()) return; - Block block = event.getBlock(); - Map breakSignMap = new HashMap<>(); - if (isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); - - for (int i=0; i<5; i++) {//東西南北で判定 - BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; - block = event.getBlock().getRelative(face[i]); - if (i==0 && isSignPost(block) && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); - else if(isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) breakSignMap.put(block.getLocation(), new StorageSign((Sign)block.getState(),block.getType(), logger)); - } - if (breakSignMap.isEmpty()) return; - if (!event.getPlayer().hasPermission("storagesign.break")) { - event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); - event.setCancelled(true); - return; - } + for (Location loc : breakSignMap.keySet()) { + StorageSign sign = breakSignMap.get(loc); + Location loc2 = loc; + loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる + loc.getWorld().dropItem(loc2, sign.getStorageSign()); + loc.getBlock().setType(Material.AIR); + } + } - for (Location loc : breakSignMap.keySet()) { - StorageSign sign = breakSignMap.get(loc); - Location loc2 = loc; - loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる - loc.getWorld().dropItem(loc2, sign.getStorageSign()); - loc.getBlock().setType(Material.AIR); - } + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) { + if (event.isCancelled() || !isStorageSign(event.getItemInHand())) { + return; + } + Player player = event.getPlayer(); + if (!player.hasPermission("storagesign.place")) { + player.sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.setCancelled(true); + return; } + StorageSign storageSign = new StorageSign(event.getItemInHand(), logger); + Sign sign = (Sign) event.getBlock().getState(); + for (int i = 0; i < 4; i++) { + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } - @EventHandler - public void onBlockPlace(BlockPlaceEvent event) { - if (event.isCancelled() || !isStorageSign(event.getItemInHand())) return; - Player player = event.getPlayer(); - if (!player.hasPermission("storagesign.place")) { - player.sendMessage(ChatColor.RED + config.getString("no-permisson")); - event.setCancelled(true); - return; - } - StorageSign storageSign = new StorageSign(event.getItemInHand(), logger); - Sign sign = (Sign)event.getBlock().getState(); - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - - if(storageSign.getSmat() == Material.DARK_OAK_SIGN ) { - sign.getSide(Side.FRONT).setColor(DyeColor.WHITE);//文字色を白くする - } - sign.update(); - player.closeInventory();//時差発動が必要らしい + if (storageSign.getSmat() == Material.DARK_OAK_SIGN) { + sign.getSide(Side.FRONT).setColor(DyeColor.WHITE);//文字色を白くする } - - - @EventHandler - public void onItemMove(InventoryMoveItemEvent event) { - if (event.isCancelled()) return; - BlockState[] blockInventory =new BlockState[2]; - Boolean flag = false; - Sign sign = null; - StorageSign storageSign = null; - ItemStack item = event.getItem(); - if (config.getBoolean("auto-import")) { - if (event.getDestination().getLocation() == null);//コンポスター用に生成された一時インベントリ - else if (event.getDestination().getHolder() instanceof Minecart);//何もしない - else if (event.getDestination().getHolder() instanceof DoubleChest) { - DoubleChest lc = (DoubleChest)event.getDestination().getHolder(); - blockInventory[0] = (BlockState) lc.getLeftSide(); - blockInventory[1] = (BlockState) lc.getRightSide(); - } else if(!(event.getDestination().getHolder() instanceof BlockState));//ブロック情報が取得できない場合も何もしない - else { - blockInventory[0] = (BlockState) event.getDestination().getHolder(); - } + sign.update(); + player.closeInventory();//時差発動が必要らしい + } - importLoop: - for (int j=0; j<2; j++) { - if (blockInventory[j] == null) break; - for (int i=0; i<5; i++) { - BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; - Block block = blockInventory[j].getBlock().getRelative(face[i]); - if (i==0 && isSignPost(block) && isStorageSign(block)) { - if(item.getType() == Material.WHITE_BANNER) { - // - //襲撃バナー用 - // - } - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(item)) { - flag = true; - break importLoop; - } - } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(item)) { - flag = true; - break importLoop; - } - } - } - } - //搬入先が見つかった(搬入するとは言ってない) - if (flag) importSign(sign, storageSign, item, event.getDestination()); - } - //搬出用にリセット - if (config.getBoolean("auto-export")) { - blockInventory[0] = null; - blockInventory[1] = null; - flag = false; - if (event.getSource().getLocation() == null);//一時インベントリ - else if (event.getSource().getHolder() instanceof Minecart); - else if (event.getSource().getHolder() instanceof DoubleChest) { - DoubleChest lc = (DoubleChest)event.getSource().getHolder(); - blockInventory[0] = (BlockState) lc.getLeftSide(); - blockInventory[1] = (BlockState) lc.getRightSide(); - } else if(!(event.getSource().getHolder() instanceof BlockState));//ブロック情報が取得できない時も何もしない - else { - blockInventory[0] = (BlockState) event.getSource().getHolder(); + @EventHandler + public void onItemMove(InventoryMoveItemEvent event) { + if (event.isCancelled()) { + return; + } + BlockState[] blockInventory = new BlockState[2]; + Boolean flag = false; + Sign sign = null; + StorageSign storageSign = null; + ItemStack item = event.getItem(); + if (config.getBoolean("auto-import")) { + if (event.getDestination().getLocation() == null){ + ;//コンポスター用に生成された一時インベントリ + } else if (event.getDestination().getHolder() instanceof Minecart){ + ;//何もしない + } else if (event.getDestination().getHolder() instanceof DoubleChest) { + DoubleChest lc = (DoubleChest) event.getDestination().getHolder(); + blockInventory[0] = (BlockState) lc.getLeftSide(); + blockInventory[1] = (BlockState) lc.getRightSide(); + } else if (!(event.getDestination().getHolder() instanceof BlockState)){ + ;//ブロック情報が取得できない場合も何もしない + } else { + blockInventory[0] = (BlockState) event.getDestination().getHolder(); + } + + importLoop: + for (int j = 0; j < 2; j++) { + if (blockInventory[j] == null) { + break; + } + for (int i = 0; i < 5; i++) { + BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, + BlockFace.WEST}; + Block block = blockInventory[j].getBlock().getRelative(face[i]); + if (i == 0 && isSignPost(block) && isStorageSign(block)) { + if (item.getType() == Material.WHITE_BANNER) { + // + //襲撃バナー用 + // } - - exportLoop: - for (int j=0; j<2; j++) { - if (blockInventory[j] == null) break; - for (int i=0; i<5; i++) { - BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; - Block block = blockInventory[j].getBlock().getRelative(face[i]); - if (i==0 && isSignPost(block) && isStorageSign(block)) { - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(item)) { - flag = true; - break exportLoop; - } - } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(item)) { - flag = true; - break exportLoop; - } - } - } - } - if (flag) exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(item)) { + flag = true; + break importLoop; + } + } else if (i != 0 && isWallSign(block) + && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(item)) { + flag = true; + break importLoop; + } + } } + } + //搬入先が見つかった(搬入するとは言ってない) + if (flag) { + importSign(sign, storageSign, item, event.getDestination()); + } } - private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv) { - //搬入 条件 1スタック以上アイテムが入っている - if (inv.containsAtLeast(item, item.getMaxStackSize())) { - inv.removeItem(item); - storageSign.addAmount(item.getAmount()); + //搬出用にリセット + if (config.getBoolean("auto-export")) { + blockInventory[0] = null; + blockInventory[1] = null; + flag = false; + if (event.getSource().getLocation() == null){ + ;//一時インベントリ + } else if (event.getSource().getHolder() instanceof Minecart){ + ; + } else if (event.getSource().getHolder() instanceof DoubleChest) { + DoubleChest lc = (DoubleChest) event.getSource().getHolder(); + blockInventory[0] = (BlockState) lc.getLeftSide(); + blockInventory[1] = (BlockState) lc.getRightSide(); + } else if (!(event.getSource().getHolder() instanceof BlockState)){ + ;//ブロック情報が取得できない時も何もしない + } else { + blockInventory[0] = (BlockState) event.getSource().getHolder(); + } + + exportLoop: + for (int j = 0; j < 2; j++) { + if (blockInventory[j] == null) { + break; + } + for (int i = 0; i < 5; i++) { + BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, + BlockFace.WEST}; + Block block = blockInventory[j].getBlock().getRelative(face[i]); + if (i == 0 && isSignPost(block) && isStorageSign(block)) { + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(item)) { + flag = true; + break exportLoop; + } + } else if (i != 0 && isWallSign(block) + && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(item)) { + flag = true; + break exportLoop; + } + } } - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - sign.update(); + } + if (flag) { + exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); + } } + } - //搬出先ブロックに枠指定があると事故る - private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv, Inventory dest) { - if (!inv.containsAtLeast(item, item.getMaxStackSize()) && storageSign.getAmount() >= item.getAmount()) { - int stacks = 0; - int amount = 0; - ItemStack[] contents = dest.getContents(); - - if(dest.getType() == InventoryType.BREWING){ - switch(item.getType()){ - case NETHER_WART://上 - case SUGAR: - case REDSTONE: - case GLOWSTONE_DUST: - case GUNPOWDER: - case RABBIT_FOOT: - case GLISTERING_MELON_SLICE: - case GOLDEN_CARROT: - case MAGMA_CREAM: - case GHAST_TEAR: - case SPIDER_EYE: - case FERMENTED_SPIDER_EYE: - case DRAGON_BREATH: - case PUFFERFISH: - case TURTLE_HELMET: - case PHANTOM_MEMBRANE: - if(inv.getLocation().getBlockY() > dest.getLocation().getBlockY()){//上から搬入 - if(contents[3] != null && !item.isSimilar(contents[3])) return;//他のアイテムが詰まってる - else break; - }else return; - - - case BLAZE_POWDER://横or上 - if(inv.getLocation().getBlockY() > dest.getLocation().getBlockY()){//上から搬入 - if(contents[3] != null && !item.isSimilar(contents[3])) return;//他のアイテムが詰まってる - else break; - }else if(inv.getLocation().getBlockY() == dest.getLocation().getBlockY()){//横 - if(contents[4] != null && contents[4].getAmount() == 64) return;//パウダー詰まり - else break; - }else return; - - case POTION: - case SPLASH_POTION: - case LINGERING_POTION://横or下 - if(inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()){ - if(contents[0] != null && contents[1] != null && contents[2] != null) return; - else break; - }else return; - default://ロスト回避 - return; - - } - - - }else if(dest.getType() == InventoryType.FURNACE || dest.getType() == InventoryType.BLAST_FURNACE || dest.getType() == InventoryType.SMOKER){ - if(inv.getLocation().getBlockY() > dest.getLocation().getBlockY()){//上から搬入 - if(contents[0] != null && !item.isSimilar(contents[0])) return;//他のアイテムが詰まってる - }else{//横から(下から) - if(!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) return;//燃料以外 or 他のアイテムが詰まってる - } - } - for(int i=0; i< contents.length; i++){//PANPANによるロスト回避 - if(item.isSimilar(contents[i])){ - stacks++; - amount += contents[i].getAmount(); - } - } - if(amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) return; - - - inv.addItem(item); - storageSign.addAmount(-item.getAmount()); - } - for (int i=0; i<4; i++) sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - sign.update(); + private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv) { + //搬入 条件 1スタック以上アイテムが入っている + if (inv.containsAtLeast(item, item.getMaxStackSize())) { + inv.removeItem(item); + storageSign.addAmount(item.getAmount()); } + for (int i = 0; i < 4; i++) { + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } + sign.update(); + } + + //搬出先ブロックに枠指定があると事故る + private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv, + Inventory dest) { + if (!inv.containsAtLeast(item, item.getMaxStackSize()) + && storageSign.getAmount() >= item.getAmount()) { + int stacks = 0; + int amount = 0; + ItemStack[] contents = dest.getContents(); + + if (dest.getType() == InventoryType.BREWING) { + switch (item.getType()) { + case NETHER_WART://上 + case SUGAR: + case REDSTONE: + case GLOWSTONE_DUST: + case GUNPOWDER: + case RABBIT_FOOT: + case GLISTERING_MELON_SLICE: + case GOLDEN_CARROT: + case MAGMA_CREAM: + case GHAST_TEAR: + case SPIDER_EYE: + case FERMENTED_SPIDER_EYE: + case DRAGON_BREATH: + case PUFFERFISH: + case TURTLE_HELMET: + case PHANTOM_MEMBRANE: + if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + if (contents[3] != null && !item.isSimilar(contents[3])) { + return;//他のアイテムが詰まってる + } else { + break; + } + } else { + return; + } + + case BLAZE_POWDER://横or上 + if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + if (contents[3] != null && !item.isSimilar(contents[3])) { + return;//他のアイテムが詰まってる + } else { + break; + } + } else if (inv.getLocation().getBlockY() == dest.getLocation().getBlockY()) {//横 + if (contents[4] != null && contents[4].getAmount() == 64) { + return;//パウダー詰まり + } else { + break; + } + } else { + return; + } + + case POTION: + case SPLASH_POTION: + case LINGERING_POTION://横or下 + if (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()) { + if (contents[0] != null && contents[1] != null && contents[2] != null) { + return; + } else { + break; + } + } else { + return; + } + default://ロスト回避 + return; - @EventHandler - public void onPlayerCraft(CraftItemEvent event) { - if (isStorageSign(event.getCurrentItem()) && !event.getWhoClicked().hasPermission("storagesign.craft")) { - ((CommandSender) event.getWhoClicked()).sendMessage(ChatColor.RED + config.getString("no-permisson")); - event.setCancelled(true); } + + + } else if (dest.getType() == InventoryType.FURNACE + || dest.getType() == InventoryType.BLAST_FURNACE + || dest.getType() == InventoryType.SMOKER) { + if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + if (contents[0] != null && !item.isSimilar(contents[0])) { + return;//他のアイテムが詰まってる + } + } else {//横から(下から) + if (!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) { + return;//燃料以外 or 他のアイテムが詰まってる + } + } + } + for (int i = 0; i < contents.length; i++) {//PANPANによるロスト回避 + if (item.isSimilar(contents[i])) { + stacks++; + amount += contents[i].getAmount(); + } + } + if (amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) { + return; + } + + inv.addItem(item); + storageSign.addAmount(-item.getAmount()); + } + for (int i = 0; i < 4; i++) { + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } + sign.update(); + } + + @EventHandler + public void onPlayerCraft(CraftItemEvent event) { + if (isStorageSign(event.getCurrentItem()) && !event.getWhoClicked() + .hasPermission("storagesign.craft")) { + ((CommandSender) event.getWhoClicked()).sendMessage( + ChatColor.RED + config.getString("no-permisson")); + event.setCancelled(true); } + } - @EventHandler - public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに投げ込まれたとき - if (event.isCancelled() || !config.getBoolean("auto-import")) return; - - InventoryHolder holder = event.getInventory().getHolder(); - if (holder instanceof BlockState) { - Sign sign = null; - StorageSign storageSign = null; - boolean flag = false; - for (int i=0; i<5; i++) { - BlockFace[] face = {BlockFace.UP,BlockFace.SOUTH,BlockFace.NORTH,BlockFace.EAST,BlockFace.WEST}; - Block block = ((BlockState)holder).getBlock().getRelative(face[i]); - if (i==0 && isSignPost(block) && isStorageSign(block)) { - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(event.getItem().getItemStack())) { - flag = true; - break; - } - } else if (i != 0 && isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) {//BlockFaceに変更?(めんどい) - sign = (Sign) block.getState(); - storageSign = new StorageSign(sign,block.getType(), logger); - if (storageSign.isSimilar(event.getItem().getItemStack())) { - flag = true; - break; - } - } - } - if (flag) importSign(sign, storageSign, event.getItem().getItemStack(), event.getInventory()); + @EventHandler + public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに投げ込まれたとき + if (event.isCancelled() || !config.getBoolean("auto-import")) { + return; + } + + InventoryHolder holder = event.getInventory().getHolder(); + if (holder instanceof BlockState) { + Sign sign = null; + StorageSign storageSign = null; + boolean flag = false; + for (int i = 0; i < 5; i++) { + BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, + BlockFace.WEST}; + Block block = ((BlockState) holder).getBlock().getRelative(face[i]); + if (i == 0 && isSignPost(block) && isStorageSign(block)) { + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(event.getItem().getItemStack())) { + flag = true; + break; + } + } else if (i != 0 && isWallSign(block) + && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign( + block)) {//BlockFaceに変更?(めんどい) + sign = (Sign) block.getState(); + storageSign = new StorageSign(sign, block.getType(), logger); + if (storageSign.isSimilar(event.getItem().getItemStack())) { + flag = true; + break; + } } + } + if (flag) { + importSign(sign, storageSign, event.getItem().getItemStack(), event.getInventory()); + } } + } - @EventHandler - public void onPlayerPickupItem(EntityPickupItemEvent event) { - if(event.isCancelled()) return; - if(event.getEntityType() == EntityType.PLAYER && config.getBoolean("autocollect")){ - Player player = (Player) event.getEntity(); - PlayerInventory playerInv = player.getInventory(); - ItemStack item = event.getItem().getItemStack(); - StorageSign storagesign = null; - //ここでは、エラーを出さずに無視する - if(!player.hasPermission("storagesign.autocollect")) return; - if(isStorageSign(playerInv.getItemInMainHand())){ - storagesign = new StorageSign(playerInv.getItemInMainHand(), logger); - if(storagesign.getContents() != null){ - - if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { - storagesign.addAmount(item.getAmount()); - - playerInv.removeItem(item);//1.9,10ではバグる? - playerInv.setItemInMainHand(storagesign.getStorageSign()); - player.updateInventory(); - //event.getItem().remove(); - //player.playSound(player.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.5f); - //event.setCancelled(true); - return; - } - } - }if(isStorageSign(playerInv.getItemInOffHand())){//メインハンドで回収されなかった時 - storagesign = new StorageSign(playerInv.getItemInOffHand(), logger); - if(storagesign.getContents() != null){ - - if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { - storagesign.addAmount(item.getAmount()); - playerInv.removeItem(item); - playerInv.setItemInOffHand(storagesign.getStorageSign()); - player.updateInventory(); - //event.getItem().remove(); - //player.playSound(player.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.5f); - //event.setCancelled(true); - return; - } - } - } - }//SSをプレイヤー以外拾えなくする - if(event.getEntityType() != EntityType.PLAYER){ - Item item = event.getItem(); - if(isStorageSign(item.getItemStack())){ - item.setPickupDelay(20);//毎tickキャンセルしてたら重そう - event.setCancelled(true); - } - } + @EventHandler + public void onPlayerPickupItem(EntityPickupItemEvent event) { + if (event.isCancelled()) { + return; + } + if (event.getEntityType() == EntityType.PLAYER && config.getBoolean("autocollect")) { + Player player = (Player) event.getEntity(); + PlayerInventory playerInv = player.getInventory(); + ItemStack item = event.getItem().getItemStack(); + StorageSign storagesign = null; + //ここでは、エラーを出さずに無視する + if (!player.hasPermission("storagesign.autocollect")) { + return; + } + if (isStorageSign(playerInv.getItemInMainHand())) { + storagesign = new StorageSign(playerInv.getItemInMainHand(), logger); + if (storagesign.getContents() != null) { + + if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) + && storagesign.getStackSize() == 1) { + storagesign.addAmount(item.getAmount()); + + playerInv.removeItem(item);//1.9,10ではバグる? + playerInv.setItemInMainHand(storagesign.getStorageSign()); + player.updateInventory(); + //event.getItem().remove(); + //player.playSound(player.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.5f); + //event.setCancelled(true); + return; + } + } + } + if (isStorageSign(playerInv.getItemInOffHand())) {//メインハンドで回収されなかった時 + storagesign = new StorageSign(playerInv.getItemInOffHand(), logger); + if (storagesign.getContents() != null) { + + if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) + && storagesign.getStackSize() == 1) { + storagesign.addAmount(item.getAmount()); + playerInv.removeItem(item); + playerInv.setItemInOffHand(storagesign.getStorageSign()); + player.updateInventory(); + //event.getItem().remove(); + //player.playSound(player.getLocation(), Sound.ENTITY_ITEM_PICKUP, 0.6f, 1.5f); + //event.setCancelled(true); + return; + } + } + } + }//SSをプレイヤー以外拾えなくする + if (event.getEntityType() != EntityType.PLAYER) { + Item item = event.getItem(); + if (isStorageSign(item.getItemStack())) { + item.setPickupDelay(20);//毎tickキャンセルしてたら重そう + event.setCancelled(true); + } } - - private boolean isSignPost(Block block) { - Material mat = block.getType(); - return isSignPost(mat); + } + + private boolean isSignPost(Block block) { + Material mat = block.getType(); + return isSignPost(mat); + } + + private boolean isWallSign(Block block) { + Material mat = block.getType(); + return isWallSign(mat); + } + + //看板も8種類になったし、mat版おいとく + private boolean isSignPost(Material mat) { + switch (mat) { + case OAK_SIGN: + case BIRCH_SIGN: + case SPRUCE_SIGN: + case JUNGLE_SIGN: + case ACACIA_SIGN: + case DARK_OAK_SIGN: + case CRIMSON_SIGN: + case WARPED_SIGN: + case MANGROVE_SIGN: + case CHERRY_SIGN: + case BAMBOO_SIGN: + return true; + default: } - - private boolean isWallSign(Block block) { - Material mat = block.getType(); - return isWallSign(mat); + return false; + } + + private boolean isWallSign(Material mat) { + switch (mat) { + case OAK_WALL_SIGN: + case BIRCH_WALL_SIGN: + case SPRUCE_WALL_SIGN: + case JUNGLE_WALL_SIGN: + case ACACIA_WALL_SIGN: + case DARK_OAK_WALL_SIGN: + case CRIMSON_WALL_SIGN: + case WARPED_WALL_SIGN: + case MANGROVE_WALL_SIGN: + case CHERRY_WALL_SIGN: + case BAMBOO_WALL_SIGN: + return true; + default: } - - //看板も8種類になったし、mat版おいとく - private boolean isSignPost(Material mat) { - switch(mat) { - case OAK_SIGN: - case BIRCH_SIGN: - case SPRUCE_SIGN: - case JUNGLE_SIGN: - case ACACIA_SIGN: - case DARK_OAK_SIGN: - case CRIMSON_SIGN: - case WARPED_SIGN: - case MANGROVE_SIGN: - case CHERRY_SIGN: - case BAMBOO_SIGN: - return true; - default: - } - return false; + return false; + } + + private boolean isDye(ItemStack item) { + Material mat = item.getType(); + switch (mat) { + case WHITE_DYE: + case ORANGE_DYE: + case MAGENTA_DYE: + case LIGHT_BLUE_DYE: + case YELLOW_DYE: + case LIME_DYE: + case PINK_DYE: + case GRAY_DYE: + case LIGHT_GRAY_DYE: + case CYAN_DYE: + case PURPLE_DYE: + case BLUE_DYE: + case BROWN_DYE: + case GREEN_DYE: + case RED_DYE: + case BLACK_DYE: + return true; + default: } - - private boolean isWallSign(Material mat) { - switch(mat) { - case OAK_WALL_SIGN: - case BIRCH_WALL_SIGN: - case SPRUCE_WALL_SIGN: - case JUNGLE_WALL_SIGN: - case ACACIA_WALL_SIGN: - case DARK_OAK_WALL_SIGN: - case CRIMSON_WALL_SIGN: - case WARPED_WALL_SIGN: - case MANGROVE_WALL_SIGN: - case CHERRY_WALL_SIGN: - case BAMBOO_WALL_SIGN: - return true; - default: - } - return false; - } - - private boolean isDye(ItemStack item) { - Material mat = item.getType(); - switch(mat) { - case WHITE_DYE: - case ORANGE_DYE: - case MAGENTA_DYE: - case LIGHT_BLUE_DYE: - case YELLOW_DYE: - case LIME_DYE: - case PINK_DYE: - case GRAY_DYE: - case LIGHT_GRAY_DYE: - case CYAN_DYE: - case PURPLE_DYE: - case BLUE_DYE: - case BROWN_DYE: - case GREEN_DYE: - case RED_DYE: - case BLACK_DYE: - return true; - default: - } - return false; + return false; + } + + private DyeColor getDyeColor(ItemStack item) { + Material mat = item.getType(); + switch (mat) { + case WHITE_DYE: + return DyeColor.WHITE; + case ORANGE_DYE: + return DyeColor.ORANGE; + case MAGENTA_DYE: + return DyeColor.MAGENTA; + case LIGHT_BLUE_DYE: + return DyeColor.LIGHT_BLUE; + case YELLOW_DYE: + return DyeColor.YELLOW; + case LIME_DYE: + return DyeColor.LIME; + case PINK_DYE: + return DyeColor.PINK; + case GRAY_DYE: + return DyeColor.GRAY; + case LIGHT_GRAY_DYE: + return DyeColor.LIGHT_GRAY; + case CYAN_DYE: + return DyeColor.CYAN; + case PURPLE_DYE: + return DyeColor.PURPLE; + case BLUE_DYE: + return DyeColor.BLUE; + case BROWN_DYE: + return DyeColor.BROWN; + case GREEN_DYE: + return DyeColor.GREEN; + case RED_DYE: + return DyeColor.RED; + case BLACK_DYE: + return DyeColor.BLACK; + default: } - - private DyeColor getDyeColor(ItemStack item) { - Material mat = item.getType(); - switch(mat) { - case WHITE_DYE: - return DyeColor.WHITE; - case ORANGE_DYE: - return DyeColor.ORANGE; - case MAGENTA_DYE: - return DyeColor.MAGENTA; - case LIGHT_BLUE_DYE: - return DyeColor.LIGHT_BLUE; - case YELLOW_DYE: - return DyeColor.YELLOW; - case LIME_DYE: - return DyeColor.LIME; - case PINK_DYE: - return DyeColor.PINK; - case GRAY_DYE: - return DyeColor.GRAY; - case LIGHT_GRAY_DYE: - return DyeColor.LIGHT_GRAY; - case CYAN_DYE: - return DyeColor.CYAN; - case PURPLE_DYE: - return DyeColor.PURPLE; - case BLUE_DYE: - return DyeColor.BLUE; - case BROWN_DYE: - return DyeColor.BROWN; - case GREEN_DYE: - return DyeColor.GREEN; - case RED_DYE: - return DyeColor.RED; - case BLACK_DYE: - return DyeColor.BLACK; - default: - } - return null; + return null; + } + + private boolean isSac(ItemStack item) { + Material mat = item.getType(); + switch (mat) { + case INK_SAC: + case GLOW_INK_SAC: + return true; + default: } - - private boolean isSac(ItemStack item) { - Material mat = item.getType(); - switch(mat) { - case INK_SAC: - case GLOW_INK_SAC: - return true; - default: - } - return false; - } - - private boolean isGlowSac(ItemStack item) { - Material mat = item.getType(); - switch(mat) { - case INK_SAC: - return false; - case GLOW_INK_SAC: - return true; - default: - } - return false; - } + return false; + } + + private boolean isGlowSac(ItemStack item) { + Material mat = item.getType(); + switch (mat) { + case INK_SAC: + return false; + case GLOW_INK_SAC: + return true; + default: + } + return false; + } } \ No newline at end of file From b5281b4888d062a7c310644ddbd45155698085b3 Mon Sep 17 00:00:00 2001 From: fishfillet-krm <163864054+fishfillet-krm@users.noreply.github.com> Date: Sat, 13 Apr 2024 23:50:23 +0900 Subject: [PATCH 24/82] =?UTF-8?q?StorageSign.java=20=E3=81=AB=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=82=92=E5=9F=8B=E3=82=81=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index b821066..2b60cd9 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -65,17 +65,21 @@ public class StorageSign { * */ public StorageSign(ItemStack item, Logger logger) { + logger.debug("public StorageSign(ItemStack item, Logger logger)"); this._logger = logger; String[] str = item.getItemMeta().getLore().get(0).split(" "); if (str[0].matches("Empty")) { + logger.debug("str[0].matches(\"Empty\")"); this.isEmpty = true; } else { + logger.debug("(str[0].matches(\"Empty\")_else"); this.mat = getMaterial(str[0].split(":")[0]); if (this.mat == Material.ENCHANTED_BOOK) { + logger.debug("this.mat == Material.ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -83,6 +87,7 @@ public StorageSign(ItemStack item, Logger logger) { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { + logger.debug("this.mat == (S.L)POTION"); // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2], logger); @@ -91,11 +96,14 @@ public StorageSign(ItemStack item, Logger logger) { this.pot = pi.getPotionType(); } else if (str[0].contains(":")) { + logger.debug("str[0].contains(\":\")"); this.damage = NumberConversions.toShort(str[0].split(":")[1]); } else if (this.mat == Material.STONE_SLAB) { + logger.debug("distinction1(this.mat == Material.STONE_SLAB)"); //1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; + logger.debug("this.mat = Material.SMOOTH_STONE_SLAB"); } this.amount = NumberConversions.toInt(str[1]); @@ -114,6 +122,7 @@ public StorageSign(ItemStack item, Logger logger) { * */ public StorageSign(Sign sign, Material signmat, Logger logger) { + logger.debug("public StorageSign(Sign sign, Material signmat, Logger logger)"); //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); @@ -121,6 +130,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { || this.mat == Material.AIR); if (this.mat == Material.ENCHANTED_BOOK) { + logger.debug("this.mat == Material.ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -128,6 +138,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { + logger.debug("this.mat == (S.L)POTION"); // PotionInfo pi = new PotionInfo(mat, line2); PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2], logger); this.mat = pi.getMaterial(); @@ -135,11 +146,14 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.pot = pi.getPotionType(); } else if (line2.length == 2) { + logger.debug("line2.length == 2"); this.damage = NumberConversions.toShort(line2[1]); } else if (this.mat == Material.STONE_SLAB) { + logger.debug("distinction2(this.mat == Material.STONE_SLAB)"); //1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; + logger.debug("this.mat = Material.SMOOTH_STONE_SLAB"); } @@ -149,39 +163,51 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { //壁掛け看板のチェック if (signmat == Material.OAK_WALL_SIGN) { + logger.debug("signmat == Material.OAK_WALL_SIGN"); this.smat = Material.OAK_SIGN; } else if (signmat == Material.BIRCH_WALL_SIGN) { + logger.debug("signmat == Material.BIRCH_WALL_SIGN"); this.smat = Material.BIRCH_SIGN; } else if (signmat == Material.SPRUCE_WALL_SIGN) { + logger.debug("signmat == Material.SPRUCE_WALL_SIGN"); this.smat = Material.SPRUCE_SIGN; } else if (signmat == Material.JUNGLE_WALL_SIGN) { + logger.debug("signmat == Material.JUNGLE_WALL_SIGN"); this.smat = Material.JUNGLE_SIGN; } else if (signmat == Material.ACACIA_WALL_SIGN) { + logger.debug("signmat == Material.ACACIA_WALL_SIGN"); this.smat = Material.ACACIA_SIGN; } else if (signmat == Material.DARK_OAK_WALL_SIGN) { + logger.debug("signmat == Material.DARK_OAK_WALL_SIGN"); this.smat = Material.DARK_OAK_SIGN; } else if (signmat == Material.CRIMSON_WALL_SIGN) { + logger.debug("signmat == Material.CRIMSON_WALL_SIGN"); this.smat = Material.CRIMSON_SIGN; } else if (signmat == Material.WARPED_WALL_SIGN) { + logger.debug("signmat == Material.WARPED_WALL_SIGN"); this.smat = Material.WARPED_SIGN; } else if (signmat == Material.MANGROVE_WALL_SIGN) { + logger.debug("signmat == Material.MANGROVE_WALL_SIGN"); this.smat = Material.MANGROVE_SIGN; } else if (signmat == Material.CHERRY_WALL_SIGN) { + logger.debug("signmat == Material.CHERRY_WALL_SIGN"); this.smat = Material.CHERRY_SIGN; } else if (signmat == Material.BAMBOO_WALL_SIGN) { + logger.debug("signmat == Material.BAMBOO_WALL_SIGN"); this.smat = Material.BAMBOO_SIGN; } else { + logger.debug("this.smat = signmat"); this.smat = signmat; } @@ -223,6 +249,7 @@ public static ItemStack emptySign(Material smat) { * @return Material */ protected Material getMaterial(String str) { + _logger.debug("protected Material getMaterial(String str)"); // if (str.matches("EmptySign")) { // return Material.END_PORTAL; // } @@ -232,85 +259,106 @@ protected Material getMaterial(String str) { //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; if (str.matches("")) { + _logger.debug("str.matches(\"\""); return Material.AIR; } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { + _logger.debug("str.matches(\"EmptySign\"or\"OakStorageSign\""); this.damage = 1; return Material.OAK_SIGN; } else if (str.matches("SpruceStorageSign")) { + _logger.debug("str.matches(\"SpruceStorageSign\""); this.damage = 1; return Material.SPRUCE_SIGN; } else if (str.matches("BirchStorageSign")) { + _logger.debug("str.matches(\"BirchStorageSign\""); this.damage = 1; return Material.BIRCH_SIGN; } else if (str.matches("JungleStorageSign")) { + _logger.debug("str.matches(\"JungleStorageSign\""); this.damage = 1; return Material.JUNGLE_SIGN; } else if (str.matches("AcaciaStorageSign")) { + _logger.debug("str.matches(\"AcaciaStorageSign\""); this.damage = 1; return Material.ACACIA_SIGN; } else if (str.matches("DarkOakStorageSign")) { + _logger.debug("str.matches(\"DarkOakStorageSign\""); this.damage = 1; return Material.DARK_OAK_SIGN; } else if (str.matches("CrimsonStorageSign")) { + _logger.debug("str.matches(\"CrimsonStorageSign\""); this.damage = 1; return Material.CRIMSON_SIGN; } else if (str.matches("WarpedStorageSign")) { + _logger.debug("str.matches(\"WarpedStorageSign\""); this.damage = 1; return Material.WARPED_SIGN; } else if (str.matches("MangroveStorageSign")) { + _logger.debug("str.matches(\"MangroveStorageSign\""); this.damage = 1; return Material.MANGROVE_SIGN; } else if (str.matches("CherryStorageSign")) { + _logger.debug("str.matches(\"CherryStorageSign\""); this.damage = 1; return Material.CHERRY_SIGN; } else if (str.matches("BambooStorageSign")) { + _logger.debug("str.matches(\"BambooStorageSign\""); this.damage = 1; return Material.BAMBOO_SIGN; } if (str.matches("HorseEgg")) { + _logger.debug("str.matches(\"HorseEgg\")"); this.damage = 1; return Material.END_PORTAL; //ガスト卵でよくね? } //1.13→1.14用 if (str.startsWith("SIGN")) { + _logger.debug("str.startsWith(\"SIGN\")"); return Material.OAK_SIGN; } if (str.startsWith("ROSE_RED")) { + _logger.debug("(str.startsWith(\"ROSE_RED\")"); return Material.RED_DYE; } if (str.startsWith("DANDELION_YELLOW")) { + _logger.debug("str.startsWith(\"DANDELION_YELLOW\""); return Material.YELLOW_DYE; } if (str.startsWith("CACTUS_GREEN")) { + _logger.debug("str.startsWith(\"CACTUS_GREEN\")"); return Material.GREEN_DYE; } //省略用 if (str.startsWith("ENCHBOOK")) { + _logger.debug("str.startsWith(\"ENCHBOOK\")"); return Material.ENCHANTED_BOOK; } if (str.startsWith("SPOTION")) { + _logger.debug("str.startsWith(\"SPOTION\")"); return Material.SPLASH_POTION; } if (str.startsWith("LPOTION")) { + _logger.debug("str.startsWith(\"LPOTION\")"); return Material.LINGERING_POTION; } Material mat = Material.matchMaterial(str); if (mat == null) { + _logger.debug("mat == null"); //後ろ切れる程度なら対応可 for (Material m : Material.values()) { if (m.toString().startsWith(str)) { @@ -330,6 +378,7 @@ protected Material getMaterial(String str) { * @return Material */ public Material getMaterial() { + _logger.debug("getMaterial in StorageSign"); return this.mat; } @@ -337,6 +386,7 @@ public Material getMaterial() { * フィールド変数:matのsetter. */ public void setMaterial(Material mat) { + _logger.debug("public void setMaterial(Material mat)"); this.mat = mat; } @@ -346,62 +396,78 @@ public void setMaterial(Material mat) { * @return Materialの短い名前 */ protected String getShortName() { + _logger.debug("protected String getShortName()"); //2行目の記載内容 if (this.mat == null || this.mat == Material.AIR) { + _logger.debug("this.mat == null or AIR"); return ""; } else if (this.mat == Material.END_PORTAL) { + _logger.debug("this.mat == Material.END_PORTAL"); if (this.damage == 0) { + _logger.debug("this.damage == 0"); return "OakStorageSign"; } if (this.damage == 1) { + _logger.debug("this.damage == 1"); return "HorseEgg"; } } else if (this.mat == Material.OAK_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.OAK_SIGN && this.damage == 1"); return "OakStorageSign"; } else if (this.mat == Material.SPRUCE_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.SPRUCE_SIGN && this.damage == 1"); return "SpruceStorageSign"; } else if (this.mat == Material.BIRCH_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.BIRCH_SIGN && this.damage == 1"); return "BirchStorageSign"; } else if (this.mat == Material.JUNGLE_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.JUNGLE_SIGN && this.damage == 1"); return "JungleStorageSign"; } else if (this.mat == Material.ACACIA_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.ACACIA_SIGN & this.damage == 1"); return "AcaciaStorageSign"; } else if (this.mat == Material.DARK_OAK_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.DARK_OAK_SIGN & this.damage == 1"); return "DarkOakStorageSign"; } else if (this.mat == Material.CRIMSON_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.CRIMSON_SIGN & this.damage == 1"); return "CrimsonStorageSign"; } else if (this.mat == Material.WARPED_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.WARPED_SIGN & this.damage == 1"); return "WarpedStorageSign"; } else if (this.mat == Material.MANGROVE_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.MANGROVE_SIGN & this.damage == 1"); return "MangroveStorageSign"; } else if (this.mat == Material.CHERRY_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.CHERRY_SIGN & this.damage == 1"); return "CherryStorageSign"; } else if (this.mat == Material.BAMBOO_SIGN && this.damage == 1) { + _logger.debug("this.mat == Material.BAMBOO_SIGN & this.damage == 1"); return "BambooStorageSign"; //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; @@ -411,28 +477,35 @@ protected String getShortName() { //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; } else if (this.mat == Material.ENCHANTED_BOOK) { + _logger.debug("return \"ENCHBOOK:\" + Info"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { + _logger.debug("return PotionInfo.getSignData"); return PotionInfo.getSignData(this.mat, pot, this.damage); } //リミットブレイク int limit = 99; if (this.damage != 0) { + _logger.debug("limit break"); limit -= String.valueOf(this.damage).length() + 1; } if (this.mat.toString().length() > limit) { + _logger.debug("if (this.mat.toString().length() > limit)"); if (this.damage != 0) { + _logger.debug("if (this.damage != 0)"); return this.mat.toString().substring(0, limit) + ":" + this.damage; } return this.mat.toString().substring(0, limit); } else { + _logger.debug("else (this.mat.toString().length() > limit)"); if (this.damage != 0) { + _logger.debug("if (this.damage != 0)"); return this.mat.toString() + ":" + this.damage; } @@ -446,6 +519,7 @@ protected String getShortName() { * @return ItemStack 空のStorageSign */ public ItemStack getStorageSign() { + _logger.debug("public ItemStack getStorageSign()"); ItemStack item = new ItemStack(this.smat, this.stack); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("StorageSign"); @@ -453,9 +527,11 @@ public ItemStack getStorageSign() { //IDとMaterial名が混ざってたり、エンチャ本対応したり if (this.isEmpty) { + _logger.debug("if (this.isEmpty)"); list.add("Empty"); } else if (this.mat == Material.ENCHANTED_BOOK) { + _logger.debug("this.mat == Material.ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage @@ -464,9 +540,11 @@ public ItemStack getStorageSign() { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { + _logger.debug("this.mat == Material.(S.L)POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); } else { + _logger.debug("else (this.isEmpty)"); list.add(getShortName() + " " + this.amount); } @@ -483,6 +561,7 @@ public ItemStack getStorageSign() { * @return ItemStack 空のHoerseEgg */ private ItemStack emptyHorseEgg() { + _logger.debug("private ItemStack emptyHorseEgg()"); ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); List list = new ArrayList<>(); @@ -502,6 +581,7 @@ private ItemStack emptyHorseEgg() { * @return 取得した文字列 */ public String getSigntext(int i) { + _logger.debug("public String getSigntext(int i)"); String[] sign = new String[4]; sign[0] = "StorageSign"; @@ -526,17 +606,21 @@ public ItemStack getContents() { } if (this.mat == Material.END_PORTAL) { + _logger.debug("this.mat == Material.END_PORTAL"); if (this.damage == 0) { + _logger.debug("this.damage == 0"); return emptySign(); } if (this.damage == 1) { + _logger.debug("this.damage == 1"); return emptyHorseEgg(); } } if (this.mat == Material.STONE_SLAB) { + _logger.debug("this.mat == Material.STONE_SLAB"); //ダメージ値0にする return new ItemStack(this.mat, 1); @@ -551,15 +635,19 @@ public ItemStack getContents() { || this.mat == Material.MANGROVE_SIGN || this.mat == Material.CHERRY_SIGN || this.mat == Material.BAMBOO_SIGN) { + _logger.debug("this.mat == ALL_SIGN"); if (this.damage == 0) { + _logger.debug("(this.damage == 0)"); return new ItemStack(this.mat, 1); } else { + _logger.debug("else (this.damage == 0)"); return emptySign(this.mat); } } else if (this.mat == Material.ENCHANTED_BOOK) { + _logger.debug("else if (this.mat == Material.ENCHANTED_BOOK)"); ItemStack item = new ItemStack(this.mat, 1); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); @@ -571,6 +659,7 @@ public ItemStack getContents() { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { + _logger.debug("this.mat == Material.(all)POTION"); ItemStack item = new ItemStack(this.mat, 1); PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); @@ -582,6 +671,7 @@ public ItemStack getContents() { return item; } else if (this.mat == Material.FIREWORK_ROCKET) { + _logger.debug("this.mat == Material.FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, 1); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); @@ -592,6 +682,7 @@ public ItemStack getContents() { } else if (this.mat == Material.WHITE_BANNER && this.damage == 8) { + _logger.debug("this.mat == Material.WHITE_BANNER"); ItemStack item = new ItemStack(this.mat, 1); //どこかからコピー @@ -602,6 +693,7 @@ public ItemStack getContents() { } if (this.damage == 0) { + _logger.debug("this.damage == 0"); //大半はダメージなくなった return new ItemStack(this.mat, 1); } @@ -609,6 +701,7 @@ public ItemStack getContents() { var itemStack = new ItemStack(this.mat, 1); var meta = itemStack.getItemMeta(); if (meta instanceof Damageable dam) { + _logger.debug("meta instanceof Damageable dam"); dam.setDamage(this.damage); itemStack.setItemMeta(meta); } @@ -624,21 +717,25 @@ public ItemStack getContents() { */ public boolean isSimilar(ItemStack item) { if (item == null) { + _logger.debug("item == null"); return false; } if (this.mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { + _logger.debug("this.mat and item.getType() == Material.ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); if (enchantMeta.getStoredEnchants().size() == 1) { + _logger.debug("enchantMeta.getStoredEnchants().size() == 1"); Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; if (itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { + _logger.debug("itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage"); return true; } @@ -646,6 +743,7 @@ public boolean isSimilar(ItemStack item) { return false; } else if (isShulker(this.mat)) { + _logger.debug("(isShulker(this.mat)[atomawasi]"); //後回し } @@ -657,6 +755,7 @@ public boolean isSimilar(ItemStack item) { * フィールド変数:damageのgetter. */ public short getDamage() { + _logger.debug("public short getDamage()"); return this.damage; } @@ -664,6 +763,7 @@ public short getDamage() { * フィールド変数:damageのsetter. */ public void setDamage(short damage) { + _logger.debug("public void setDamage(short damage)"); this.damage = damage; } @@ -671,6 +771,7 @@ public void setDamage(short damage) { * フィールド変数:amountのgetter. */ public int getAmount() { + _logger.debug("public int getAmount()"); return this.amount; } @@ -678,6 +779,7 @@ public int getAmount() { * フィールド変数:amountのsetter. */ public void setAmount(int amount) { + _logger.debug("public void setAmount(int amount)"); this.amount = amount; this.isEmpty = amount == 0; } @@ -688,15 +790,19 @@ public void setAmount(int amount) { * @param amount 加算対象の値 */ public void addAmount(int amount) { + _logger.debug("public void addAmount(int amount)"); if (this.amount < -amount) { + _logger.debug("(this.amount < -amount)"); this.amount = 0; } else { + _logger.debug("else (this.amount < -amount)"); this.amount += amount; } if (this.amount < 0) { + _logger.debug("this.amount < 0"); this.amount = Integer.MAX_VALUE; } @@ -710,6 +816,7 @@ public void addAmount(int amount) { * @return StackSize */ public int getStackSize() { + _logger.debug("public int getStackSize()"); return this.stack; } @@ -719,6 +826,7 @@ public int getStackSize() { * @return true:空っぽ/false:入ってます */ public boolean isEmpty() { + _logger.debug("public boolean isEmpty()"); return this.isEmpty; } @@ -726,6 +834,7 @@ public boolean isEmpty() { * フィールド変数:enchのgetter. */ public Enchantment getEnchant() { + _logger.debug("public Enchantment getEnchant()"); return this.ench; } @@ -733,6 +842,7 @@ public Enchantment getEnchant() { * フィールド変数:enchのsetter. */ public void setEnchant(Enchantment ench) { + _logger.debug("public void setEnchant(Enchantment ench)"); this.ench = ench; } @@ -740,6 +850,7 @@ public void setEnchant(Enchantment ench) { * フィールド変数:potのgetter. */ public PotionType getPotion() { + _logger.debug("public PotionType getPotion()"); return this.pot; } @@ -747,6 +858,7 @@ public PotionType getPotion() { * フィールド変数:potのsetter. */ public void setPotion(PotionType pot) { + _logger.debug("public void setPotion(PotionType pot)"); this.pot = pot; } @@ -754,6 +866,7 @@ public void setPotion(PotionType pot) { * フィールド変数:smatのgetter. */ public Material getSmat() { + _logger.debug("public Material getSmat()"); return this.smat; } @@ -763,6 +876,7 @@ public Material getSmat() { * @return true:シュルカーボックスにだよ/false:シュルカーボックスじゃないよ */ private boolean isShulker(Material mat) { + _logger.debug("private boolean isShulker(Material mat)"); switch (mat) { case SHULKER_BOX: case WHITE_SHULKER_BOX: From 43d5cd09f4cace1192524534f05daeee95aa1855 Mon Sep 17 00:00:00 2001 From: fishfillet-krm <163864054+fishfillet-krm@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:11:30 +0900 Subject: [PATCH 25/82] =?UTF-8?q?StorageSign.java=20=E3=81=AE=E4=B8=8D?= =?UTF-8?q?=E8=B6=B3=E9=83=A8=E5=88=86=E3=82=92=E8=A7=A3=E6=B1=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSign.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 2b60cd9..652b43c 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -65,8 +65,8 @@ public class StorageSign { * */ public StorageSign(ItemStack item, Logger logger) { - logger.debug("public StorageSign(ItemStack item, Logger logger)"); this._logger = logger; + logger.debug("public StorageSign(ItemStack item, Logger logger)"); String[] str = item.getItemMeta().getLore().get(0).split(" "); @@ -122,6 +122,7 @@ public StorageSign(ItemStack item, Logger logger) { * */ public StorageSign(Sign sign, Material signmat, Logger logger) { + this._logger = logger; logger.debug("public StorageSign(Sign sign, Material signmat, Logger logger)"); //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); From 6192e661bda6530b26676b493b1141add338cc1c Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Tue, 16 Apr 2024 00:49:39 +0900 Subject: [PATCH 26/82] =?UTF-8?q?=E4=B8=8D=E8=B6=B3=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F=E3=82=BB=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E8=A8=98=E8=BF=B0=E3=82=92=E8=BF=BD=E5=8A=A0=E3=83=BB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ・description を追加 ・API Version を修正 1.19→1.20 --- src/main/resources/plugin.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fe91463..69b5ef0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,8 +1,9 @@ name: StorageSign main: wacky.storagesign.StorageSignCore version: ${version} +description: StorageSign Plugin for Spigot. You can 2billion items storeing to wooden sign. author: wackyls6 -api-version: 1.19 +api-version: 1.20 softdepend: [WorldGuard] website: http://forum.minecraftuser.jp/viewtopic.php?t=15065 permissions: From 231311dd489194753b679e1495348e70f6e50bd3 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 16 Apr 2024 13:49:59 +0900 Subject: [PATCH 27/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E5=9F=8B=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/EnchantInfo.java | 7 + .../java/wacky/storagesign/PotionInfo.java | 40 +- .../wacky/storagesign/SignPhysicsEvent.java | 2 + .../wacky/storagesign/StorageSignCore.java | 566 +++++++++++++++--- 4 files changed, 517 insertions(+), 98 deletions(-) diff --git a/src/main/java/wacky/storagesign/EnchantInfo.java b/src/main/java/wacky/storagesign/EnchantInfo.java index 00eef82..20b2dbb 100644 --- a/src/main/java/wacky/storagesign/EnchantInfo.java +++ b/src/main/java/wacky/storagesign/EnchantInfo.java @@ -17,8 +17,11 @@ public EnchantInfo(Material mat, String[] str, Logger logger) { this.mat = mat; this._logger = logger; + _logger.debug("EnchantInfo:Start"); ench = getEnch(str[1]); damage = NumberConversions.toShort(str[2]); + _logger.trace("ench:" + ench); + _logger.trace("damage:" + damage); } public static String getShortType(Enchantment e) { @@ -34,12 +37,16 @@ public static String getShortType(Enchantment e) { } private Enchantment getEnch(String substring) { + _logger.debug("getEnch: Start"); //後ろ切れても可. for (Enchantment e : Registry.ENCHANTMENT) { + _logger.trace(" e: " + e); + _logger.trace(" e.getKey().getKey().startsWith(substring): " + e.getKey().getKey().startsWith(substring)); if (e.getKey().getKey().startsWith(substring)) { return e; } } + _logger.error("EnchantType is Not Found!substring:" + substring); return null; } diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index a018b9f..2010bd1 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -116,14 +116,17 @@ public PotionInfo(Material mat, String[] str) { public PotionInfo(Material material, String type, String effName, String enhance, Logger logger) { this.logger = logger; - logger.debug("PotionItnfoConstructor:Start"); + logger.debug("PotionInfo:Start"); this.mat = material; // ポーション種別の設定 + logger.trace("type: " + type); if (type.startsWith(TYPE_SPLASH_PREF)) { + logger.debug("This Potion Type is SplashPortion."); this.mat = Material.SPLASH_POTION; } else if (type.startsWith(TYPE_LINGERING_PREF)) { // 元のやつだと入ってないからいらない? + logger.debug("This Potion Type is LingeringPortion."); this.mat = Material.LINGERING_POTION; } @@ -131,6 +134,9 @@ public PotionInfo(Material material, String type, String effName, String enhance this.damage = NumberConversions.toShort(enhance); // 一応前のロジックも入れておく + logger.trace("damage: " + damage); + logger.trace("pot.isExtendable(): " + pot.isExtendable()); + logger.trace("pot.isUpgradeable(): " + pot.isUpgradeable()); if (damage % 8192 > 64 && pot.isExtendable()) { this.damage = 1;//延長 } else if (damage % 64 > 32 && pot.isUpgradeable()) { @@ -228,66 +234,98 @@ private PotionType getType(String substring) { } private PotionType getType(String effName, String enhance) { + logger.debug("getType: Start"); // 表記上例外のケースたちの判定 + logger.trace("effName: " + effName + ".enhance: " + enhance); + logger.trace("effName.equals(SHORT_NAME_HEAL): " + effName.equals(SHORT_NAME_HEAL)); + logger.trace("effName.equals(SHORT_NAME_BREAT): " + effName.equals(SHORT_NAME_BREAT)); + logger.trace("effName.equals(SHORT_NAME_DAMAG): " + effName.equals(SHORT_NAME_DAMAG)); + logger.trace("effName.equals(SHORT_NAME_JUMP): " + effName.equals(SHORT_NAME_JUMP)); + logger.trace("effName.equals(SHORT_NAME_SPEED): " + effName.equals(SHORT_NAME_SPEED)); + logger.trace("enhance.equals(ENHANCE_NORMAL_CODE)" + enhance.equals(ENHANCE_NORMAL_CODE)); + logger.trace("enhance.equals(ENHANCE_STRONG_CODE)" + enhance.equals(ENHANCE_STRONG_CODE)); if (effName.equals(SHORT_NAME_HEAL)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Heal."); return PotionType.INSTANT_HEAL; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + logger.debug("Portion:Str_Heal."); return PotionType.STRONG_HEALING; } else { + logger.error("Heal Enhance is not Exist!Enhance: " + enhance); throw new PotionException("治癒のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_BREAT)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Breat."); return PotionType.WATER_BREATHING; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + logger.debug("Portion:Ext_Breat."); return PotionType.LONG_WATER_BREATHING; } else { + logger.error("Breat Enhance is not Exist!Enhance: " + enhance); throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_DAMAG)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Damage."); return PotionType.INSTANT_DAMAGE; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + logger.debug("Portion:Str_Damage."); return PotionType.STRONG_HARMING; } else { + logger.error("Damage Enhance is not Exist!Enhance: " + enhance); throw new PotionException("ダメージのポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_JUMP)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Jump."); return PotionType.JUMP; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + logger.debug("Portion:Ext_Jump."); return PotionType.LONG_LEAPING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + logger.debug("Portion:Str_Jump."); return PotionType.STRONG_LEAPING; } else { + logger.error("Jump Enhance is not Exist!Enhance: " + enhance); throw new PotionException("跳躍のポーションに対応する種類が存在しません"); } } else if (effName.equals(SHORT_NAME_SPEED)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Speed."); return PotionType.SPEED; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + logger.debug("Portion:Ext_Speed."); return PotionType.LONG_SWIFTNESS; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + logger.debug("Portion:Str_Speed."); return PotionType.STRONG_SWIFTNESS; } else { + logger.error("Speed Enhance is not Exist!Enhance: " + enhance); throw new PotionException("俊敏のポーションに対応する種類が存在しません"); } } else { // それ以外は命名ルールに従って検索をかける // 延長、強化があったら先頭にプレフィックスをつけて検索 + logger.debug("SearchPotion"); String name = effName; if (enhance.equals(ENHANCE_EXTENSION_CODE)) { name = ENHANCE_EXTENSION_PREF + name; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { name = ENHANCE_STRONG_PREF + name; } + logger.trace("name: " + name); for (PotionType p : PotionType.values()) { + logger.trace(" p: " + p); + logger.trace(" p.toString().startsWith(name): " + p.toString().startsWith(name)); if (p.toString().startsWith(name)) { + logger.debug(" Potion Is " + p); return p; } } + logger.error("Enhance is not Exist!"); throw new PotionException("ポーションデータが存在しません"); } } diff --git a/src/main/java/wacky/storagesign/SignPhysicsEvent.java b/src/main/java/wacky/storagesign/SignPhysicsEvent.java index 2bd29f2..dbc9452 100644 --- a/src/main/java/wacky/storagesign/SignPhysicsEvent.java +++ b/src/main/java/wacky/storagesign/SignPhysicsEvent.java @@ -14,11 +14,13 @@ public SignPhysicsEvent(StorageSignCore plugin, Logger logger) { this.plugin = plugin; this._logger = logger; + _logger.debug("SignPhysicsEvent:Start"); plugin.getServer().getPluginManager().registerEvents(this, plugin); } @EventHandler public void onBlockPhysics(BlockPhysicsEvent event) { + _logger.debug("onBlockPhysics:Start"); event.setCancelled(plugin.isStorageSign(event.getBlock())); } } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 012f8c9..c3cdc7d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -73,7 +73,7 @@ public void onEnable() { Logger.register(this, logLevel); logger = Logger.getInstance(this); - logger.debug("onEnable:Start"); + logger.debug("★onEnable:Start"); // logger.fatal("serverLog"); // logger.error("errorLog"); // logger.warn("warnLog"); @@ -85,18 +85,17 @@ public void onEnable() { Material[] sign = {Material.OAK_SIGN, Material.BIRCH_SIGN, Material.SPRUCE_SIGN, Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, Material.WARPED_SIGN, Material.MANGROVE_SIGN, Material.CHERRY_SIGN, Material.BAMBOO_SIGN}; + logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); for (int i = 0; i < 11; i++) { logger.trace("signRecipi name:" + sign[i]); ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this, "ssr" + i), StorageSign.emptySign(sign[i])); - logger.trace("storageSignRecipe:" + storageSignRecipe); //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); storageSignRecipe.shape("CCC", "CSC", "CHC"); storageSignRecipe.setIngredient('C', Material.CHEST); storageSignRecipe.setIngredient('S', sign[i]); - logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); if (config.getBoolean("hardrecipe")) { storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); } else { @@ -111,10 +110,11 @@ public void onEnable() { logger.trace("no-bud:" + config.getBoolean("no-bud")); if (config.getBoolean("no-bud")) { + logger.trace("no-bud is True."); new SignPhysicsEvent(this, logger); } - logger.debug("onEnable:End"); + logger.debug("★onEnable:End"); } @Override @@ -123,53 +123,56 @@ public void onDisable() { public boolean isStorageSign(ItemStack item) { - logger.debug("isStorageSign(ItemStack):Start"); + logger.debug(" isStorageSign(ItemStack):Start"); if (item == null) { - logger.debug("item is null."); + logger.debug(" item is null."); return false; } - logger.trace("isSignPost:" + isSignPost(item.getType())); - if (isSignPost(item.getType())) { + boolean isSignPost = isSignPost(item.getType()); + logger.trace(" isSignPost:" +isSignPost); + if (isSignPost) { - logger.trace("!item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); + logger.trace(" !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); if (!item.getItemMeta().hasDisplayName()) { - logger.debug("itemMeta hasn't displayName."); + logger.debug(" itemMeta hasn't displayName."); return false; } logger.trace( - "!item.getItemMeta().getDisplayName().matches(\"StorageSign\")" + !item.getItemMeta() + " !item.getItemMeta().getDisplayName().matches(\"StorageSign\"): " + !item.getItemMeta() .getDisplayName().matches("StorageSign")); if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { - logger.debug("itemMetaName hasn't StorageSign."); + logger.debug(" itemMetaName hasn't StorageSign."); return false; } - logger.trace("item.getItemMeta().hasLore()" + item.getItemMeta().hasLore()); + logger.trace(" item.getItemMeta().hasLore(): " + item.getItemMeta().hasLore()); return item.getItemMeta().hasLore(); } - logger.debug("isSignPost is false."); + logger.debug(" isSignPost is false."); return false; } public boolean isStorageSign(Block block) { - logger.debug("isStorageSign(Block):Start"); - - logger.trace("block.getType(): " + block.getType()); - logger.trace("isSignPost(block.getType()): " + isSignPost(block.getType())); - logger.trace("isWallSign(block.getType()) :" + isWallSign(block.getType())); - if (isSignPost(block.getType()) || isWallSign(block.getType())) { - logger.debug("This Block is Sign."); + logger.debug(" isStorageSign(Block):Start"); + + boolean isSignPost = isSignPost(block.getType()); + boolean isWallSign = isWallSign(block.getType()); + logger.trace(" block.getType(): " + block.getType()); + logger.trace(" isSignPost(block.getType()): " + isSignPost); + logger.trace(" isWallSign(block.getType()) :" + isWallSign); + if (isSignPost || isWallSign) { + logger.debug(" This Block is Sign."); Sign sign = (Sign) block.getState(); - logger.trace("sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( + logger.trace(" sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( Side.FRONT).getLine(0).matches("StorageSign")); if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { - logger.debug("This Sign is StorageSign."); + logger.debug(" This Sign is StorageSign."); return true; } } - logger.debug("This Block isn't StorageSign."); + logger.debug(" This Block isn't StorageSign."); return false; } @@ -191,7 +194,7 @@ public boolean isHorseEgg(ItemStack item) { @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { - logger.debug("onPlayerInteract: Start"); + logger.debug("★onPlayerInteract: Start"); Player player = event.getPlayer(); Block block; @@ -206,7 +209,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { block = player.getTargetBlock((Set) null, 3); } catch (IllegalStateException ex) { java.util.logging.Logger log = logger.getLogger(); - log.log(Level.SEVERE, "getTargetBlock is Error. Trace", ex); + log.log(Level.SEVERE, "★getTargetBlock is Error. Trace", ex); return; } } else { @@ -215,43 +218,41 @@ public void onPlayerInteract(PlayerInteractEvent event) { } logger.trace("block == null:" + (block == null)); if (block == null) { - logger.debug("block is null."); + logger.debug("★block is null."); return; } logger.trace("player.getGameMode() == GameMode.SPECTATOR:" + (player.getGameMode() == GameMode.SPECTATOR)); if (player.getGameMode() == GameMode.SPECTATOR) { - logger.debug("UserGameMode is Spectator."); + logger.debug("★UserGameMode is Spectator."); return; } logger.trace("event.getAction():" + event.getAction()); - logger.trace("event.getAction() == Action.RIGHT_CLICK_BLOCK:" + (event.getAction() - == Action.RIGHT_CLICK_BLOCK)); - logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() - == Action.RIGHT_CLICK_AIR)); if (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR) { logger.debug("UserAction is RIGHT_CLICK_BLOCK or RIGHT_CLICK_AIR"); - if (!isStorageSign(block)) { - logger.debug("This Block not StorageSign."); + boolean clickBlockIsSS = isStorageSign(block); + logger.trace("clickBlockIsSS: " + clickBlockIsSS); + if (!clickBlockIsSS) { + logger.debug("★This Block not StorageSign."); return; } if (event.getHand() == EquipmentSlot.OFF_HAND) { - logger.debug("This hand is OFF_HAND."); + logger.debug("★This hand is OFF_HAND."); //一応 return; } event.setUseItemInHand(Result.DENY); event.setUseInteractedBlock(Result.DENY); - logger.trace("!player.hasPermission(\"storagesign.use\") + " + !player.hasPermission( + logger.trace("!player.hasPermission(\"storagesign.use\"): " + !player.hasPermission( "storagesign.use")); if (!player.hasPermission("storagesign.use")) { - logger.debug("This User hasn't permission.storagesign.use"); - player.sendMessage(ChatColor.RED + config.getString("no-permisson")); + logger.debug("★This User hasn't permission.storagesign.use"); + player.sendMessage(ChatColor.BLACK + config.getString("no-permisson")); event.setCancelled(true); return; } @@ -260,31 +261,35 @@ public void onPlayerInteract(PlayerInteractEvent event) { ItemStack itemMainHand = event.getItem(); Material mat; - logger.trace("sign:" + sign); - logger.trace("storageSign:" + storageSign); - logger.trace("itemMainHand:" + itemMainHand); - logger.trace("storageSign.getMaterial() == null:" + (storageSign.getMaterial() == null)); - logger.trace("storageSign.getMaterial() == Material.AIR:" + (storageSign.getMaterial() + logger.debug("Check Event Type."); + logger.trace("sign: " + sign); + logger.trace("storageSign: " + storageSign); + logger.trace("itemMainHand: " + itemMainHand); + logger.trace("storageSign.getMaterial() == null: " + (storageSign.getMaterial() == null)); + logger.trace("storageSign.getMaterial() == Material.AIR: " + (storageSign.getMaterial() == Material.AIR)); //アイテム登録 + logger.debug("check Item Regist."); if (storageSign.getMaterial() == null || storageSign.getMaterial() == Material.AIR) { logger.debug("SS Material Regist."); logger.trace("itemMainHand:" + itemMainHand); - logger.trace("itemMainHand == null:" + (itemMainHand == null)); + logger.trace("itemMainHand == null: " + (itemMainHand == null)); if (itemMainHand == null) { - logger.debug("User MainHand is Null."); + logger.debug("★User MainHand is Null."); //申し訳ないが素手はNG return; } mat = itemMainHand.getType(); - logger.trace("isStorageSign(itemMainHand):" + isStorageSign(itemMainHand)); - logger.trace("isHorseEgg(itemMainHand):" + isHorseEgg(itemMainHand)); - logger.trace("mat:" + mat); - if (isStorageSign(itemMainHand)) { + boolean mainHandIsSS = isStorageSign(itemMainHand); + boolean mainHandIsHE = isHorseEgg(itemMainHand); + logger.trace("isStorageSign(itemMainHand): " + mainHandIsSS); + logger.trace("isHorseEgg(itemMainHand): " + mainHandIsHE); + logger.trace("mat: " + mat); + if (mainHandIsSS) { logger.debug("main hand has StorageSign."); storageSign.setMaterial(mat); storageSign.setDamage((short) 1); - } else if (isHorseEgg(itemMainHand)) { + } else if (mainHandIsHE) { logger.debug("main hand has HorseEgg."); storageSign.setMaterial(Material.END_PORTAL); storageSign.setDamage((short) 1); @@ -337,33 +342,50 @@ public void onPlayerInteract(PlayerInteractEvent event) { logger.debug("SignTextUpdate."); for (int i = 0; i < 4; i++) { - logger.trace("[i]:" + i + ". signText:" + storageSign.getSigntext(i)); + logger.trace(" [i]:" + i + ". signText:" + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } sign.update(); - logger.debug("onPlayerInteract: End"); + logger.debug("★ItemRegist: End"); return; } - if (isStorageSign(itemMainHand)) { + boolean isStorageSign = isStorageSign(itemMainHand); + logger.trace("isStorageSign:" + isStorageSign); + if (isStorageSign) { //看板合成 + logger.debug("Item move to User StorageSign"); StorageSign itemSign = new StorageSign(itemMainHand, logger); + logger.trace("itemSign:" + itemSign); + logger.trace("storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean(\n" + + " \"manual-import\"):" + (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean( + "manual-import"))); + logger.trace("itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount()\n" + + " && config.getBoolean(\"manual-export\")" + (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() + && config.getBoolean("manual-export"))); if (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean( "manual-import")) { + logger.debug("Sign store Items."); storageSign.addAmount(itemSign.getAmount() * itemSign.getStackSize()); itemSign.setAmount(0); player.getInventory().setItemInMainHand(itemSign.getStorageSign()); } else if (itemSign.isEmpty() && storageSign.getMaterial() == itemSign.getSmat() && storageSign.getDamage() == 1 && config.getBoolean("manual-import")) { //空看板収納 + logger.debug("Empty Sign store."); + logger.trace("player.isSneaking()" + player.isSneaking()); if (player.isSneaking()) { + logger.debug("Player is Sneaking."); storageSign.addAmount(itemMainHand.getAmount()); player.getInventory().clear(player.getInventory().getHeldItemSlot()); } else { + logger.debug("store all Empty Sign.SearchPlayer Inventory."); for (int i = 0; i < player.getInventory().getSize(); i++) { ItemStack item = player.getInventory().getItem(i); + logger.trace("storageSign.isSimilar(item)" + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug("find Empty Sign."); storageSign.addAmount(item.getAmount()); player.getInventory().clear(i); } @@ -372,6 +394,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { } else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() && config.getBoolean("manual-export")) { //中身分割機能 + logger.debug("Export Item to Empty Sign."); itemSign.setMaterial(storageSign.getMaterial()); itemSign.setDamage(storageSign.getDamage()); itemSign.setEnchant(storageSign.getEnchant()); @@ -379,98 +402,159 @@ public void onPlayerInteract(PlayerInteractEvent event) { int limit = config.getInt("divide-limit"); + logger.trace("limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)" + (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1))); if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { + logger.debug("Item Export EmptySign divide-limit."); itemSign.setAmount(limit); } else { + logger.debug("Item Export EmptySign Equality divide."); itemSign.setAmount(storageSign.getAmount() / (itemSign.getStackSize() + 1)); } player.getInventory().setItemInMainHand(itemSign.getStorageSign()); + //余りは看板に引き受けてもらう storageSign.setAmount(storageSign.getAmount() - (itemSign.getStackSize() - * itemSign.getAmount()));//余りは看板に引き受けてもらう + * itemSign.getAmount())); } + logger.debug("Update StorageSign."); for (int i = 0; i < 4; i++) { + logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } sign.update(); + logger.debug("★Item move to User StorageSign: End"); return; } //ここから搬入 + logger.debug("check manual Import."); + logger.trace("storageSign.isSimilar(itemMainHand): " + storageSign.isSimilar(itemMainHand)); + logger.trace("config.getBoolean(\"manual-import\"): " + config.getBoolean("manual-import")); + logger.trace("config.getBoolean(\"manual-export\"): " + config.getBoolean("manual-export")); if (storageSign.isSimilar(itemMainHand)) { + logger.debug("StorageSign Import."); + + logger.trace("!config.getBoolean(\"manual-import\"): " + !config.getBoolean("manual-import")); if (!config.getBoolean("manual-import")) { + logger.debug("★option:manual-import is False!"); return; } + logger.trace("player.isSneaking():" + player.isSneaking()); if (player.isSneaking()) { + logger.debug("player is Sneaking.Push 1 Item."); storageSign.addAmount(itemMainHand.getAmount()); player.getInventory().clear(player.getInventory().getHeldItemSlot()); + + logger.trace("isDye(itemMainHand):" + isDye(itemMainHand)); + logger.trace("isSac(itemMainHand):" + isSac(itemMainHand)); if (isDye(itemMainHand)) { + logger.debug("mainHandItem is Dye."); sign.getSide(Side.FRONT).setColor(getDyeColor(itemMainHand)); //同色用 } if (isSac(itemMainHand)) { + logger.debug("mainHandItem is Sac."); sign.getSide(Side.FRONT).setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 } } else { + logger.debug("push Stack Item."); for (int i = 0; i < player.getInventory().getSize(); i++) { ItemStack item = player.getInventory().getItem(i); + logger.trace(" item: " + item); + logger.trace(" storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug(" same Item Found.Push Item to StorageSign."); storageSign.addAmount(item.getAmount()); player.getInventory().clear(i); } } + logger.debug("push Stack Item.End."); } player.updateInventory(); } else if (config.getBoolean("manual-export"))/*放出*/ { + logger.debug("Export StorageSign Item."); - if (itemMainHand != null && isDye(itemMainHand)) {//染料の場合、放出せずに看板に色がつく + boolean isDye = false; + boolean isSac = false; + if (itemMainHand != null){ + isDye = isDye(itemMainHand); + isSac = isSac(itemMainHand); + } + logger.trace("itemMainHand:" + itemMainHand); + logger.trace("itemMainHand != null && isDye:" + (itemMainHand != null && isDye)); + logger.trace("itemMainHand != null && isSac:" + (itemMainHand != null && isSac)); + //染料の場合、放出せずに看板に色がつく + if (itemMainHand != null && isDye) { + logger.debug("★Set SignColor."); event.setUseItemInHand(Result.ALLOW); - event.setUseInteractedBlock(Result.ALLOW);//最初にDENYにしてたので戻す、同色染料が使えない。 + //最初にDENYにしてたので戻す、同色染料が使えない。 + event.setUseInteractedBlock(Result.ALLOW); return; - } else if (itemMainHand != null && isSac(itemMainHand)) { + } else if (itemMainHand != null && isSac) { + logger.debug("★Set Sac."); event.setUseItemInHand(Result.ALLOW); event.setUseInteractedBlock(Result.ALLOW); return; } else if (storageSign.isEmpty()) { + logger.debug("★StorageSign is Empty."); return; } ItemStack item = storageSign.getContents(); int max = item.getMaxStackSize(); + logger.trace("player.isSneaking(): " + player.isSneaking()); + logger.trace("storageSign.getAmount() > max: " + (storageSign.getAmount() > max)); if (player.isSneaking()) { + logger.debug("Player is Sneaking.Get 1 Item."); storageSign.addAmount(-1); } else if (storageSign.getAmount() > max) { + logger.debug("Sign Items bigger than 1Stack.Get 1Stack Items."); item.setAmount(max); storageSign.addAmount(-max); } else { + logger.debug("Get 1Stack Items."); item.setAmount(storageSign.getAmount()); storageSign.setAmount(0); } + logger.debug("drop Item."); Location loc = player.getLocation(); loc.setY(loc.getY() + 0.5); player.getWorld().dropItem(loc, item); } + logger.debug("SetSignText."); for (int i = 0; i < 4; i++) { + logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } + + logger.debug("update Sign."); sign.update(); } + + logger.debug("★onPlayerInteract: End"); } @EventHandler public void onSignChange(SignChangeEvent event) { + logger.debug("★onSignChangeEvent:Start"); + + logger.trace("event.isCancelled(): " + event.isCancelled()); if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); return; } + logger.trace("event.getSide().equals(Side.BACK): " + event.getSide().equals(Side.BACK)); // バックの場合、キャンセルイベントを発行して終了する if (event.getSide().equals(Side.BACK)) { + logger.debug("★This Event is Execute BACK."); event.setCancelled(true); return; } Sign sign = (Sign) event.getBlock().getState(); + logger.trace("sign.getSide(Side.FRONT).getLine(0):" + sign.getSide(Side.FRONT).getLine(0)); if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign"))/*変更拒否*/ { event.setLine(0, sign.getSide(Side.FRONT).getLine(0)); event.setLine(1, sign.getSide(Side.FRONT).getLine(1)); @@ -478,119 +562,206 @@ public void onSignChange(SignChangeEvent event) { event.setLine(3, sign.getSide(Side.FRONT).getLine(3)); sign.update(); } else if (event.getLine(0).equalsIgnoreCase("storagesign"))/*書き込んで生成禁止*/ { + logger.debug("Line 0 Str is storagesign"); + + logger.trace("event.getPlayer().hasPermission(\"storagesign.create\")" + event.getPlayer().hasPermission("storagesign.create")); if (event.getPlayer().hasPermission("storagesign.create")) { + logger.debug("This user has Permission.storagesign.create. make StorageSign."); event.setLine(0, "StorageSign"); sign.update(); } else { + logger.debug("This user hasn't Permission.storagesign.create"); event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); event.setCancelled(true); } } + logger.debug("★onSignChangeEvent:End"); } @EventHandler(priority = EventPriority.HIGH) public void onBlockBreak(BlockBreakEvent event) { + logger.debug("★onBlockBreak:Start"); + + logger.trace("event.isCancelled(): " + event.isCancelled()); if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); return; } Block block = event.getBlock(); Map breakSignMap = new HashMap<>(); - if (isStorageSign(block)) { + boolean isStorageSign = isStorageSign(block); + logger.trace("isStorageSign: " + isStorageSign); + if (isStorageSign) { + logger.debug("breakItem is StorageSign."); breakSignMap.put(block.getLocation(), new StorageSign((Sign) block.getState(), block.getType(), logger)); } + logger.debug("check Break relativeBlock."); for (int i = 0; i < 5; i++) {//東西南北で判定 + logger.trace(" i: " + i); BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; block = event.getBlock().getRelative(face[i]); - if (i == 0 && isSignPost(block) && isStorageSign(block)) { + + boolean relIsSignPost = isSignPost(block); + boolean relIsStorageSign = isStorageSign(block); + boolean relIsWallSign = isWallSign(block); + logger.trace(" block: " + block); + logger.trace(" relIsSignPost: " + relIsSignPost); + logger.trace(" relIsStorageSign: " + relIsStorageSign); + logger.trace(" relIsWallSign: " + relIsWallSign); + if (i == 0 && relIsSignPost && relIsStorageSign) { + logger.debug(" This Block is StorageSign."); breakSignMap.put(block.getLocation(), new StorageSign((Sign) block.getState(), block.getType(), logger)); - } else if (isWallSign(block) && ((WallSign) block.getBlockData()).getFacing() == face[i] - && isStorageSign(block)) { + } else if (relIsWallSign && ((WallSign) block.getBlockData()).getFacing() == face[i] + && relIsStorageSign) { + logger.debug(" This Block is WallStorageSign."); breakSignMap.put(block.getLocation(), new StorageSign((Sign) block.getState(), block.getType(), logger)); } } + + logger.trace("breakSignMap.isEmpty(): " + breakSignMap.isEmpty()); if (breakSignMap.isEmpty()) { + logger.debug("★This Block isn't block StorageSign."); return; } + + logger.trace("!event.getPlayer().hasPermission(\"storagesign.break\"): " + !event.getPlayer().hasPermission("storagesign.break")); if (!event.getPlayer().hasPermission("storagesign.break")) { + logger.debug("★This user hasn't Permission. storagesign.break."); event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); event.setCancelled(true); return; } + logger.debug("Break StorageSign Set Item in World."); for (Location loc : breakSignMap.keySet()) { StorageSign sign = breakSignMap.get(loc); + logger.trace(" loc: " + loc); + logger.trace(" sign:" + sign); + Location loc2 = loc; loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる loc.getWorld().dropItem(loc2, sign.getStorageSign()); loc.getBlock().setType(Material.AIR); + logger.debug(" Storage Sign drop in World."); } + + logger.debug("★onBlockBreak:End."); } @EventHandler public void onBlockPlace(BlockPlaceEvent event) { - if (event.isCancelled() || !isStorageSign(event.getItemInHand())) { + logger.debug("★onBlockPlace: Start"); + + boolean handItemIsSS = isStorageSign(event.getItemInHand()); + logger.trace("event.isCancelled(): " + event.isCancelled()); + logger.trace("!handItemIsSS: " + !handItemIsSS); + if (event.isCancelled() || !handItemIsSS) { + logger.debug("★this Event is Cancelled!"); return; } Player player = event.getPlayer(); + logger.trace("!player.hasPermission(\"storagesign.place\"): " + !player.hasPermission("storagesign.place")); if (!player.hasPermission("storagesign.place")) { + logger.debug("★This user hasn't Permission. storagesign.place."); player.sendMessage(ChatColor.RED + config.getString("no-permisson")); event.setCancelled(true); return; } + + logger.debug("StorageSign Placed in World."); StorageSign storageSign = new StorageSign(event.getItemInHand(), logger); Sign sign = (Sign) event.getBlock().getState(); for (int i = 0; i < 4; i++) { + logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } + logger.trace("storageSign.getSmat() == Material.DARK_OAK_SIGN: " + (storageSign.getSmat() == Material.DARK_OAK_SIGN)); if (storageSign.getSmat() == Material.DARK_OAK_SIGN) { + logger.debug("This Sign is DarkOak Sign.0"); sign.getSide(Side.FRONT).setColor(DyeColor.WHITE);//文字色を白くする } + + logger.debug("UpdateSign."); sign.update(); - player.closeInventory();//時差発動が必要らしい + + //時差発動が必要らしい + player.closeInventory(); + logger.debug("★onBlockPlace: End"); } @EventHandler public void onItemMove(InventoryMoveItemEvent event) { + logger.debug("★onItemMove: Start"); + logger.trace("event.isCancelled(): " + event.isCancelled()); if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); return; } + + logger.debug("ItemMoveEvent check"); BlockState[] blockInventory = new BlockState[2]; Boolean flag = false; Sign sign = null; StorageSign storageSign = null; ItemStack item = event.getItem(); + logger.trace("config.getBoolean(\"auto-import\"): " + config.getBoolean("auto-import")); if (config.getBoolean("auto-import")) { + logger.debug("auto-import Start"); + logger.trace("event.getDestination().getLocation(): " + event.getDestination().getLocation()); + logger.trace("event.getDestination().getHolder(): " + event.getDestination().getHolder()); if (event.getDestination().getLocation() == null){ - ;//コンポスター用に生成された一時インベントリ + logger.debug("This Event is Temp Inventory."); + //コンポスター用に生成された一時インベントリ } else if (event.getDestination().getHolder() instanceof Minecart){ - ;//何もしない + //何もしない + logger.debug("This Event is Minecart."); } else if (event.getDestination().getHolder() instanceof DoubleChest) { + logger.debug("This Event is DoubleChest."); DoubleChest lc = (DoubleChest) event.getDestination().getHolder(); blockInventory[0] = (BlockState) lc.getLeftSide(); blockInventory[1] = (BlockState) lc.getRightSide(); } else if (!(event.getDestination().getHolder() instanceof BlockState)){ - ;//ブロック情報が取得できない場合も何もしない + //ブロック情報が取得できない場合も何もしない + logger.debug("This Event not get BlockState."); } else { + logger.debug("BlockState Set."); blockInventory[0] = (BlockState) event.getDestination().getHolder(); + logger.trace("blockInventory[0]: " + blockInventory[0]); } + logger.debug("importLoop Start."); importLoop: for (int j = 0; j < 2; j++) { + logger.trace("j: " + j); + logger.trace("blockInventory[j]: " + blockInventory[j]); if (blockInventory[j] == null) { + logger.debug("This Inventory is NULL."); break; } + logger.debug("BlockFaceCheck Start."); for (int i = 0; i < 5; i++) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - if (i == 0 && isSignPost(block) && isStorageSign(block)) { + boolean relIsSignPost = isSignPost(block); + boolean relIsStorageSign = isStorageSign(block); + boolean relIsWallSign = isWallSign(block); + logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); + logger.trace("i: " + i); + logger.trace("face[i]: " + face[i]); + logger.trace("block: " + block); + logger.trace("relIsSignPost: " + relIsSignPost); + logger.trace("relIsStorageSign: " + relIsStorageSign); + logger.trace("relIsWallSign: " + relIsWallSign); + logger.trace("((WallSign) block.getBlockData()).getFacing(): " + ((WallSign) block.getBlockData()).getFacing()); + if (i == 0 && relIsSignPost && relIsStorageSign) { if (item.getType() == Material.WHITE_BANNER) { // //襲撃バナー用 @@ -598,15 +769,19 @@ public void onItemMove(InventoryMoveItemEvent event) { } sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug("This item is StorageSign.break."); flag = true; break importLoop; } - } else if (i != 0 && isWallSign(block) - && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { + } else if (i != 0 && relIsWallSign + && ((WallSign) block.getBlockData()).getFacing() == face[i] && relIsStorageSign) { sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug("This item is StorageSign.break."); flag = true; break importLoop; } @@ -615,31 +790,43 @@ public void onItemMove(InventoryMoveItemEvent event) { } //搬入先が見つかった(搬入するとは言ってない) if (flag) { + logger.debug("Import Sign."); importSign(sign, storageSign, item, event.getDestination()); } } //搬出用にリセット + logger.debug("config.getBoolean(\"auto-export\"): " + config.getBoolean("auto-export")); if (config.getBoolean("auto-export")) { blockInventory[0] = null; blockInventory[1] = null; flag = false; + logger.trace("event.getSource(): " + event.getSource()); + logger.trace("event.getSource().getLocation(): " + event.getSource().getLocation()); + logger.trace("event.getSource().getHolder(): " + event.getSource().getHolder()); if (event.getSource().getLocation() == null){ - ;//一時インベントリ + //一時インベントリ + logger.debug("This Event is Temp Inventory."); } else if (event.getSource().getHolder() instanceof Minecart){ - ; + logger.debug("This Event is Minecart."); } else if (event.getSource().getHolder() instanceof DoubleChest) { + logger.debug("This Event is DoubleChest."); DoubleChest lc = (DoubleChest) event.getSource().getHolder(); blockInventory[0] = (BlockState) lc.getLeftSide(); blockInventory[1] = (BlockState) lc.getRightSide(); } else if (!(event.getSource().getHolder() instanceof BlockState)){ - ;//ブロック情報が取得できない時も何もしない + //ブロック情報が取得できない時も何もしない + logger.debug("This Event not get BlockState."); } else { + logger.debug("BlockState Set."); blockInventory[0] = (BlockState) event.getSource().getHolder(); + logger.trace("blockInventory[0]: " + blockInventory[0]); } exportLoop: for (int j = 0; j < 2; j++) { + logger.trace("j: " + j); + logger.trace("blockInventory[j]: " + blockInventory[j]); if (blockInventory[j] == null) { break; } @@ -647,18 +834,33 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - if (i == 0 && isSignPost(block) && isStorageSign(block)) { + boolean relIsSignPost = isSignPost(block); + boolean relIsStorageSign = isStorageSign(block); + boolean relIsWallSign = isWallSign(block); + logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); + logger.trace("i: " + i); + logger.trace("face[i]: " + face[i]); + logger.trace("block: " + block); + logger.trace("relIsSignPost: " + relIsSignPost); + logger.trace("relIsStorageSign: " + relIsStorageSign); + logger.trace("relIsWallSign: " + relIsWallSign); + logger.trace("((WallSign) block.getBlockData()).getFacing(): " + ((WallSign) block.getBlockData()).getFacing()); + if (i == 0 && relIsSignPost && relIsStorageSign) { sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug("This item is StorageSign.break."); flag = true; break exportLoop; } - } else if (i != 0 && isWallSign(block) - && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign(block)) { + } else if (i != 0 && relIsWallSign + && ((WallSign) block.getBlockData()).getFacing() == face[i] && relIsStorageSign) { sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { + logger.debug("This item is StorageSign.break."); flag = true; break exportLoop; } @@ -666,32 +868,47 @@ public void onItemMove(InventoryMoveItemEvent event) { } } if (flag) { + logger.debug("Export Sign."); exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); } } + logger.debug("★onItemMove:End."); } private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv) { + logger.debug("importSign:Start"); //搬入 条件 1スタック以上アイテムが入っている + logger.trace("inv.containsAtLeast(item, item.getMaxStackSize()): " + inv.containsAtLeast(item, item.getMaxStackSize())); if (inv.containsAtLeast(item, item.getMaxStackSize())) { + logger.debug("Item is more 1s.Import Item."); inv.removeItem(item); storageSign.addAmount(item.getAmount()); } for (int i = 0; i < 4; i++) { + logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } + logger.debug("update Sign."); sign.update(); } //搬出先ブロックに枠指定があると事故る private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv, Inventory dest) { + logger.debug("exportSign:Start."); + logger.trace("item: " + item); + logger.trace("!inv.containsAtLeast(item, item.getMaxStackSize(): " + !inv.containsAtLeast(item, item.getMaxStackSize())); + logger.trace("storageSign.getAmount(): " + storageSign.getAmount()); + logger.trace("item.getAmount(): " + item.getAmount()); if (!inv.containsAtLeast(item, item.getMaxStackSize()) && storageSign.getAmount() >= item.getAmount()) { int stacks = 0; int amount = 0; ItemStack[] contents = dest.getContents(); + logger.trace("dest.getType(): " + dest.getType()); + logger.trace("item.getType(): " + item.getType()); + // TODO 1.21でアイテム追加。 if (dest.getType() == InventoryType.BREWING) { switch (item.getType()) { case NETHER_WART://上 @@ -710,101 +927,177 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve case PUFFERFISH: case TURTLE_HELMET: case PHANTOM_MEMBRANE: - if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + //上から搬入 + logger.debug("This item is PHANTOM_MEMBRANE."); + logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); + logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); + logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); + logger.trace("contents[3]: " + contents[3]); + if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) { + logger.debug("This item import at up."); if (contents[3] != null && !item.isSimilar(contents[3])) { - return;//他のアイテムが詰まってる + //他のアイテムが詰まってる + logger.debug("This item is clog."); + return; } else { + logger.debug("This item Export."); break; } } else { + logger.debug("This item import not."); return; } - case BLAZE_POWDER://横or上 + case BLAZE_POWDER: + //横or上 + logger.debug("This item is BLAZE_POWDER."); + logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); + logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); + logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); + logger.trace("inv.getLocation().getBlockY() == dest.getLocation().getBlockY(): " + (inv.getLocation().getBlockY() == dest.getLocation().getBlockY())); if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + logger.debug("This item import at up."); + logger.trace("contents[3]: " + contents[3]); if (contents[3] != null && !item.isSimilar(contents[3])) { - return;//他のアイテムが詰まってる + //他のアイテムが詰まってる + logger.debug("This item is clog."); + return; } else { + logger.debug("This item import not."); break; } } else if (inv.getLocation().getBlockY() == dest.getLocation().getBlockY()) {//横 + logger.debug("This item import at beside."); + logger.trace("contents[4]: " + contents[4]); if (contents[4] != null && contents[4].getAmount() == 64) { - return;//パウダー詰まり + //パウダー詰まり + logger.debug("This item is clog."); + return; } else { + logger.debug("This item Export."); break; } } else { + logger.debug("This item import not."); return; } case POTION: case SPLASH_POTION: - case LINGERING_POTION://横or下 + case LINGERING_POTION: + //横or下 + logger.debug("This item is POTIONS."); + logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); + logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); + logger.trace("inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY())); if (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()) { + logger.debug("This item import at beside or down."); + logger.trace("contents[0]: " + contents[0]); + logger.trace("contents[1]: " + contents[1]); + logger.trace("contents[2]: " + contents[2]); if (contents[0] != null && contents[1] != null && contents[2] != null) { + logger.debug("This item is clog."); return; } else { + logger.debug("This item Export."); break; } } else { + logger.debug("This item import not."); return; } default://ロスト回避 + logger.debug("This Item not support BREW Item."); return; - } - - } else if (dest.getType() == InventoryType.FURNACE || dest.getType() == InventoryType.BLAST_FURNACE || dest.getType() == InventoryType.SMOKER) { + logger.debug("This Type is Furnace Series."); + logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); + logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); + logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY(): " + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 + logger.debug("This item import at up."); + logger.trace("contents[0]: " + contents[0]); if (contents[0] != null && !item.isSimilar(contents[0])) { - return;//他のアイテムが詰まってる + //他のアイテムが詰まってる + logger.debug("This item is clog."); + return; } - } else {//横から(下から) + } else { + //横から(下から) + logger.debug("This item import at beside or down."); + logger.trace("contents[1]: " + contents[1]); if (!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) { - return;//燃料以外 or 他のアイテムが詰まってる + //燃料以外 or 他のアイテムが詰まってる + logger.debug("This item is clog or not Fuel."); + return; } } } - for (int i = 0; i < contents.length; i++) {//PANPANによるロスト回避 + + logger.debug("Export Item"); + //PANPANによるロスト回避 + for (int i = 0; i < contents.length; i++) { + logger.trace("i: " + i); + logger.trace("contents[i]: " + contents[i]); if (item.isSimilar(contents[i])) { stacks++; amount += contents[i].getAmount(); + logger.trace("stacks: " + stacks); + logger.trace("amount: " + amount); } } + logger.trace("amount == stacks * item.getMaxStackSize(): " + (amount == stacks * item.getMaxStackSize() )); + logger.trace("dest.firstEmpty() == -1: " + (dest.firstEmpty() == -1)); if (amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) { + logger.debug("Item less than Stack.not Export."); return; } + logger.debug("Export Item to Inventory."); inv.addItem(item); storageSign.addAmount(-item.getAmount()); } for (int i = 0; i < 4; i++) { + logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); } sign.update(); + logger.debug("ExportSign:End"); } @EventHandler public void onPlayerCraft(CraftItemEvent event) { + logger.debug("★onPlayerCraft:Start"); + logger.trace("isStorageSign(event.getCurrentItem()): " + isStorageSign(event.getCurrentItem())); + logger.trace("!event.getWhoClicked().hasPermission(\"storagesign.craft\")" + !event.getWhoClicked().hasPermission("storagesign.craft")); if (isStorageSign(event.getCurrentItem()) && !event.getWhoClicked() .hasPermission("storagesign.craft")) { + logger.debug("This user hasn't Permission. storagesign.craft."); ((CommandSender) event.getWhoClicked()).sendMessage( ChatColor.RED + config.getString("no-permisson")); event.setCancelled(true); } + logger.debug("★onPlayerCraft:End"); } @EventHandler public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに投げ込まれたとき + logger.debug("★onInventoryPickup:Start"); + logger.trace("event.isCancelled(): " + event.isCancelled()); + logger.trace("!config.getBoolean(\"auto-import\"): " + !config.getBoolean("auto-import")); if (event.isCancelled() || !config.getBoolean("auto-import")) { + logger.debug("★eventCancelled or not set permission.auto-import."); return; } InventoryHolder holder = event.getInventory().getHolder(); + logger.trace("holder: " + holder); if (holder instanceof BlockState) { + logger.debug("holder has BlockState."); + Sign sign = null; StorageSign storageSign = null; boolean flag = false; @@ -812,53 +1105,95 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = ((BlockState) holder).getBlock().getRelative(face[i]); - if (i == 0 && isSignPost(block) && isStorageSign(block)) { + boolean relIsSignPost = isSignPost(block); + boolean relIsStorageSign = isStorageSign(block); + boolean relIsWallSign = isWallSign(block); + logger.trace(" i: " + i); + logger.trace(" relIsSignPost: " + relIsSignPost); + logger.trace(" relIsStorageSign: " + relIsStorageSign); + logger.trace(" relIsWallSign: " + relIsWallSign); + logger.trace(" face[i]: " + face[i]); + logger.trace(" ((WallSign) block.getBlockData()).getFacing() == face[i]: " + (((WallSign) block.getBlockData()).getFacing() == face[i])); + if (i == 0 && relIsSignPost && relIsStorageSign) { + logger.debug(" This block is StorageSign."); sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace(" storageSign.isSimilar(event.getItem().getItemStack()): " + storageSign.isSimilar(event.getItem().getItemStack())); if (storageSign.isSimilar(event.getItem().getItemStack())) { + logger.debug(" this Item is Import Item."); flag = true; break; } - } else if (i != 0 && isWallSign(block) - && ((WallSign) block.getBlockData()).getFacing() == face[i] && isStorageSign( - block)) {//BlockFaceに変更?(めんどい) + } else if (i != 0 && relIsWallSign + && ((WallSign) block.getBlockData()).getFacing() == face[i] && relIsStorageSign) { + //BlockFaceに変更?(めんどい) + logger.debug(" This block is WallStorageSign."); sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); + logger.trace(" storageSign.isSimilar(event.getItem().getItemStack()): " + storageSign.isSimilar(event.getItem().getItemStack())); if (storageSign.isSimilar(event.getItem().getItemStack())) { + logger.debug(" this Item is Import Item."); flag = true; break; } } } if (flag) { + logger.debug("Import Item."); importSign(sign, storageSign, event.getItem().getItemStack(), event.getInventory()); } } + logger.debug("★onInventoryPickup:End"); } @EventHandler public void onPlayerPickupItem(EntityPickupItemEvent event) { + logger.debug("★onPlayerPickupItem:Start"); + logger.trace("event.isCancelled(): " + event.isCancelled()); if (event.isCancelled()) { + logger.debug("★Event Cancelled."); return; } + + logger.trace("event.getEntityType(): " + event.getEntityType()); + logger.trace("config.getBoolean(\"autocollect\"): " + config.getBoolean("autocollect")); if (event.getEntityType() == EntityType.PLAYER && config.getBoolean("autocollect")) { Player player = (Player) event.getEntity(); PlayerInventory playerInv = player.getInventory(); ItemStack item = event.getItem().getItemStack(); StorageSign storagesign = null; + + logger.trace("!player.hasPermission(\"storagesign.autocollect\"): " + !player.hasPermission("storagesign.autocollect")); //ここでは、エラーを出さずに無視する if (!player.hasPermission("storagesign.autocollect")) { + logger.debug("★This user hasn't Permission. storagesign.autocollect."); return; } - if (isStorageSign(playerInv.getItemInMainHand())) { + + boolean mainHandhasSS = isStorageSign(playerInv.getItemInMainHand()); + boolean offHandhasSS = isStorageSign(playerInv.getItemInOffHand()); + logger.trace("mainHandhasSS: " + mainHandhasSS); + logger.trace("offHandisSS: " + offHandhasSS); + logger.debug("check mainHand has SS."); + if (mainHandhasSS) { + logger.debug("MainHand has StorageSign."); storagesign = new StorageSign(playerInv.getItemInMainHand(), logger); + + logger.trace("storagesign.getContents(): " + storagesign.getContents()); if (storagesign.getContents() != null) { + logger.debug("This SS is not Empty"); + logger.trace("storagesign.isSimilar(item): " + storagesign.isSimilar(item)); + logger.trace("playerInv.containsAtLeast(item, item.getMaxStackSize()): " + playerInv.containsAtLeast(item, item.getMaxStackSize())); + logger.trace("storagesign.getStackSize(): " + storagesign.getStackSize()); if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { + logger.debug("★Pickup Item to StorageSign."); storagesign.addAmount(item.getAmount()); - playerInv.removeItem(item);//1.9,10ではバグる? + + //1.9,10ではバグる? + playerInv.removeItem(item); playerInv.setItemInMainHand(storagesign.getStorageSign()); player.updateInventory(); //event.getItem().remove(); @@ -868,12 +1203,19 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { } } } - if (isStorageSign(playerInv.getItemInOffHand())) {//メインハンドで回収されなかった時 + logger.debug("check offHand has SS."); + if (offHandhasSS) {//メインハンドで回収されなかった時 + logger.debug("OffHand has StorageSign."); storagesign = new StorageSign(playerInv.getItemInOffHand(), logger); if (storagesign.getContents() != null) { + logger.debug("This SS is not Empty"); + logger.trace("storagesign.isSimilar(item): " + storagesign.isSimilar(item)); + logger.trace("playerInv.containsAtLeast(item, item.getMaxStackSize()): " + playerInv.containsAtLeast(item, item.getMaxStackSize())); + logger.trace("storagesign.getStackSize(): " + storagesign.getStackSize()); if (storagesign.isSimilar(item) && playerInv.containsAtLeast(item, item.getMaxStackSize()) && storagesign.getStackSize() == 1) { + logger.debug("★Pickup Item to StorageSign."); storagesign.addAmount(item.getAmount()); playerInv.removeItem(item); playerInv.setItemInOffHand(storagesign.getStorageSign()); @@ -885,17 +1227,25 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { } } } - }//SSをプレイヤー以外拾えなくする + } + //SSをプレイヤー以外拾えなくする if (event.getEntityType() != EntityType.PLAYER) { + logger.debug("This Entity isn't Player."); Item item = event.getItem(); - if (isStorageSign(item.getItemStack())) { + + boolean isStorageSign = isStorageSign(item.getItemStack()); + logger.trace("isStorageSign(item.getItemStack()): " + isStorageSign); + if (isStorageSign) { + logger.debug("Delay Picked Entity StorageSign."); item.setPickupDelay(20);//毎tickキャンセルしてたら重そう event.setCancelled(true); } } + logger.debug("★onPlayerPickupItem:End."); } private boolean isSignPost(Block block) { + logger.debug(" isSignPort(Block)"); Material mat = block.getType(); return isSignPost(mat); } @@ -907,6 +1257,9 @@ private boolean isWallSign(Block block) { //看板も8種類になったし、mat版おいとく private boolean isSignPost(Material mat) { + logger.debug(" isSignPost(Material): Start"); + + logger.trace(" mat: " + mat); switch (mat) { case OAK_SIGN: case BIRCH_SIGN: @@ -919,13 +1272,18 @@ private boolean isSignPost(Material mat) { case MANGROVE_SIGN: case CHERRY_SIGN: case BAMBOO_SIGN: + logger.debug(" this Material is Sign."); return true; default: } + logger.debug(" this Material isn't Sign."); return false; } private boolean isWallSign(Material mat) { + logger.debug(" isWallSign(Material): Start"); + + logger.trace(" mat: " + mat); switch (mat) { case OAK_WALL_SIGN: case BIRCH_WALL_SIGN: @@ -938,14 +1296,19 @@ private boolean isWallSign(Material mat) { case MANGROVE_WALL_SIGN: case CHERRY_WALL_SIGN: case BAMBOO_WALL_SIGN: + logger.debug(" this Material is WallSign."); return true; default: } + logger.debug(" this Material isn't WallSign."); return false; } private boolean isDye(ItemStack item) { + logger.debug(" isDye: Start"); Material mat = item.getType(); + + logger.trace(" mat: " + mat); switch (mat) { case WHITE_DYE: case ORANGE_DYE: @@ -970,7 +1333,10 @@ private boolean isDye(ItemStack item) { } private DyeColor getDyeColor(ItemStack item) { + logger.debug("getDyeColor: Start"); Material mat = item.getType(); + + logger.trace("mat: " + mat); switch (mat) { case WHITE_DYE: return DyeColor.WHITE; @@ -1010,7 +1376,10 @@ private DyeColor getDyeColor(ItemStack item) { } private boolean isSac(ItemStack item) { + logger.debug(" isSac: Start"); Material mat = item.getType(); + + logger.trace(" mat: " + mat); switch (mat) { case INK_SAC: case GLOW_INK_SAC: @@ -1021,7 +1390,10 @@ private boolean isSac(ItemStack item) { } private boolean isGlowSac(ItemStack item) { + logger.debug(" isSac: Start"); Material mat = item.getType(); + + logger.trace(" mat: " + mat); switch (mat) { case INK_SAC: return false; From d89fd4ebd2244d3964aaa54c6a5cef8c1fbfff4a Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 16 Apr 2024 15:34:36 +0900 Subject: [PATCH 28/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20SS=E3=81=AE?= =?UTF-8?q?=E7=B7=A8=E9=9B=86=E7=94=BB=E9=9D=A2=E3=82=92=E9=96=8B=E3=81=8B?= =?UTF-8?q?=E3=81=9B=E3=81=AA=E3=81=84=E8=A8=AD=E5=AE=9A=E3=80=82=20?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E3=81=AE=E7=9C=8B=E6=9D=BF=E3=82=92=E9=96=8B?= =?UTF-8?q?=E3=81=84=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AB=E7=B7=A8=E9=9B=86?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E3=81=8C=E5=8F=8D=E6=98=A0=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=80=81=E4=B8=8A=E3=81=A8=E5=90=8C=E6=99=82?= =?UTF-8?q?=E3=81=AB=E5=87=A6=E7=90=86=E3=82=92=E6=92=A4=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 14 +++++++-- .../wacky/storagesign/StorageSignCore.java | 30 ++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index b821066..d1a0ea3 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -502,6 +502,17 @@ private ItemStack emptyHorseEgg() { * @return 取得した文字列 */ public String getSigntext(int i) { + String[] sign = getSigntexts(); + + return sign[i]; + } + + /** + * StrageSignから、設置されている看板として表示される文字列配列を取得します. + * + * @return 取得した文字列 + */ + public String[] getSigntexts() { String[] sign = new String[4]; sign[0] = "StorageSign"; @@ -511,9 +522,8 @@ public String getSigntext(int i) { + String.valueOf(this.amount % 3456 / 64) + "s " + String.valueOf(this.amount % 64); - return sign[i]; + return sign; } - /** * StrageSignの内容を取得します. * diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index c3cdc7d..fb704ba 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -40,6 +40,7 @@ import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerSignOpenEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; @@ -544,14 +545,6 @@ public void onSignChange(SignChangeEvent event) { logger.debug("★this Event is Cancelled!"); return; } - - logger.trace("event.getSide().equals(Side.BACK): " + event.getSide().equals(Side.BACK)); - // バックの場合、キャンセルイベントを発行して終了する - if (event.getSide().equals(Side.BACK)) { - logger.debug("★This Event is Execute BACK."); - event.setCancelled(true); - return; - } Sign sign = (Sign) event.getBlock().getState(); logger.trace("sign.getSide(Side.FRONT).getLine(0):" + sign.getSide(Side.FRONT).getLine(0)); @@ -695,6 +688,27 @@ public void onBlockPlace(BlockPlaceEvent event) { logger.debug("★onBlockPlace: End"); } + @EventHandler + public void onPlayerSignOpen(PlayerSignOpenEvent event){ + logger.debug("★onPlayerSignOpen:Start"); + + logger.trace("event.isCancelled(): " + event.isCancelled()); + if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); + return; + } + + Block block = event.getSign().getBlock(); + boolean isStorageSign = isStorageSign(block); + logger.trace("isStorageSign: " + isStorageSign); + if (isStorageSign) { + logger.debug("StorageSignEdit Cancel."); + event.setCancelled(true); + } + + logger.debug("★onPlayerSignOpen:End"); + } + @EventHandler public void onItemMove(InventoryMoveItemEvent event) { From ab176ed8aeb4ac6e31b2d016ae8fe4134ab12f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8F=E3=81=A3=E3=81=8D=E3=83=BC?= Date: Sun, 15 Oct 2017 03:12:24 +0900 Subject: [PATCH 29/82] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6459864 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 wackyls6 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 12469709d22e4f03acd9ac6c245d16d6d4fc21ee Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 17 Apr 2024 16:04:09 +0900 Subject: [PATCH 30/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20SS=E3=81=AE?= =?UTF-8?q?=E3=83=89=E3=83=AD=E3=83=83=E3=83=97=E5=87=A6=E7=90=86=E3=81=AE?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E5=8C=96=20=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E5=9F=8B=E3=82=81=E3=81=AE=E9=9A=9B=E3=80=81onItemMov?= =?UTF-8?q?e=E3=81=A7WallSign=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=8C?= =?UTF-8?q?=E5=87=BA=E3=81=A6=E3=81=84=E3=81=9F=E9=83=A8=E5=88=86=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=80=82=20exportItems=E3=81=AE=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92Paper=E7=94=A8=E3=81=AB=E5=88=A5=E3=81=AE?= =?UTF-8?q?=E3=82=82=E3=81=AE=E3=81=AB=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88?= =?UTF-8?q?=20SS=E3=81=8C=E8=90=BD=E4=B8=8B=E3=83=96=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=AB=E3=81=A4=E3=81=84=E3=81=9F=E3=81=A8=E3=81=8D?= =?UTF-8?q?=E3=80=81=E5=85=83=E3=81=AE=E7=9C=8B=E6=9D=BF=E3=81=AB=E6=88=BB?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E7=8F=BE=E8=B1=A1=E3=82=92?= =?UTF-8?q?SS=E3=81=AE=E3=81=BE=E3=81=BE=E4=BF=9D=E6=8C=81=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wacky/storagesign/StorageSignCore.java | 197 +++++++++++------- src/main/resources/config.yml | 1 + 2 files changed, 127 insertions(+), 71 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index fb704ba..3264f3d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -23,6 +23,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.EntityType; +import org.bukkit.entity.FallingBlock; import org.bukkit.entity.Item; import org.bukkit.entity.Minecart; import org.bukkit.entity.Player; @@ -34,6 +35,7 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.SignChangeEvent; +import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; @@ -60,6 +62,7 @@ public class StorageSignCore extends JavaPlugin implements Listener { static BannerMeta ominousBannerMeta; public Logger logger; FileConfiguration config; + private boolean _fallingBlockSS; @Override public void onEnable() { @@ -114,6 +117,7 @@ public void onEnable() { logger.trace("no-bud is True."); new SignPhysicsEvent(this, logger); } + _fallingBlockSS = config.getBoolean("falling-block-itemSS"); logger.debug("★onEnable:End"); } @@ -578,51 +582,10 @@ public void onBlockBreak(BlockBreakEvent event) { logger.trace("event.isCancelled(): " + event.isCancelled()); if (event.isCancelled()) { logger.debug("★this Event is Cancelled!"); - return; - } - Block block = event.getBlock(); - Map breakSignMap = new HashMap<>(); - boolean isStorageSign = isStorageSign(block); - logger.trace("isStorageSign: " + isStorageSign); - if (isStorageSign) { - logger.debug("breakItem is StorageSign."); - breakSignMap.put(block.getLocation(), - new StorageSign((Sign) block.getState(), block.getType(), logger)); - } - - logger.debug("check Break relativeBlock."); - for (int i = 0; i < 5; i++) {//東西南北で判定 - logger.trace(" i: " + i); - BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, - BlockFace.WEST}; - block = event.getBlock().getRelative(face[i]); - - boolean relIsSignPost = isSignPost(block); - boolean relIsStorageSign = isStorageSign(block); - boolean relIsWallSign = isWallSign(block); - logger.trace(" block: " + block); - logger.trace(" relIsSignPost: " + relIsSignPost); - logger.trace(" relIsStorageSign: " + relIsStorageSign); - logger.trace(" relIsWallSign: " + relIsWallSign); - if (i == 0 && relIsSignPost && relIsStorageSign) { - logger.debug(" This Block is StorageSign."); - breakSignMap.put(block.getLocation(), - new StorageSign((Sign) block.getState(), block.getType(), logger)); - } else if (relIsWallSign && ((WallSign) block.getBlockData()).getFacing() == face[i] - && relIsStorageSign) { - logger.debug(" This Block is WallStorageSign."); - breakSignMap.put(block.getLocation(), - new StorageSign((Sign) block.getState(), block.getType(), logger)); - } + return; } - - logger.trace("breakSignMap.isEmpty(): " + breakSignMap.isEmpty()); - if (breakSignMap.isEmpty()) { - logger.debug("★This Block isn't block StorageSign."); - return; - } - - logger.trace("!event.getPlayer().hasPermission(\"storagesign.break\"): " + !event.getPlayer().hasPermission("storagesign.break")); + logger.trace("!event.getPlayer().hasPermission(\"storagesign.break\"): " + !event.getPlayer() + .hasPermission("storagesign.break")); if (!event.getPlayer().hasPermission("storagesign.break")) { logger.debug("★This user hasn't Permission. storagesign.break."); event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); @@ -630,18 +593,7 @@ public void onBlockBreak(BlockBreakEvent event) { return; } - logger.debug("Break StorageSign Set Item in World."); - for (Location loc : breakSignMap.keySet()) { - StorageSign sign = breakSignMap.get(loc); - logger.trace(" loc: " + loc); - logger.trace(" sign:" + sign); - - Location loc2 = loc; - loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる - loc.getWorld().dropItem(loc2, sign.getStorageSign()); - loc.getBlock().setType(Material.AIR); - logger.debug(" Storage Sign drop in World."); - } + dropRelativeSign(event.getBlock()); logger.debug("★onBlockBreak:End."); } @@ -774,7 +726,10 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("relIsSignPost: " + relIsSignPost); logger.trace("relIsStorageSign: " + relIsStorageSign); logger.trace("relIsWallSign: " + relIsWallSign); - logger.trace("((WallSign) block.getBlockData()).getFacing(): " + ((WallSign) block.getBlockData()).getFacing()); + if (relIsWallSign) { + logger.trace("((WallSign) block.getBlockData()).getFacing(): " + + ((WallSign) block.getBlockData()).getFacing()); + } if (i == 0 && relIsSignPost && relIsStorageSign) { if (item.getType() == Material.WHITE_BANNER) { // @@ -858,7 +813,10 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("relIsSignPost: " + relIsSignPost); logger.trace("relIsStorageSign: " + relIsStorageSign); logger.trace("relIsWallSign: " + relIsWallSign); - logger.trace("((WallSign) block.getBlockData()).getFacing(): " + ((WallSign) block.getBlockData()).getFacing()); + if (relIsWallSign) { + logger.trace("((WallSign) block.getBlockData()).getFacing(): " + + ((WallSign) block.getBlockData()).getFacing()); + } if (i == 0 && relIsSignPost && relIsStorageSign) { sign = (Sign) block.getState(); storageSign = new StorageSign(sign, block.getType(), logger); @@ -1052,6 +1010,8 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve } logger.debug("Export Item"); + int firstStackIndex = 0; + ItemStack firstStackItem = null; //PANPANによるロスト回避 for (int i = 0; i < contents.length; i++) { logger.trace("i: " + i); @@ -1059,25 +1019,49 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve if (item.isSimilar(contents[i])) { stacks++; amount += contents[i].getAmount(); - logger.trace("stacks: " + stacks); - logger.trace("amount: " + amount); + logger.trace(" stacks: " + stacks); + logger.trace(" amount: " + amount); } } - logger.trace("amount == stacks * item.getMaxStackSize(): " + (amount == stacks * item.getMaxStackSize() )); + logger.trace("amount == stacks * item.getMaxStackSize(): " + (amount + == stacks * item.getMaxStackSize())); logger.trace("dest.firstEmpty() == -1: " + (dest.firstEmpty() == -1)); - if (amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) { + if (amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) { logger.debug("Item less than Stack.not Export."); - return; - } + return; + } + + logger.debug("firstStackItem Set."); + for (ItemStack itm : inv.getContents()) { + logger.trace(" itm: " + itm); + logger.trace(" item.isSimilar(itm): " + item.isSimilar(itm)); + if (item.isSimilar(itm)) { + logger.debug(" firstStackItem Set."); + firstStackItem = itm.clone(); + logger.trace(" firstStackItem: " + firstStackItem); + logger.trace(" firstStackIndex: " + firstStackIndex); + break; + } + firstStackIndex++; + } + logger.trace("firstStackItem.getAmount()" + firstStackItem.getAmount()); + logger.trace("item.getAmount(): " + item.getAmount()); + firstStackItem.setAmount(firstStackItem.getAmount() + item.getAmount()); logger.debug("Export Item to Inventory."); - inv.addItem(item); + logger.trace("invAmount:" + inv.getItem(firstStackIndex).getAmount()); + logger.trace("ssAmount:" + storageSign.getAmount()); + + inv.setItem(firstStackIndex, firstStackItem); storageSign.addAmount(-item.getAmount()); + + logger.trace("afterInvAmount:" + inv.getItem(firstStackIndex).getAmount()); + logger.trace("afterSSAmount:" + storageSign.getAmount()); } - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } sign.update(); logger.debug("ExportSign:End"); } @@ -1127,7 +1111,10 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに logger.trace(" relIsStorageSign: " + relIsStorageSign); logger.trace(" relIsWallSign: " + relIsWallSign); logger.trace(" face[i]: " + face[i]); - logger.trace(" ((WallSign) block.getBlockData()).getFacing() == face[i]: " + (((WallSign) block.getBlockData()).getFacing() == face[i])); + if(relIsWallSign) { + logger.trace(" ((WallSign) block.getBlockData()).getFacing() == face[i]: " + ( + ((WallSign) block.getBlockData()).getFacing() == face[i])); + } if (i == 0 && relIsSignPost && relIsStorageSign) { logger.debug(" This block is StorageSign."); sign = (Sign) block.getState(); @@ -1205,7 +1192,6 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { logger.debug("★Pickup Item to StorageSign."); storagesign.addAmount(item.getAmount()); - //1.9,10ではバグる? playerInv.removeItem(item); playerInv.setItemInMainHand(storagesign.getStorageSign()); @@ -1258,8 +1244,21 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { logger.debug("★onPlayerPickupItem:End."); } + @EventHandler + public void onEntityChangeBlock(EntityChangeBlockEvent event) { + if(_fallingBlockSS){ + logger.debug("★onEntityChangeBlock:Start"); + logger.trace("event.getEntity(): " + event.getEntity()); + if (event.getEntity() instanceof FallingBlock fallingBlock) { + logger.debug("check Falling relativeBlock."); + dropRelativeSign(event.getBlock()); + } + logger.debug("★onEntityChangeBlock:End"); + } + } + private boolean isSignPost(Block block) { - logger.debug(" isSignPort(Block)"); + logger.debug(" isSignPost(Block)"); Material mat = block.getType(); return isSignPost(mat); } @@ -1318,6 +1317,62 @@ private boolean isWallSign(Material mat) { return false; } + private void dropRelativeSign(Block block) { + logger.debug(" dropRelativeSign:Start"); + Map breakSignMap = new HashMap<>(); + boolean isStorageSign = isStorageSign(block); + logger.trace(" isStorageSign: " + isStorageSign); + if (isStorageSign) { + logger.debug(" breakItem is StorageSign."); + breakSignMap.put(block.getLocation(), + new StorageSign((Sign) block.getState(), block.getType(), logger)); + } + + for (int i = 0; i < 5; i++) {//東西南北で判定 + logger.trace(" i: " + i); + BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, + BlockFace.WEST}; + Block relBlock = block.getRelative(face[i]); + + boolean relIsSignPost = isSignPost(relBlock); + boolean relIsStorageSign = isStorageSign(relBlock); + boolean relIsWallSign = isWallSign(relBlock); + logger.trace(" relBlock: " + relBlock); + logger.trace(" relIsSignPost: " + relIsSignPost); + logger.trace(" relIsStorageSign: " + relIsStorageSign); + logger.trace(" relIsWallSign: " + relIsWallSign); + if (i == 0 && relIsSignPost && relIsStorageSign) { + logger.debug(" This Block is StorageSign."); + breakSignMap.put(relBlock.getLocation(), + new StorageSign((Sign) relBlock.getState(), relBlock.getType(), logger)); + } else if (relIsWallSign && ((WallSign) relBlock.getBlockData()).getFacing() == face[i] + && relIsStorageSign) { + logger.debug(" This Block is WallStorageSign."); + breakSignMap.put(relBlock.getLocation(), + new StorageSign((Sign) relBlock.getState(), relBlock.getType(), logger)); + } + } + + logger.trace(" breakSignMap.isEmpty(): " + breakSignMap.isEmpty()); + if (breakSignMap.isEmpty()) { + logger.debug(" This Block isn't block StorageSign."); + return; + } + + logger.debug(" Break StorageSign Set Item in World."); + for (Location loc : breakSignMap.keySet()) { + StorageSign sign = breakSignMap.get(loc); + logger.trace(" loc: " + loc); + logger.trace(" sign:" + sign); + + Location loc2 = loc; + loc2.add(0.5, 0.5, 0.5);//中心にドロップさせる + loc.getWorld().dropItem(loc2, sign.getStorageSign()); + loc.getBlock().setType(Material.AIR); + logger.debug(" Storage Sign drop in World."); + } + } + private boolean isDye(ItemStack item) { logger.debug(" isDye: Start"); Material mat = item.getType(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6b9438f..6ecde02 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -12,3 +12,4 @@ hardrecipe: false divide-limit: 345600 no-bud: false +falling-block-itemSS: false From 0bf4eb17a018d9cc9f6d044014461454f2796c11 Mon Sep 17 00:00:00 2001 From: fishfillet-krm <163864054+fishfillet-krm@users.noreply.github.com> Date: Wed, 17 Apr 2024 20:20:28 +0900 Subject: [PATCH 31/82] =?UTF-8?q?logger=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E6=9B=B8=E3=81=8D=E7=9B=B4=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 237 +++++++++--------- 1 file changed, 125 insertions(+), 112 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 652b43c..b7a9ef8 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -66,20 +66,20 @@ public class StorageSign { */ public StorageSign(ItemStack item, Logger logger) { this._logger = logger; - logger.debug("public StorageSign(ItemStack item, Logger logger)"); + logger.debug("StorageSign:start"); String[] str = item.getItemMeta().getLore().get(0).split(" "); if (str[0].matches("Empty")) { - logger.debug("str[0].matches(\"Empty\")"); + logger.debug("StorageSign is Empty"); this.isEmpty = true; } else { - logger.debug("(str[0].matches(\"Empty\")_else"); + logger.debug("StorageSign isn't Empty"); this.mat = getMaterial(str[0].split(":")[0]); if (this.mat == Material.ENCHANTED_BOOK) { - logger.debug("this.mat == Material.ENCHANTED_BOOK"); + logger.debug("StorageSign have ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -87,7 +87,7 @@ public StorageSign(ItemStack item, Logger logger) { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - logger.debug("this.mat == (S.L)POTION"); + logger.debug("StorageSign have any Potion"); // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2], logger); @@ -96,14 +96,13 @@ public StorageSign(ItemStack item, Logger logger) { this.pot = pi.getPotionType(); } else if (str[0].contains(":")) { - logger.debug("str[0].contains(\":\")"); + logger.debug("str[0].contains\":\""); this.damage = NumberConversions.toShort(str[0].split(":")[1]); } else if (this.mat == Material.STONE_SLAB) { - logger.debug("distinction1(this.mat == Material.STONE_SLAB)"); + logger.debug("StorageSign have STONE_SLAB"); //1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; - logger.debug("this.mat = Material.SMOOTH_STONE_SLAB"); } this.amount = NumberConversions.toInt(str[1]); @@ -111,6 +110,7 @@ public StorageSign(ItemStack item, Logger logger) { this.smat = item.getType(); this.stack = item.getAmount(); + logger.debug("StorageSign:end"); } //Sto(ry @@ -123,7 +123,7 @@ public StorageSign(ItemStack item, Logger logger) { */ public StorageSign(Sign sign, Material signmat, Logger logger) { this._logger = logger; - logger.debug("public StorageSign(Sign sign, Material signmat, Logger logger)"); + logger.debug("StorageSign(Material signmat):start"); //上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); @@ -131,7 +131,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { || this.mat == Material.AIR); if (this.mat == Material.ENCHANTED_BOOK) { - logger.debug("this.mat == Material.ENCHANTED_BOOK"); + logger.debug("ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); @@ -139,7 +139,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - logger.debug("this.mat == (S.L)POTION"); + logger.debug("any POTION"); // PotionInfo pi = new PotionInfo(mat, line2); PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2], logger); this.mat = pi.getMaterial(); @@ -147,14 +147,13 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.pot = pi.getPotionType(); } else if (line2.length == 2) { - logger.debug("line2.length == 2"); + logger.debug("line2.length is 2"); this.damage = NumberConversions.toShort(line2[1]); } else if (this.mat == Material.STONE_SLAB) { - logger.debug("distinction2(this.mat == Material.STONE_SLAB)"); + logger.debug("StorageSign2:STONE_SLAB"); //1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; - logger.debug("this.mat = Material.SMOOTH_STONE_SLAB"); } @@ -164,55 +163,56 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { //壁掛け看板のチェック if (signmat == Material.OAK_WALL_SIGN) { - logger.debug("signmat == Material.OAK_WALL_SIGN"); + logger.debug("signmat is OAK_WALL_SIGN"); this.smat = Material.OAK_SIGN; } else if (signmat == Material.BIRCH_WALL_SIGN) { - logger.debug("signmat == Material.BIRCH_WALL_SIGN"); + logger.debug("signmat is BIRCH_WALL_SIGN"); this.smat = Material.BIRCH_SIGN; } else if (signmat == Material.SPRUCE_WALL_SIGN) { - logger.debug("signmat == Material.SPRUCE_WALL_SIGN"); + logger.debug("signmat is SPRUCE_WALL_SIGN"); this.smat = Material.SPRUCE_SIGN; } else if (signmat == Material.JUNGLE_WALL_SIGN) { - logger.debug("signmat == Material.JUNGLE_WALL_SIGN"); + logger.debug("signmat is JUNGLE_WALL_SIGN"); this.smat = Material.JUNGLE_SIGN; } else if (signmat == Material.ACACIA_WALL_SIGN) { - logger.debug("signmat == Material.ACACIA_WALL_SIGN"); + logger.debug("signmat is ACACIA_WALL_SIGN"); this.smat = Material.ACACIA_SIGN; } else if (signmat == Material.DARK_OAK_WALL_SIGN) { - logger.debug("signmat == Material.DARK_OAK_WALL_SIGN"); + logger.debug("signmat is DARK_OAK_WALL_SIGN"); this.smat = Material.DARK_OAK_SIGN; } else if (signmat == Material.CRIMSON_WALL_SIGN) { - logger.debug("signmat == Material.CRIMSON_WALL_SIGN"); + logger.debug("signmat is CRIMSON_WALL_SIGN"); this.smat = Material.CRIMSON_SIGN; } else if (signmat == Material.WARPED_WALL_SIGN) { - logger.debug("signmat == Material.WARPED_WALL_SIGN"); + logger.debug("signmat is WARPED_WALL_SIGN"); this.smat = Material.WARPED_SIGN; } else if (signmat == Material.MANGROVE_WALL_SIGN) { - logger.debug("signmat == Material.MANGROVE_WALL_SIGN"); + logger.debug("signmat is MANGROVE_WALL_SIGN"); this.smat = Material.MANGROVE_SIGN; } else if (signmat == Material.CHERRY_WALL_SIGN) { - logger.debug("signmat == Material.CHERRY_WALL_SIGN"); + logger.debug("signmat is CHERRY_WALL_SIGN"); this.smat = Material.CHERRY_SIGN; } else if (signmat == Material.BAMBOO_WALL_SIGN) { - logger.debug("signmat == Material.BAMBOO_WALL_SIGN"); + logger.debug("signmat is BAMBOO_WALL_SIGN"); this.smat = Material.BAMBOO_SIGN; } else { - logger.debug("this.smat = signmat"); + logger.debug("Material isn't WALL_SIGN"); this.smat = signmat; } + logger.debug("StorageSign(Material signmat):end"); } /** @@ -250,7 +250,7 @@ public static ItemStack emptySign(Material smat) { * @return Material */ protected Material getMaterial(String str) { - _logger.debug("protected Material getMaterial(String str)"); + _logger.debug("getMaterial:start"); // if (str.matches("EmptySign")) { // return Material.END_PORTAL; // } @@ -260,106 +260,106 @@ protected Material getMaterial(String str) { //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; if (str.matches("")) { - _logger.debug("str.matches(\"\""); + _logger.debug("Material is AIR"); return Material.AIR; } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { - _logger.debug("str.matches(\"EmptySign\"or\"OakStorageSign\""); + _logger.debug("Material is OakStorageSign"); this.damage = 1; return Material.OAK_SIGN; } else if (str.matches("SpruceStorageSign")) { - _logger.debug("str.matches(\"SpruceStorageSign\""); + _logger.debug("Material is SpruceStorageSign"); this.damage = 1; return Material.SPRUCE_SIGN; } else if (str.matches("BirchStorageSign")) { - _logger.debug("str.matches(\"BirchStorageSign\""); + _logger.debug("Material is BirchStorageSign"); this.damage = 1; return Material.BIRCH_SIGN; } else if (str.matches("JungleStorageSign")) { - _logger.debug("str.matches(\"JungleStorageSign\""); + _logger.debug("Material is JungleStorageSign"); this.damage = 1; return Material.JUNGLE_SIGN; } else if (str.matches("AcaciaStorageSign")) { - _logger.debug("str.matches(\"AcaciaStorageSign\""); + _logger.debug("Material is AcaciaStorageSign"); this.damage = 1; return Material.ACACIA_SIGN; } else if (str.matches("DarkOakStorageSign")) { - _logger.debug("str.matches(\"DarkOakStorageSign\""); + _logger.debug("Material is DarkOakStorageSign"); this.damage = 1; return Material.DARK_OAK_SIGN; } else if (str.matches("CrimsonStorageSign")) { - _logger.debug("str.matches(\"CrimsonStorageSign\""); + _logger.debug("Material is CrimsonStorageSign"); this.damage = 1; return Material.CRIMSON_SIGN; } else if (str.matches("WarpedStorageSign")) { - _logger.debug("str.matches(\"WarpedStorageSign\""); + _logger.debug("Material is WarpedStorageSign"); this.damage = 1; return Material.WARPED_SIGN; } else if (str.matches("MangroveStorageSign")) { - _logger.debug("str.matches(\"MangroveStorageSign\""); + _logger.debug("Material is MangroveStorageSign"); this.damage = 1; return Material.MANGROVE_SIGN; } else if (str.matches("CherryStorageSign")) { - _logger.debug("str.matches(\"CherryStorageSign\""); + _logger.debug("Material is CherryStorageSign"); this.damage = 1; return Material.CHERRY_SIGN; } else if (str.matches("BambooStorageSign")) { - _logger.debug("str.matches(\"BambooStorageSign\""); + _logger.debug("Material is BambooStorageSign"); this.damage = 1; return Material.BAMBOO_SIGN; } if (str.matches("HorseEgg")) { - _logger.debug("str.matches(\"HorseEgg\")"); + _logger.debug("Material is HorseEgg"); this.damage = 1; return Material.END_PORTAL; //ガスト卵でよくね? } //1.13→1.14用 if (str.startsWith("SIGN")) { - _logger.debug("str.startsWith(\"SIGN\")"); + _logger.debug("Material is SIGN"); return Material.OAK_SIGN; } if (str.startsWith("ROSE_RED")) { - _logger.debug("(str.startsWith(\"ROSE_RED\")"); + _logger.debug("Material is ROSE_RED"); return Material.RED_DYE; } if (str.startsWith("DANDELION_YELLOW")) { - _logger.debug("str.startsWith(\"DANDELION_YELLOW\""); + _logger.debug("Material is DANDELION_YELLOW"); return Material.YELLOW_DYE; } if (str.startsWith("CACTUS_GREEN")) { - _logger.debug("str.startsWith(\"CACTUS_GREEN\")"); + _logger.debug("Material is CACTUS_GREEN"); return Material.GREEN_DYE; } //省略用 if (str.startsWith("ENCHBOOK")) { - _logger.debug("str.startsWith(\"ENCHBOOK\")"); + _logger.debug("Material is ENCHBOOK"); return Material.ENCHANTED_BOOK; } if (str.startsWith("SPOTION")) { - _logger.debug("str.startsWith(\"SPOTION\")"); + _logger.debug("Material is SPOTION"); return Material.SPLASH_POTION; } if (str.startsWith("LPOTION")) { - _logger.debug("str.startsWith(\"LPOTION\")"); + _logger.debug("Material is LPOTION"); return Material.LINGERING_POTION; } Material mat = Material.matchMaterial(str); if (mat == null) { - _logger.debug("mat == null"); + _logger.debug("Material is null"); //後ろ切れる程度なら対応可 for (Material m : Material.values()) { if (m.toString().startsWith(str)) { @@ -369,6 +369,7 @@ protected Material getMaterial(String str) { } //nullなら空. + _logger.debug("Material isn't bifurcation"); return mat; } @@ -379,7 +380,7 @@ protected Material getMaterial(String str) { * @return Material */ public Material getMaterial() { - _logger.debug("getMaterial in StorageSign"); + _logger.debug("return this.mat"); return this.mat; } @@ -387,7 +388,7 @@ public Material getMaterial() { * フィールド変数:matのsetter. */ public void setMaterial(Material mat) { - _logger.debug("public void setMaterial(Material mat)"); + _logger.debug("setMaterial to Material mat"); this.mat = mat; } @@ -397,78 +398,78 @@ public void setMaterial(Material mat) { * @return Materialの短い名前 */ protected String getShortName() { - _logger.debug("protected String getShortName()"); + _logger.debug("getShortName:start"); //2行目の記載内容 if (this.mat == null || this.mat == Material.AIR) { - _logger.debug("this.mat == null or AIR"); + _logger.debug("empty"); return ""; } else if (this.mat == Material.END_PORTAL) { - _logger.debug("this.mat == Material.END_PORTAL"); + _logger.debug("Material.END_PORTAL"); if (this.damage == 0) { - _logger.debug("this.damage == 0"); + _logger.debug("OakStorageSign"); return "OakStorageSign"; } if (this.damage == 1) { - _logger.debug("this.damage == 1"); + _logger.debug("HorseEgg"); return "HorseEgg"; } } else if (this.mat == Material.OAK_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.OAK_SIGN && this.damage == 1"); + _logger.debug("OakStorageSign"); return "OakStorageSign"; } else if (this.mat == Material.SPRUCE_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.SPRUCE_SIGN && this.damage == 1"); + _logger.debug("SpruceStorageSign"); return "SpruceStorageSign"; } else if (this.mat == Material.BIRCH_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.BIRCH_SIGN && this.damage == 1"); + _logger.debug("BirchStorageSign"); return "BirchStorageSign"; } else if (this.mat == Material.JUNGLE_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.JUNGLE_SIGN && this.damage == 1"); + _logger.debug("JungleStorageSign"); return "JungleStorageSign"; } else if (this.mat == Material.ACACIA_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.ACACIA_SIGN & this.damage == 1"); + _logger.debug("AcaciaStorageSign"); return "AcaciaStorageSign"; } else if (this.mat == Material.DARK_OAK_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.DARK_OAK_SIGN & this.damage == 1"); + _logger.debug("DarkOakStorageSign"); return "DarkOakStorageSign"; } else if (this.mat == Material.CRIMSON_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.CRIMSON_SIGN & this.damage == 1"); + _logger.debug("CrimsonStorageSign"); return "CrimsonStorageSign"; } else if (this.mat == Material.WARPED_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.WARPED_SIGN & this.damage == 1"); + _logger.debug("WarpedStorageSign"); return "WarpedStorageSign"; } else if (this.mat == Material.MANGROVE_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.MANGROVE_SIGN & this.damage == 1"); + _logger.debug("MangroveStorageSign"); return "MangroveStorageSign"; } else if (this.mat == Material.CHERRY_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.CHERRY_SIGN & this.damage == 1"); + _logger.debug("CherryStorageSign"); return "CherryStorageSign"; } else if (this.mat == Material.BAMBOO_SIGN && this.damage == 1) { - _logger.debug("this.mat == Material.BAMBOO_SIGN & this.damage == 1"); + _logger.debug("BambooStorageSign"); return "BambooStorageSign"; //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; @@ -478,13 +479,13 @@ protected String getShortName() { //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; } else if (this.mat == Material.ENCHANTED_BOOK) { - _logger.debug("return \"ENCHBOOK:\" + Info"); + _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - _logger.debug("return PotionInfo.getSignData"); + _logger.debug("any POTION"); return PotionInfo.getSignData(this.mat, pot, this.damage); } //リミットブレイク @@ -495,21 +496,23 @@ protected String getShortName() { } if (this.mat.toString().length() > limit) { - _logger.debug("if (this.mat.toString().length() > limit)"); + _logger.debug("this.mat.toString().length() > limit"); if (this.damage != 0) { - _logger.debug("if (this.damage != 0)"); + _logger.debug("item damage isn't 0"); return this.mat.toString().substring(0, limit) + ":" + this.damage; } + _logger.debug("item damage is 0"); return this.mat.toString().substring(0, limit); } else { - _logger.debug("else (this.mat.toString().length() > limit)"); + _logger.debug("else this.mat.toString().length() > limit"); if (this.damage != 0) { - _logger.debug("if (this.damage != 0)"); + _logger.debug("item damage isn't 0"); return this.mat.toString() + ":" + this.damage; } + _logger.debug("item damage is 0"); return this.mat.toString(); } } @@ -520,7 +523,7 @@ protected String getShortName() { * @return ItemStack 空のStorageSign */ public ItemStack getStorageSign() { - _logger.debug("public ItemStack getStorageSign()"); + _logger.debug("getStorageSign:stert"); ItemStack item = new ItemStack(this.smat, this.stack); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("StorageSign"); @@ -528,11 +531,11 @@ public ItemStack getStorageSign() { //IDとMaterial名が混ざってたり、エンチャ本対応したり if (this.isEmpty) { - _logger.debug("if (this.isEmpty)"); + _logger.debug("Empty"); list.add("Empty"); } else if (this.mat == Material.ENCHANTED_BOOK) { - _logger.debug("this.mat == Material.ENCHANTED_BOOK"); + _logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage @@ -541,11 +544,11 @@ public ItemStack getStorageSign() { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - _logger.debug("this.mat == Material.(S.L)POTION"); + _logger.debug("any POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); } else { - _logger.debug("else (this.isEmpty)"); + _logger.debug("other"); list.add(getShortName() + " " + this.amount); } @@ -553,6 +556,7 @@ public ItemStack getStorageSign() { meta.setLore(list); item.setItemMeta(meta); + _logger.debug("getStorageSign:end"); return item; } @@ -562,7 +566,7 @@ public ItemStack getStorageSign() { * @return ItemStack 空のHoerseEgg */ private ItemStack emptyHorseEgg() { - _logger.debug("private ItemStack emptyHorseEgg()"); + _logger.debug("emptyHorseEgg:start"); ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); List list = new ArrayList<>(); @@ -572,6 +576,7 @@ private ItemStack emptyHorseEgg() { meta.setLore(list); emptyHorseEgg.setItemMeta(meta); + _logger.debug("emptyHorseEgg:end"); return emptyHorseEgg; } @@ -582,7 +587,7 @@ private ItemStack emptyHorseEgg() { * @return 取得した文字列 */ public String getSigntext(int i) { - _logger.debug("public String getSigntext(int i)"); + _logger.debug("getSigntext:start"); String[] sign = new String[4]; sign[0] = "StorageSign"; @@ -592,6 +597,7 @@ public String getSigntext(int i) { + String.valueOf(this.amount % 3456 / 64) + "s " + String.valueOf(this.amount % 64); + _logger.debug("getSigntext:end"); return sign[i]; } @@ -602,26 +608,28 @@ public String getSigntext(int i) { */ public ItemStack getContents() { //中身取得、一部アイテム用の例外 + _logger.debug("getContents:start"); if (this.mat == null) { + _logger.debug("StrageSign haven't item"); return null; } if (this.mat == Material.END_PORTAL) { - _logger.debug("this.mat == Material.END_PORTAL"); + _logger.debug("Contents is END_PORTAL"); if (this.damage == 0) { - _logger.debug("this.damage == 0"); + _logger.debug("emptySign"); return emptySign(); } if (this.damage == 1) { - _logger.debug("this.damage == 1"); + _logger.debug("emptyHorseEgg"); return emptyHorseEgg(); } } if (this.mat == Material.STONE_SLAB) { - _logger.debug("this.mat == Material.STONE_SLAB"); + _logger.debug("STONE_SLAB"); //ダメージ値0にする return new ItemStack(this.mat, 1); @@ -636,19 +644,19 @@ public ItemStack getContents() { || this.mat == Material.MANGROVE_SIGN || this.mat == Material.CHERRY_SIGN || this.mat == Material.BAMBOO_SIGN) { - _logger.debug("this.mat == ALL_SIGN"); + _logger.debug("any SIGN"); if (this.damage == 0) { - _logger.debug("(this.damage == 0)"); + _logger.debug("damage is 0"); return new ItemStack(this.mat, 1); } else { - _logger.debug("else (this.damage == 0)"); + _logger.debug("damage isn't 0"); return emptySign(this.mat); } } else if (this.mat == Material.ENCHANTED_BOOK) { - _logger.debug("else if (this.mat == Material.ENCHANTED_BOOK)"); + _logger.debug("ENCHANTED_BOOK"); ItemStack item = new ItemStack(this.mat, 1); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); @@ -660,7 +668,7 @@ public ItemStack getContents() { } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - _logger.debug("this.mat == Material.(all)POTION"); + _logger.debug("any POTION"); ItemStack item = new ItemStack(this.mat, 1); PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); @@ -672,7 +680,7 @@ public ItemStack getContents() { return item; } else if (this.mat == Material.FIREWORK_ROCKET) { - _logger.debug("this.mat == Material.FIREWORK_ROCKET"); + _logger.debug("FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, 1); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); @@ -683,7 +691,7 @@ public ItemStack getContents() { } else if (this.mat == Material.WHITE_BANNER && this.damage == 8) { - _logger.debug("this.mat == Material.WHITE_BANNER"); + _logger.debug("WHITE_BANNER & damage is 8"); ItemStack item = new ItemStack(this.mat, 1); //どこかからコピー @@ -694,7 +702,7 @@ public ItemStack getContents() { } if (this.damage == 0) { - _logger.debug("this.damage == 0"); + _logger.debug("damage is 0"); //大半はダメージなくなった return new ItemStack(this.mat, 1); } @@ -708,6 +716,7 @@ public ItemStack getContents() { } //ツール系のみダメージあり + _logger.debug("Item is tools"); return itemStack; } @@ -717,34 +726,36 @@ public ItemStack getContents() { * @return true:回収できるよ/false:回収できないよ */ public boolean isSimilar(ItemStack item) { + _logger.debug("isSimilar:start"); if (item == null) { - _logger.debug("item == null"); + _logger.debug("Item isn't Similar"); return false; } if (this.mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { - _logger.debug("this.mat and item.getType() == Material.ENCHANTED_BOOK"); + _logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); if (enchantMeta.getStoredEnchants().size() == 1) { - _logger.debug("enchantMeta.getStoredEnchants().size() == 1"); + _logger.debug("enchantMeta.getStoredEnchants().size() = 1"); Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; if (itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { - _logger.debug("itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage"); + _logger.debug("Item is Similar"); return true; } } + _logger.debug("Item isn't Similar"); return false; } else if (isShulker(this.mat)) { - _logger.debug("(isShulker(this.mat)[atomawasi]"); + _logger.debug("Shulker"); //後回し } @@ -756,7 +767,7 @@ public boolean isSimilar(ItemStack item) { * フィールド変数:damageのgetter. */ public short getDamage() { - _logger.debug("public short getDamage()"); + _logger.debug("getDamage"); return this.damage; } @@ -764,7 +775,7 @@ public short getDamage() { * フィールド変数:damageのsetter. */ public void setDamage(short damage) { - _logger.debug("public void setDamage(short damage)"); + _logger.debug("setDamage"); this.damage = damage; } @@ -772,7 +783,7 @@ public void setDamage(short damage) { * フィールド変数:amountのgetter. */ public int getAmount() { - _logger.debug("public int getAmount()"); + _logger.debug("getAmount"); return this.amount; } @@ -780,7 +791,7 @@ public int getAmount() { * フィールド変数:amountのsetter. */ public void setAmount(int amount) { - _logger.debug("public void setAmount(int amount)"); + _logger.debug("setAmount"); this.amount = amount; this.isEmpty = amount == 0; } @@ -791,19 +802,19 @@ public void setAmount(int amount) { * @param amount 加算対象の値 */ public void addAmount(int amount) { - _logger.debug("public void addAmount(int amount)"); + _logger.debug("addAmount:start"); if (this.amount < -amount) { - _logger.debug("(this.amount < -amount)"); + _logger.debug("set amount 0"); this.amount = 0; } else { - _logger.debug("else (this.amount < -amount)"); + _logger.debug("add Amount"); this.amount += amount; } if (this.amount < 0) { - _logger.debug("this.amount < 0"); + _logger.debug("set amount to MAX_VALUE"); this.amount = Integer.MAX_VALUE; } @@ -817,7 +828,7 @@ public void addAmount(int amount) { * @return StackSize */ public int getStackSize() { - _logger.debug("public int getStackSize()"); + _logger.debug("get StorageSign StackSize"); return this.stack; } @@ -827,7 +838,7 @@ public int getStackSize() { * @return true:空っぽ/false:入ってます */ public boolean isEmpty() { - _logger.debug("public boolean isEmpty()"); + _logger.debug("Check StrageSign is Empty"); return this.isEmpty; } @@ -835,7 +846,7 @@ public boolean isEmpty() { * フィールド変数:enchのgetter. */ public Enchantment getEnchant() { - _logger.debug("public Enchantment getEnchant()"); + _logger.debug("getEnchant"); return this.ench; } @@ -843,7 +854,7 @@ public Enchantment getEnchant() { * フィールド変数:enchのsetter. */ public void setEnchant(Enchantment ench) { - _logger.debug("public void setEnchant(Enchantment ench)"); + _logger.debug("setEnchant"); this.ench = ench; } @@ -851,7 +862,7 @@ public void setEnchant(Enchantment ench) { * フィールド変数:potのgetter. */ public PotionType getPotion() { - _logger.debug("public PotionType getPotion()"); + _logger.debug("getPotion"); return this.pot; } @@ -859,7 +870,7 @@ public PotionType getPotion() { * フィールド変数:potのsetter. */ public void setPotion(PotionType pot) { - _logger.debug("public void setPotion(PotionType pot)"); + _logger.debug("setPotion"); this.pot = pot; } @@ -867,7 +878,7 @@ public void setPotion(PotionType pot) { * フィールド変数:smatのgetter. */ public Material getSmat() { - _logger.debug("public Material getSmat()"); + _logger.debug("getSmat"); return this.smat; } @@ -877,7 +888,7 @@ public Material getSmat() { * @return true:シュルカーボックスにだよ/false:シュルカーボックスじゃないよ */ private boolean isShulker(Material mat) { - _logger.debug("private boolean isShulker(Material mat)"); + _logger.debug("isShulker:start"); switch (mat) { case SHULKER_BOX: case WHITE_SHULKER_BOX: @@ -896,11 +907,13 @@ private boolean isShulker(Material mat) { case GREEN_SHULKER_BOX: case RED_SHULKER_BOX: case BLACK_SHULKER_BOX: + _logger.debug("Item is Shulker"); return true; default: } + _logger.debug("Item isn't Shulker"); return false; } } From bce351603919e719f8eb4d4a679bff44201c8e02 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 18 Apr 2024 20:19:49 +0900 Subject: [PATCH 32/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E6=8B=BE=E3=81=86?= =?UTF-8?q?=E3=81=A8=E3=81=8D=E3=81=AB=E3=80=81=E7=9C=8B=E6=9D=BF=E3=81=AE?= =?UTF-8?q?NBT=E3=82=BF=E3=82=B0=E5=90=8D=E3=81=8C=E5=A4=89=E3=82=8F?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 31 ++++++++++++++++++- .../java/wacky/storagesign/StorageSign.java | 12 +++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 2010bd1..48bb124 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -202,7 +202,7 @@ public static String getSignData(Material mat, PotionType pot, short damage) { } public static String getTagData(Material mat, PotionType pot, short damage, int amount) { - return mat.toString() + ":" + pot.toString() + ":" + damage + " " + amount; + return mat.toString() + ":" + getNormalType(pot).toString() + ":" + damage + " " + amount; } public static String getPotionTypeCode(PotionType pot) { @@ -330,6 +330,35 @@ private PotionType getType(String effName, String enhance) { } } + private static PotionType getNormalType(PotionType pot){ + if (HEAL_POTIONS.contains(pot)) { + return PotionType.INSTANT_HEAL; + } else if (BREATH_POTIONS.contains(pot)) { + return PotionType.WATER_BREATHING; + } else if (DAMAGE_POTIONS.contains(pot)) { + return PotionType.INSTANT_DAMAGE; + } else if (JUMP_POTIONS.contains(pot)) { + return PotionType.JUMP; + } else if (SPEED_POTIONS.contains(pot)) { + return PotionType.SPEED; + } else { + // それ以外のもの + // 延長・強化のプレフィックス除去 + String name = pot.toString(); + if (name.startsWith(ENHANCE_EXTENSION_PREF)) { + name = name.substring(ENHANCE_EXTENSION_PREF.length()); + } else if (name.startsWith(ENHANCE_STRONG_PREF)) { + name = name.substring(ENHANCE_STRONG_PREF.length()); + } + for (PotionType p : PotionType.values()) { + if (p.toString().startsWith(name)) { + return p; + } + } + throw new PotionException("ポーションデータが存在しません"); + } + } + public short getDamage() { return damage; } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index be51833..45a803c 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -588,7 +588,6 @@ private ItemStack emptyHorseEgg() { */ public String getSigntext(int i) { _logger.debug("getSigntext:start"); -======= String[] sign = getSigntexts(); return sign[i]; @@ -600,7 +599,7 @@ public String getSigntext(int i) { * @return 取得した文字列 */ public String[] getSigntexts() { - + _logger.debug("getSigntexts:start"); String[] sign = new String[4]; sign[0] = "StorageSign"; @@ -770,6 +769,15 @@ public boolean isSimilar(ItemStack item) { _logger.debug("Shulker"); //後回し + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION){ + _logger.debug("This mat is PotionSeries."); + + if(item.getItemMeta() instanceof PotionMeta){ + PotionMeta pom = (PotionMeta) item.getItemMeta(); + if(pom.getBasePotionType().equals(this.pot)){ + return true; + } + } } return getContents().isSimilar(item); From c4195f625db91b1ee2ea0cc209d3767611178b89 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Fri, 19 Apr 2024 17:42:41 +0900 Subject: [PATCH 33/82] =?UTF-8?q?plugin.yml=E3=81=ABLogger=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E4=BE=9D=E5=AD=98=E9=96=A2=E4=BF=82=E3=81=AE=E6=98=8E?= =?UTF-8?q?=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/plugin.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 69b5ef0..27fe143 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,6 +4,7 @@ version: ${version} description: StorageSign Plugin for Spigot. You can 2billion items storeing to wooden sign. author: wackyls6 api-version: 1.20 +depend: [Logger] softdepend: [WorldGuard] website: http://forum.minecraftuser.jp/viewtopic.php?t=15065 permissions: From 5fa14ada5882e0b15a2b1597e60cc63a2fa519bd Mon Sep 17 00:00:00 2001 From: Teruteru Date: Fri, 19 Apr 2024 17:43:14 +0900 Subject: [PATCH 34/82] =?UTF-8?q?plugin.yml=E3=81=AB=E3=81=82=E3=82=8Bwebs?= =?UTF-8?q?ite=E3=81=AE=E8=A8=98=E8=BC=89=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 27fe143..57eae88 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -6,7 +6,7 @@ author: wackyls6 api-version: 1.20 depend: [Logger] softdepend: [WorldGuard] -website: http://forum.minecraftuser.jp/viewtopic.php?t=15065 +website: https://github.com/wackyls6/StorageSign permissions: storagesign.*: description: From 22578fe3bbe7900e597153e249e29faff30edde1 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Fri, 19 Apr 2024 23:29:04 +0900 Subject: [PATCH 35/82] =?UTF-8?q?Jar=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E5=91=BD=E5=90=8D=E8=A6=8F=E5=89=87=E3=82=92=E3=83=87?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=81=AB=E6=88=BB=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 032afe6..7b74a09 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@
- ${project.artifactId}_${project.version} src/main/resources From a8fdfd29641a83d331e5490bbb4f1af3416f9329 Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sat, 20 Apr 2024 20:35:31 +0900 Subject: [PATCH 36/82] =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E7=9F=AD=E3=81=84=E5=90=8D=E5=89=8D=E5=A4=89?= =?UTF-8?q?=E6=8F=9B=E5=AE=9F=E8=A3=85=EF=BC=88=E9=80=94=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 46 +++-- .../java/wacky/storagesign/StorageSign.java | 189 ++++++++---------- 2 files changed, 113 insertions(+), 122 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 48bb124..ec9eea1 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,22 +1,24 @@ package wacky.storagesign; -import com.github.teruteru128.logger.Logger; import java.util.Collections; import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import org.bukkit.Material; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; +import com.github.teruteru128.logger.Logger; import wacky.storagesign.Exception.PotionException; public class PotionInfo { - private static final Set HEAL_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); - private static final Set BREATH_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); - private static final Set DAMAGE_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); + private static final Set HEAL_POTIONS = + Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); + private static final Set BREATH_POTIONS = Collections + .unmodifiableSet(EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); + private static final Set DAMAGE_POTIONS = + Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); private static final Set JUMP_POTIONS = Collections.unmodifiableSet( EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); private static final Set SPEED_POTIONS = Collections.unmodifiableSet( @@ -41,7 +43,7 @@ public class PotionInfo { // 旧メソッド public PotionInfo(Material mat, String[] str) { this.mat = mat; - if (str.length == 2) {//ダメージ値 + if (str.length == 2) {// ダメージ値 short old = NumberConversions.toShort(str[1]); if (old >= 16384) { this.mat = Material.SPLASH_POTION; @@ -100,14 +102,14 @@ public PotionInfo(Material mat, String[] str) { } if (old % 8192 > 64 && pot.isExtendable()) { - damage = 1;//延長 + damage = 1;// 延長 } else if (old % 64 > 32 && pot.isUpgradeable()) { - damage = 2;//強化 + damage = 2;// 強化 } } else if (str.length == 1) { pot = PotionType.WATER; - } else {//タイプとレベル + } else {// タイプとレベル pot = getType(str[1]); damage = NumberConversions.toShort(str[2]); } @@ -117,6 +119,8 @@ public PotionInfo(Material material, String type, String effName, String enhance this.logger = logger; logger.debug("PotionInfo:Start"); + logger.trace("material=" + material + ", type=" + type + ", effName=" + effName + ", enhance=" + + enhance + ", logger=" + logger); this.mat = material; // ポーション種別の設定 @@ -138,9 +142,9 @@ public PotionInfo(Material material, String type, String effName, String enhance logger.trace("pot.isExtendable(): " + pot.isExtendable()); logger.trace("pot.isUpgradeable(): " + pot.isUpgradeable()); if (damage % 8192 > 64 && pot.isExtendable()) { - this.damage = 1;//延長 + this.damage = 1;// 延長 } else if (damage % 64 > 32 && pot.isUpgradeable()) { - this.damage = 2;//強化 + this.damage = 2;// 強化 } } @@ -218,12 +222,12 @@ public static String getPotionTypeCode(PotionType pot) { // 旧メソッド private PotionType getType(String substring) { if (substring.equals("BREAT")) { - return PotionType.WATER_BREATHING;//例外 + return PotionType.WATER_BREATHING;// 例外 } else if (substring.equals("HEAL")) { return PotionType.INSTANT_HEAL; } else if (substring.equals("DAMAG")) { return PotionType.INSTANT_DAMAGE; - } else { //後ろ切れてるかも + } else { // 後ろ切れてるかも for (PotionType p : PotionType.values()) { if (p.toString().startsWith(substring)) { return p; @@ -330,7 +334,7 @@ private PotionType getType(String effName, String enhance) { } } - private static PotionType getNormalType(PotionType pot){ + private static PotionType getNormalType(PotionType pot) { if (HEAL_POTIONS.contains(pot)) { return PotionType.INSTANT_HEAL; } else if (BREATH_POTIONS.contains(pot)) { @@ -359,6 +363,16 @@ private static PotionType getNormalType(PotionType pot){ } } + public static String convertNBTNameToShortName(String nbtName) { + Map nbtNameShotNameMap = new HashMap() { + { + put("INSTANT_HEAL", SHORT_NAME_HEAL); + + } + }; + return nbtNameShotNameMap.get(nbtName); + } + public short getDamage() { return damage; } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 45a803c..ae3a069 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -1,6 +1,5 @@ package wacky.storagesign; -import com.github.teruteru128.logger.Logger; import java.util.ArrayList; import java.util.List; import org.bukkit.Material; @@ -15,6 +14,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; +import com.github.teruteru128.logger.Logger; /** * StrageSignの実体クラスです. @@ -59,7 +59,7 @@ public class StorageSign { */ private Logger _logger; - //StorageSignだと確認してから使っちくりー + // StorageSignだと確認してから使っちくりー /** * @@ -84,13 +84,13 @@ public StorageSign(ItemStack item, Logger logger) { this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == Material.POTION - || this.mat == Material.SPLASH_POTION + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - logger.debug("StorageSign have any Potion"); + logger.debug("StorageSign have any Potion"); // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); - PotionInfo pi = new PotionInfo(this.mat, potionStr[0], potionStr[1], potionStr[2], logger); + PotionInfo pi = new PotionInfo(this.mat, potionStr[0], + PotionInfo.convertNBTNameToShortName(potionStr[1]), potionStr[2], logger); this.mat = pi.getMaterial(); this.damage = pi.getDamage(); this.pot = pi.getPotionType(); @@ -101,7 +101,7 @@ public StorageSign(ItemStack item, Logger logger) { } else if (this.mat == Material.STONE_SLAB) { logger.debug("StorageSign have STONE_SLAB"); - //1.13の滑らかハーフと1.14の石ハーフ区別 + // 1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; } @@ -113,10 +113,10 @@ public StorageSign(ItemStack item, Logger logger) { logger.debug("StorageSign:end"); } - //Sto(ry - /* public StorageSign(Sign sign) { - this(sign,Material.OAK_SIGN); - }*/ + // Sto(ry + /* + * public StorageSign(Sign sign) { this(sign,Material.OAK_SIGN); } + */ /** * @@ -124,11 +124,10 @@ public StorageSign(ItemStack item, Logger logger) { public StorageSign(Sign sign, Material signmat, Logger logger) { this._logger = logger; logger.debug("StorageSign(Material signmat):start"); - //上と統合したい + // 上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); - this.isEmpty = (this.mat == null - || this.mat == Material.AIR); + this.isEmpty = (this.mat == null || this.mat == Material.AIR); if (this.mat == Material.ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); @@ -136,8 +135,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == Material.POTION - || this.mat == Material.SPLASH_POTION + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { logger.debug("any POTION"); // PotionInfo pi = new PotionInfo(mat, line2); @@ -152,7 +150,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { } else if (this.mat == Material.STONE_SLAB) { logger.debug("StorageSign2:STONE_SLAB"); - //1.13の滑らかハーフと1.14の石ハーフ区別 + // 1.13の滑らかハーフと1.14の石ハーフ区別 this.mat = Material.SMOOTH_STONE_SLAB; } @@ -161,7 +159,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.isEmpty = this.amount == 0; this.stack = 1; - //壁掛け看板のチェック + // 壁掛け看板のチェック if (signmat == Material.OAK_WALL_SIGN) { logger.debug("signmat is OAK_WALL_SIGN"); this.smat = Material.OAK_SIGN; @@ -251,20 +249,19 @@ public static ItemStack emptySign(Material smat) { */ protected Material getMaterial(String str) { _logger.debug("getMaterial:start"); - // if (str.matches("EmptySign")) { - // return Material.END_PORTAL; - // } - //if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; - //if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; - //if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; - //if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; - //if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; + // if (str.matches("EmptySign")) { + // return Material.END_PORTAL; + // } + // if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; + // if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; + // if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; + // if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; + // if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; if (str.matches("")) { _logger.debug("Material is AIR"); return Material.AIR; - } else if (str.matches("EmptySign") - || str.matches("OakStorageSign")) { + } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { _logger.debug("Material is OakStorageSign"); this.damage = 1; return Material.OAK_SIGN; @@ -323,9 +320,9 @@ protected Material getMaterial(String str) { _logger.debug("Material is HorseEgg"); this.damage = 1; return Material.END_PORTAL; - //ガスト卵でよくね? + // ガスト卵でよくね? } - //1.13→1.14用 + // 1.13→1.14用 if (str.startsWith("SIGN")) { _logger.debug("Material is SIGN"); return Material.OAK_SIGN; @@ -342,7 +339,7 @@ protected Material getMaterial(String str) { _logger.debug("Material is CACTUS_GREEN"); return Material.GREEN_DYE; } - //省略用 + // 省略用 if (str.startsWith("ENCHBOOK")) { _logger.debug("Material is ENCHBOOK"); return Material.ENCHANTED_BOOK; @@ -360,7 +357,7 @@ protected Material getMaterial(String str) { if (mat == null) { _logger.debug("Material is null"); - //後ろ切れる程度なら対応可 + // 後ろ切れる程度なら対応可 for (Material m : Material.values()) { if (m.toString().startsWith(str)) { return m; @@ -368,7 +365,7 @@ protected Material getMaterial(String str) { } } - //nullなら空. + // nullなら空. _logger.debug("Material isn't bifurcation"); return mat; @@ -399,9 +396,8 @@ public void setMaterial(Material mat) { */ protected String getShortName() { _logger.debug("getShortName:start"); - //2行目の記載内容 - if (this.mat == null - || this.mat == Material.AIR) { + // 2行目の記載内容 + if (this.mat == null || this.mat == Material.AIR) { _logger.debug("empty"); return ""; @@ -417,78 +413,69 @@ protected String getShortName() { return "HorseEgg"; } - } else if (this.mat == Material.OAK_SIGN - && this.damage == 1) { + } else if (this.mat == Material.OAK_SIGN && this.damage == 1) { _logger.debug("OakStorageSign"); return "OakStorageSign"; - } else if (this.mat == Material.SPRUCE_SIGN - && this.damage == 1) { + } else if (this.mat == Material.SPRUCE_SIGN && this.damage == 1) { _logger.debug("SpruceStorageSign"); return "SpruceStorageSign"; - } else if (this.mat == Material.BIRCH_SIGN - && this.damage == 1) { + } else if (this.mat == Material.BIRCH_SIGN && this.damage == 1) { _logger.debug("BirchStorageSign"); return "BirchStorageSign"; - } else if (this.mat == Material.JUNGLE_SIGN - && this.damage == 1) { + } else if (this.mat == Material.JUNGLE_SIGN && this.damage == 1) { _logger.debug("JungleStorageSign"); return "JungleStorageSign"; - } else if (this.mat == Material.ACACIA_SIGN - && this.damage == 1) { + } else if (this.mat == Material.ACACIA_SIGN && this.damage == 1) { _logger.debug("AcaciaStorageSign"); return "AcaciaStorageSign"; - } else if (this.mat == Material.DARK_OAK_SIGN - && this.damage == 1) { + } else if (this.mat == Material.DARK_OAK_SIGN && this.damage == 1) { _logger.debug("DarkOakStorageSign"); return "DarkOakStorageSign"; - } else if (this.mat == Material.CRIMSON_SIGN - && this.damage == 1) { + } else if (this.mat == Material.CRIMSON_SIGN && this.damage == 1) { _logger.debug("CrimsonStorageSign"); return "CrimsonStorageSign"; - } else if (this.mat == Material.WARPED_SIGN - && this.damage == 1) { + } else if (this.mat == Material.WARPED_SIGN && this.damage == 1) { _logger.debug("WarpedStorageSign"); return "WarpedStorageSign"; - } else if (this.mat == Material.MANGROVE_SIGN - && this.damage == 1) { + } else if (this.mat == Material.MANGROVE_SIGN && this.damage == 1) { _logger.debug("MangroveStorageSign"); return "MangroveStorageSign"; - } else if (this.mat == Material.CHERRY_SIGN - && this.damage == 1) { + } else if (this.mat == Material.CHERRY_SIGN && this.damage == 1) { _logger.debug("CherryStorageSign"); return "CherryStorageSign"; - } else if (this.mat == Material.BAMBOO_SIGN - && this.damage == 1) { + } else if (this.mat == Material.BAMBOO_SIGN && this.damage == 1) { _logger.debug("BambooStorageSign"); return "BambooStorageSign"; - //else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" : "STAINGLASS_P:" + damage; - //else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; - //else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : "BROWN_MUSH_B:" + damage; - //else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : "RED_MUSH_BLO:" + damage; + // else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" + // : "STAINGLASS_P:" + damage; + // else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; + // else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; + // else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : + // "BROWN_MUSH_B:" + damage; + // else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : + // "RED_MUSH_BLO:" + damage; } else if (this.mat == Material.ENCHANTED_BOOK) { _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; - } else if (this.mat == Material.POTION - || this.mat == Material.SPLASH_POTION + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { _logger.debug("any POTION"); return PotionInfo.getSignData(this.mat, pot, this.damage); } - //リミットブレイク + // リミットブレイク int limit = 99; if (this.damage != 0) { _logger.debug("limit break"); @@ -529,20 +516,17 @@ public ItemStack getStorageSign() { meta.setDisplayName("StorageSign"); List list = new ArrayList<>(); - //IDとMaterial名が混ざってたり、エンチャ本対応したり + // IDとMaterial名が混ざってたり、エンチャ本対応したり if (this.isEmpty) { _logger.debug("Empty"); list.add("Empty"); } else if (this.mat == Material.ENCHANTED_BOOK) { _logger.debug("ENCHANTED_BOOK"); - list.add(this.mat.toString() - + ":" + this.ench.getKey().getKey() - + ":" + this.damage - + " " + this.amount); + list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " + + this.amount); - } else if (this.mat == Material.POTION - || this.mat == Material.SPLASH_POTION + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { _logger.debug("any POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); @@ -583,7 +567,8 @@ private ItemStack emptyHorseEgg() { /** * StrageSignから、設置されている看板として表示される文字列を取得します. * - * @param i 看板の何行目の文字列を取得したいか指定します
(ex.)1行目⇒0 + * @param i 看板の何行目の文字列を取得したいか指定します
+ * (ex.)1行目⇒0 * @return 取得した文字列 */ public String getSigntext(int i) { @@ -605,20 +590,20 @@ public String[] getSigntexts() { sign[0] = "StorageSign"; sign[1] = getShortName(); sign[2] = String.valueOf(this.amount); - sign[3] = String.valueOf(this.amount / 3456) + "LC " - + String.valueOf(this.amount % 3456 / 64) + "s " - + String.valueOf(this.amount % 64); + sign[3] = String.valueOf(this.amount / 3456) + "LC " + String.valueOf(this.amount % 3456 / 64) + + "s " + String.valueOf(this.amount % 64); _logger.debug("getSigntext:end"); return sign; } + /** * StrageSignの内容を取得します. * * @return ItemStack */ public ItemStack getContents() { - //中身取得、一部アイテム用の例外 + // 中身取得、一部アイテム用の例外 _logger.debug("getContents:start"); if (this.mat == null) { _logger.debug("StrageSign haven't item"); @@ -641,19 +626,14 @@ public ItemStack getContents() { if (this.mat == Material.STONE_SLAB) { _logger.debug("STONE_SLAB"); - //ダメージ値0にする + // ダメージ値0にする return new ItemStack(this.mat, 1); - } else if (this.mat == Material.OAK_SIGN - || this.mat == Material.SPRUCE_SIGN - || this.mat == Material.BIRCH_SIGN - || this.mat == Material.JUNGLE_SIGN - || this.mat == Material.ACACIA_SIGN - || this.mat == Material.DARK_OAK_SIGN - || this.mat == Material.CRIMSON_SIGN - || this.mat == Material.WARPED_SIGN - || this.mat == Material.MANGROVE_SIGN - || this.mat == Material.CHERRY_SIGN + } else if (this.mat == Material.OAK_SIGN || this.mat == Material.SPRUCE_SIGN + || this.mat == Material.BIRCH_SIGN || this.mat == Material.JUNGLE_SIGN + || this.mat == Material.ACACIA_SIGN || this.mat == Material.DARK_OAK_SIGN + || this.mat == Material.CRIMSON_SIGN || this.mat == Material.WARPED_SIGN + || this.mat == Material.MANGROVE_SIGN || this.mat == Material.CHERRY_SIGN || this.mat == Material.BAMBOO_SIGN) { _logger.debug("any SIGN"); @@ -676,8 +656,7 @@ public ItemStack getContents() { return item; - } else if (this.mat == Material.POTION - || this.mat == Material.SPLASH_POTION + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { _logger.debug("any POTION"); @@ -700,12 +679,11 @@ public ItemStack getContents() { return item; - } else if (this.mat == Material.WHITE_BANNER - && this.damage == 8) { + } else if (this.mat == Material.WHITE_BANNER && this.damage == 8) { _logger.debug("WHITE_BANNER & damage is 8"); ItemStack item = new ItemStack(this.mat, 1); - //どこかからコピー + // どこかからコピー item.setItemMeta(StorageSignCore.ominousBannerMeta); return item; @@ -714,7 +692,7 @@ public ItemStack getContents() { if (this.damage == 0) { _logger.debug("damage is 0"); - //大半はダメージなくなった + // 大半はダメージなくなった return new ItemStack(this.mat, 1); } @@ -726,7 +704,7 @@ public ItemStack getContents() { itemStack.setItemMeta(meta); } - //ツール系のみダメージあり + // ツール系のみダメージあり _logger.debug("Item is tools"); return itemStack; } @@ -744,19 +722,17 @@ public boolean isSimilar(ItemStack item) { } - if (this.mat == Material.ENCHANTED_BOOK - && item.getType() == Material.ENCHANTED_BOOK) { + if (this.mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { _logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); if (enchantMeta.getStoredEnchants().size() == 1) { _logger.debug("enchantMeta.getStoredEnchants().size() = 1"); - Enchantment itemEnch - = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; + Enchantment itemEnch = + enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - if (itemEnch == this.ench - && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { + if (itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { _logger.debug("Item is Similar"); return true; @@ -767,14 +743,15 @@ public boolean isSimilar(ItemStack item) { } else if (isShulker(this.mat)) { _logger.debug("Shulker"); - //後回し + // 後回し - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION){ + } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION + || this.mat == Material.LINGERING_POTION) { _logger.debug("This mat is PotionSeries."); - if(item.getItemMeta() instanceof PotionMeta){ + if (item.getItemMeta() instanceof PotionMeta) { PotionMeta pom = (PotionMeta) item.getItemMeta(); - if(pom.getBasePotionType().equals(this.pot)){ + if (pom.getBasePotionType().equals(this.pot)) { return true; } } From 6be61f2704049de8c5d0345bda2e57ece8a9464b Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sat, 20 Apr 2024 23:18:11 +0900 Subject: [PATCH 37/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E6=8B=BE=E3=81=86?= =?UTF-8?q?=E3=81=A8=E3=81=8D=E3=81=AB=E3=80=81=E7=9C=8B=E6=9D=BF=E3=81=AE?= =?UTF-8?q?NBT=E3=82=BF=E3=82=B0=E5=90=8D=E3=81=8C=E5=A4=89=E3=82=8F?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index ec9eea1..6ef43d8 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -23,6 +23,8 @@ public class PotionInfo { EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); private static final Set SPEED_POTIONS = Collections.unmodifiableSet( EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); + private static final Set REGENERATION_POTIONS = Collections.unmodifiableSet( + EnumSet.of(PotionType.REGEN, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; private static String ENHANCE_NORMAL_CODE = "0"; @@ -35,6 +37,7 @@ public class PotionInfo { private static String SHORT_NAME_DAMAG = "DAMAG"; private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; + private static String SHORT_NAME_REGEN = "SPEED"; protected Material mat; protected PotionType pot; protected short damage = 0; @@ -176,6 +179,8 @@ public static String getShortName(PotionType pot) { return SHORT_NAME_JUMP; } else if (SPEED_POTIONS.contains(pot)) { return SHORT_NAME_SPEED; + } else if (REGENERATION_POTIONS.contains(pot)) { + return SHORT_NAME_REGEN; } else { // それ以外のもの // 延長・強化のプレフィックス除去 @@ -345,6 +350,8 @@ private static PotionType getNormalType(PotionType pot) { return PotionType.JUMP; } else if (SPEED_POTIONS.contains(pot)) { return PotionType.SPEED; + } else if (REGENERATION_POTIONS.contains(pot)) { + return PotionType.REGEN; } else { // それ以外のもの // 延長・強化のプレフィックス除去 @@ -366,11 +373,17 @@ private static PotionType getNormalType(PotionType pot) { public static String convertNBTNameToShortName(String nbtName) { Map nbtNameShotNameMap = new HashMap() { { - put("INSTANT_HEAL", SHORT_NAME_HEAL); - + put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); + put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); + put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); + put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); + put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); } }; - return nbtNameShotNameMap.get(nbtName); + if(nbtNameShotNameMap.containsKey(nbtName)){ + return nbtNameShotNameMap.get(nbtName); + } + return nbtName; } public short getDamage() { From 78b2780f7619d88596e938c59ac33199854b9a2d Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sat, 20 Apr 2024 23:24:37 +0900 Subject: [PATCH 38/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E5=86=8D?= =?UTF-8?q?=E7=94=9F=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE?= =?UTF-8?q?=E4=BE=8B=E5=A4=96=E5=87=A6=E7=90=86=E5=85=A5=E3=82=8C=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/PotionInfo.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 6ef43d8..9cbe402 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -378,6 +378,7 @@ public static String convertNBTNameToShortName(String nbtName) { put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); + put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); } }; if(nbtNameShotNameMap.containsKey(nbtName)){ From 88f418605c019319e8fea926ee6843e1d1532656 Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sun, 21 Apr 2024 00:20:51 +0900 Subject: [PATCH 39/82] =?UTF-8?q?=E5=86=8D=E7=94=9F=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=8C=E4=BF=8A=E6=95=8F=E3=81=AE?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E7=99=BB=E9=8C=B2=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 26 +++++++++---------- .../java/wacky/storagesign/StorageSign.java | 4 ++- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 9cbe402..afb46b0 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -25,6 +25,16 @@ public class PotionInfo { EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); private static final Set REGENERATION_POTIONS = Collections.unmodifiableSet( EnumSet.of(PotionType.REGEN, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); + private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { + { + put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); + put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); + put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); + put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); + put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); + put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); + } + }; protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; private static String ENHANCE_NORMAL_CODE = "0"; @@ -37,7 +47,7 @@ public class PotionInfo { private static String SHORT_NAME_DAMAG = "DAMAG"; private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; - private static String SHORT_NAME_REGEN = "SPEED"; + private static String SHORT_NAME_REGEN = "REGEN"; protected Material mat; protected PotionType pot; protected short damage = 0; @@ -371,18 +381,8 @@ private static PotionType getNormalType(PotionType pot) { } public static String convertNBTNameToShortName(String nbtName) { - Map nbtNameShotNameMap = new HashMap() { - { - put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); - put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); - put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); - put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); - put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); - } - }; - if(nbtNameShotNameMap.containsKey(nbtName)){ - return nbtNameShotNameMap.get(nbtName); + if (NBT_NAME_SHORT_NAMES.containsKey(nbtName)) { + return NBT_NAME_SHORT_NAMES.get(nbtName); } return nbtName; } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index ae3a069..03bc957 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -397,6 +397,7 @@ public void setMaterial(Material mat) { protected String getShortName() { _logger.debug("getShortName:start"); // 2行目の記載内容 + _logger.trace("this.mat=" + mat); if (this.mat == null || this.mat == Material.AIR) { _logger.debug("empty"); return ""; @@ -574,7 +575,8 @@ private ItemStack emptyHorseEgg() { public String getSigntext(int i) { _logger.debug("getSigntext:start"); String[] sign = getSigntexts(); - + _logger.trace("sign[]=" + String.join(" / ", sign)); + _logger.debug("getSigntext:end"); return sign[i]; } From 5e50aa7f4a0f241e514c3b23a897c20e64b956ef Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sun, 21 Apr 2024 12:14:02 +0900 Subject: [PATCH 40/82] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E3=81=AB=E5=86=8D=E7=94=9F=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/PotionInfo.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index afb46b0..398cc7a 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -325,6 +325,20 @@ private PotionType getType(String effName, String enhance) { logger.error("Speed Enhance is not Exist!Enhance: " + enhance); throw new PotionException("俊敏のポーションに対応する種類が存在しません"); } + } else if (effName.equals(SHORT_NAME_REGEN)) { + if (enhance.equals(ENHANCE_NORMAL_CODE)) { + logger.debug("Portion:Regen."); + return PotionType.REGEN; + } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { + logger.debug("Portion:Ext_Regen."); + return PotionType.LONG_REGENERATION; + } else if (enhance.equals(ENHANCE_STRONG_CODE)) { + logger.debug("Portion:Str_Regen."); + return PotionType.STRONG_REGENERATION; + } else { + logger.error("Speed Enhance is not Exist!Enhance: " + enhance); + throw new PotionException("再生のポーションに対応する種類が存在しません"); + } } else { // それ以外は命名ルールに従って検索をかける // 延長、強化があったら先頭にプレフィックスをつけて検索 From 634991b9eb56cffc12fef086f94f5253ccc4420b Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 21 Apr 2024 14:40:18 +0900 Subject: [PATCH 41/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20NBT=5FNAME=5FS?= =?UTF-8?q?HORT=5FNAMES=E3=81=AE=E5=AE=A3=E8=A8=80=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E3=81=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 398cc7a..89f9f6c 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -25,16 +25,6 @@ public class PotionInfo { EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); private static final Set REGENERATION_POTIONS = Collections.unmodifiableSet( EnumSet.of(PotionType.REGEN, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); - private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { - { - put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); - put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); - put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); - put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); - put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); - } - }; protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; private static String ENHANCE_NORMAL_CODE = "0"; @@ -48,6 +38,16 @@ public class PotionInfo { private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; private static String SHORT_NAME_REGEN = "REGEN"; + private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { + { + put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); + put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); + put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); + put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); + put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); + put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); + } + }; protected Material mat; protected PotionType pot; protected short damage = 0; From ef4440fa95f663a2b695860f1a96e261f54ad309 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 21 Apr 2024 15:38:02 +0900 Subject: [PATCH 42/82] =?UTF-8?q?1.20.4=E5=AF=BE=E5=BF=9C=20=E3=82=A2?= =?UTF-8?q?=E3=82=A4=E3=83=86=E3=83=A0=E7=A8=AE=E5=88=A5=E3=81=94=E3=81=A8?= =?UTF-8?q?=E3=81=AB=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=8C?= =?UTF-8?q?=E5=85=A5=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E5=86=8D=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSign.java | 4 +++- src/main/java/wacky/storagesign/StorageSignCore.java | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 03bc957..934f3f7 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -751,8 +751,10 @@ public boolean isSimilar(ItemStack item) { || this.mat == Material.LINGERING_POTION) { _logger.debug("This mat is PotionSeries."); - if (item.getItemMeta() instanceof PotionMeta) { + _logger.trace("this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); + if (this.mat.equals(item.getType())) { PotionMeta pom = (PotionMeta) item.getItemMeta(); + _logger.trace("pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); if (pom.getBasePotionType().equals(this.pot)) { return true; } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 3264f3d..bd16bfe 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -431,11 +431,12 @@ public void onPlayerInteract(PlayerInteractEvent event) { } //ここから搬入 + boolean isMainSimiller = storageSign.isSimilar(itemMainHand); logger.debug("check manual Import."); - logger.trace("storageSign.isSimilar(itemMainHand): " + storageSign.isSimilar(itemMainHand)); + logger.trace("storageSign.isSimilar(itemMainHand): " + isMainSimiller); logger.trace("config.getBoolean(\"manual-import\"): " + config.getBoolean("manual-import")); logger.trace("config.getBoolean(\"manual-export\"): " + config.getBoolean("manual-export")); - if (storageSign.isSimilar(itemMainHand)) { + if (isMainSimiller) { logger.debug("StorageSign Import."); logger.trace("!config.getBoolean(\"manual-import\"): " + !config.getBoolean("manual-import")); @@ -463,9 +464,10 @@ public void onPlayerInteract(PlayerInteractEvent event) { logger.debug("push Stack Item."); for (int i = 0; i < player.getInventory().getSize(); i++) { ItemStack item = player.getInventory().getItem(i); + boolean itemSimilar = storageSign.isSimilar(item); logger.trace(" item: " + item); - logger.trace(" storageSign.isSimilar(item): " + storageSign.isSimilar(item)); - if (storageSign.isSimilar(item)) { + logger.trace(" storageSign.isSimilar(item): " + itemSimilar); + if (itemSimilar) { logger.debug(" same Item Found.Push Item to StorageSign."); storageSign.addAmount(item.getAmount()); player.getInventory().clear(i); From 8a74258fb56523af3e3df4e5444a72b87344507f Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Sun, 21 Apr 2024 17:08:12 +0900 Subject: [PATCH 43/82] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E7=94=A8=E5=90=8D=E5=89=8D=E5=A4=89=E6=8F=9B=E3=81=AE=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E6=96=B9=E6=B3=95=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 89f9f6c..dae2b1f 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -1,14 +1,16 @@ package wacky.storagesign; + +import static java.util.Map.entry; + +import com.github.teruteru128.logger.Logger; import java.util.Collections; import java.util.EnumSet; -import java.util.HashMap; import java.util.Map; import java.util.Set; import org.bukkit.Material; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; -import com.github.teruteru128.logger.Logger; import wacky.storagesign.Exception.PotionException; public class PotionInfo { @@ -38,16 +40,13 @@ public class PotionInfo { private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; private static String SHORT_NAME_REGEN = "REGEN"; - private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { - { - put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); - put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); - put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); - put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); - put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); - } - }; + private static final Map NBT_NAME_SHORT_NAMES = + Map.ofEntries(entry(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL), + entry(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG), + entry(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT), + entry(PotionType.JUMP.toString(), SHORT_NAME_JUMP), + entry(PotionType.SPEED.toString(), SHORT_NAME_SPEED), + entry(PotionType.REGEN.toString(), SHORT_NAME_REGEN)); protected Material mat; protected PotionType pot; protected short damage = 0; From 9b9d984e75fafe9f0504ed844d1d5c112f5af48f Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 25 Apr 2024 20:58:27 +0900 Subject: [PATCH 44/82] =?UTF-8?q?1.20.5=E5=AF=BE=E5=BF=9C=20=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=BF=E3=82=A4=E3=83=97?= =?UTF-8?q?=E3=81=AE=E3=82=AF=E3=83=A9=E3=82=B9=E5=A4=89=E6=9B=B4=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=921.5.4=E3=81=A8Java,SpigotAPI=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +- .../java/wacky/storagesign/PotionInfo.java | 151 +++++------------- 2 files changed, 41 insertions(+), 118 deletions(-) diff --git a/pom.xml b/pom.xml index 7b74a09..2567296 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.5.3 + 1.5.4 jar StorageSign @@ -24,8 +24,8 @@ maven-compiler-plugin 3.2 - 17 - 17 + 21 + 21 ${project.build.sourceEncoding} @@ -54,7 +54,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT org.junit.jupiter diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 89f9f6c..9cdc764 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -14,17 +14,17 @@ public class PotionInfo { private static final Set HEAL_POTIONS = - Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_HEAL, PotionType.STRONG_HEALING)); + Collections.unmodifiableSet(EnumSet.of(PotionType.HEALING, PotionType.STRONG_HEALING)); private static final Set BREATH_POTIONS = Collections .unmodifiableSet(EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); private static final Set DAMAGE_POTIONS = - Collections.unmodifiableSet(EnumSet.of(PotionType.INSTANT_DAMAGE, PotionType.STRONG_HARMING)); + Collections.unmodifiableSet(EnumSet.of(PotionType.HARMING, PotionType.STRONG_HARMING)); private static final Set JUMP_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.JUMP, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); + EnumSet.of(PotionType.LEAPING, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); private static final Set SPEED_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.SPEED, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); + EnumSet.of(PotionType.SWIFTNESS, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); private static final Set REGENERATION_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.REGEN, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); + EnumSet.of(PotionType.REGENERATION, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; private static String ENHANCE_NORMAL_CODE = "0"; @@ -38,14 +38,24 @@ public class PotionInfo { private static String SHORT_NAME_JUMP = "JUMP"; private static String SHORT_NAME_SPEED = "SPEED"; private static String SHORT_NAME_REGEN = "REGEN"; + private static String OLD_HEAL_TYPE_NAME = "INSTANT_HEAL"; + private static String OLD_DAMAGE_TYPE_NAME = "INSTANT_DAMAGE"; + private static String OLD_JUMP_TYPE_NAME = "JUMP"; + private static String OLD_SPEED_TYPE_NAME = "SPEED"; + private static String OLD_REGEN_TYPE_NAME = "REGEN"; private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { { - put(PotionType.INSTANT_HEAL.toString(), SHORT_NAME_HEAL); - put(PotionType.INSTANT_DAMAGE.toString(), SHORT_NAME_DAMAG); + put(OLD_HEAL_TYPE_NAME, SHORT_NAME_HEAL); + put(OLD_DAMAGE_TYPE_NAME, SHORT_NAME_DAMAG); + put(OLD_JUMP_TYPE_NAME, SHORT_NAME_JUMP); + put(OLD_SPEED_TYPE_NAME, SHORT_NAME_SPEED); + put(OLD_REGEN_TYPE_NAME, SHORT_NAME_REGEN); + put(PotionType.HEALING.toString(), SHORT_NAME_HEAL); + put(PotionType.HARMING.toString(), SHORT_NAME_DAMAG); put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - put(PotionType.JUMP.toString(), SHORT_NAME_JUMP); - put(PotionType.SPEED.toString(), SHORT_NAME_SPEED); - put(PotionType.REGEN.toString(), SHORT_NAME_REGEN); + put(PotionType.LEAPING.toString(), SHORT_NAME_JUMP); + put(PotionType.SWIFTNESS.toString(), SHORT_NAME_SPEED); + put(PotionType.REGENERATION.toString(), SHORT_NAME_REGEN); } }; protected Material mat; @@ -53,81 +63,6 @@ public class PotionInfo { protected short damage = 0; protected Logger logger; - // 旧メソッド - public PotionInfo(Material mat, String[] str) { - this.mat = mat; - if (str.length == 2) {// ダメージ値 - short old = NumberConversions.toShort(str[1]); - if (old >= 16384) { - this.mat = Material.SPLASH_POTION; - } - switch (old % 16) { - case 1: - pot = PotionType.REGEN; - break; - case 2: - pot = PotionType.SPEED; - break; - case 3: - pot = PotionType.FIRE_RESISTANCE; - break; - case 4: - pot = PotionType.POISON; - break; - case 5: - pot = PotionType.INSTANT_HEAL; - break; - case 6: - pot = PotionType.NIGHT_VISION; - break; - case 8: - pot = PotionType.WEAKNESS; - break; - case 9: - pot = PotionType.STRENGTH; - break; - case 10: - pot = PotionType.SLOWNESS; - break; - case 11: - pot = PotionType.JUMP; - break; - case 12: - pot = PotionType.INSTANT_DAMAGE; - break; - case 13: - pot = PotionType.WATER_BREATHING; - break; - case 14: - pot = PotionType.INVISIBILITY; - break; - - default: - if (old == 16) { - pot = PotionType.AWKWARD; - } else if (old == 32) { - pot = PotionType.THICK; - } else if (old == 64 || old == 8192 || old == 16384) { - pot = PotionType.MUNDANE; - } else { - pot = PotionType.WATER; - } - } - - if (old % 8192 > 64 && pot.isExtendable()) { - damage = 1;// 延長 - } else if (old % 64 > 32 && pot.isUpgradeable()) { - damage = 2;// 強化 - } - - } else if (str.length == 1) { - pot = PotionType.WATER; - } else {// タイプとレベル - pot = getType(str[1]); - damage = NumberConversions.toShort(str[2]); - } - } - public PotionInfo(Material material, String type, String effName, String enhance, Logger logger) { this.logger = logger; @@ -162,19 +97,6 @@ public PotionInfo(Material material, String type, String effName, String enhance } - public static String getShortType(PotionType pot) { - if (pot == PotionType.WATER_BREATHING) { - return "BREAT"; - } else if (pot == PotionType.INSTANT_HEAL) { - return "HEAL"; - } else if (pot == PotionType.INSTANT_DAMAGE) { - return "DAMAG"; - } else if (pot.toString().length() <= 5) { - return pot.toString(); - } - return pot.toString().substring(0, 5); - } - public static String getShortName(PotionType pot) { String name = pot.toString(); @@ -239,9 +161,9 @@ private PotionType getType(String substring) { if (substring.equals("BREAT")) { return PotionType.WATER_BREATHING;// 例外 } else if (substring.equals("HEAL")) { - return PotionType.INSTANT_HEAL; + return PotionType.HEALING; } else if (substring.equals("DAMAG")) { - return PotionType.INSTANT_DAMAGE; + return PotionType.HARMING; } else { // 後ろ切れてるかも for (PotionType p : PotionType.values()) { if (p.toString().startsWith(substring)) { @@ -267,7 +189,7 @@ private PotionType getType(String effName, String enhance) { if (effName.equals(SHORT_NAME_HEAL)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Heal."); - return PotionType.INSTANT_HEAL; + return PotionType.HEALING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Heal."); return PotionType.STRONG_HEALING; @@ -289,7 +211,7 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_DAMAG)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Damage."); - return PotionType.INSTANT_DAMAGE; + return PotionType.HARMING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Damage."); return PotionType.STRONG_HARMING; @@ -300,7 +222,7 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_JUMP)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Jump."); - return PotionType.JUMP; + return PotionType.LEAPING; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Jump."); return PotionType.LONG_LEAPING; @@ -314,7 +236,7 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_SPEED)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Speed."); - return PotionType.SPEED; + return PotionType.SWIFTNESS; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Speed."); return PotionType.LONG_SWIFTNESS; @@ -328,7 +250,7 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_REGEN)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Regen."); - return PotionType.REGEN; + return PotionType.REGENERATION; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Regen."); return PotionType.LONG_REGENERATION; @@ -363,19 +285,19 @@ private PotionType getType(String effName, String enhance) { } } - private static PotionType getNormalType(PotionType pot) { + private static String getNormalType(PotionType pot) { if (HEAL_POTIONS.contains(pot)) { - return PotionType.INSTANT_HEAL; + return OLD_HEAL_TYPE_NAME; } else if (BREATH_POTIONS.contains(pot)) { - return PotionType.WATER_BREATHING; + return PotionType.WATER_BREATHING.toString(); } else if (DAMAGE_POTIONS.contains(pot)) { - return PotionType.INSTANT_DAMAGE; + return OLD_DAMAGE_TYPE_NAME; } else if (JUMP_POTIONS.contains(pot)) { - return PotionType.JUMP; + return OLD_JUMP_TYPE_NAME; } else if (SPEED_POTIONS.contains(pot)) { - return PotionType.SPEED; + return OLD_SPEED_TYPE_NAME; } else if (REGENERATION_POTIONS.contains(pot)) { - return PotionType.REGEN; + return OLD_REGEN_TYPE_NAME; } else { // それ以外のもの // 延長・強化のプレフィックス除去 @@ -386,8 +308,9 @@ private static PotionType getNormalType(PotionType pot) { name = name.substring(ENHANCE_STRONG_PREF.length()); } for (PotionType p : PotionType.values()) { - if (p.toString().startsWith(name)) { - return p; + String str = p.toString(); + if (str.startsWith(name)) { + return str; } } throw new PotionException("ポーションデータが存在しません"); From 7c956859a6f8298c973e39a8ae5e580239455de0 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 25 Apr 2024 21:19:18 +0900 Subject: [PATCH 45/82] =?UTF-8?q?1.20.5=E5=AF=BE=E5=BF=9C=20=E6=97=A7?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=A8=E8=A6=81=E3=82=89?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=B3=E3=83=BC=E3=83=89=E6=92=A4=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 9cdc764..da048b6 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -50,12 +50,7 @@ public class PotionInfo { put(OLD_JUMP_TYPE_NAME, SHORT_NAME_JUMP); put(OLD_SPEED_TYPE_NAME, SHORT_NAME_SPEED); put(OLD_REGEN_TYPE_NAME, SHORT_NAME_REGEN); - put(PotionType.HEALING.toString(), SHORT_NAME_HEAL); - put(PotionType.HARMING.toString(), SHORT_NAME_DAMAG); put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - put(PotionType.LEAPING.toString(), SHORT_NAME_JUMP); - put(PotionType.SWIFTNESS.toString(), SHORT_NAME_SPEED); - put(PotionType.REGENERATION.toString(), SHORT_NAME_REGEN); } }; protected Material mat; @@ -143,7 +138,7 @@ public static String getSignData(Material mat, PotionType pot, short damage) { } public static String getTagData(Material mat, PotionType pot, short damage, int amount) { - return mat.toString() + ":" + getNormalType(pot).toString() + ":" + damage + " " + amount; + return mat.toString() + ":" + getNormalType(pot) + ":" + damage + " " + amount; } public static String getPotionTypeCode(PotionType pot) { @@ -156,24 +151,6 @@ public static String getPotionTypeCode(PotionType pot) { return ENHANCE_NORMAL_CODE; } - // 旧メソッド - private PotionType getType(String substring) { - if (substring.equals("BREAT")) { - return PotionType.WATER_BREATHING;// 例外 - } else if (substring.equals("HEAL")) { - return PotionType.HEALING; - } else if (substring.equals("DAMAG")) { - return PotionType.HARMING; - } else { // 後ろ切れてるかも - for (PotionType p : PotionType.values()) { - if (p.toString().startsWith(substring)) { - return p; - } - } - } - return null; - } - private PotionType getType(String effName, String enhance) { logger.debug("getType: Start"); From 44d269d079f32e22b15cd1f28ed734fad85f9688 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 30 Apr 2024 16:17:33 +0900 Subject: [PATCH 46/82] =?UTF-8?q?1.20.6=E5=AF=BE=E5=BF=9C=20=E3=83=AD?= =?UTF-8?q?=E3=82=AE=E3=83=B3=E3=82=B0=E3=81=AE=E5=86=85=E5=AE=B9=E4=B8=80?= =?UTF-8?q?=E9=83=A8=E8=AA=BF=E6=95=B4=E3=80=82=20isSimilar=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E3=81=AE=E5=91=BC=E3=81=B3=E5=87=BA?= =?UTF-8?q?=E3=81=97=E5=9B=9E=E6=95=B0=E6=B8=9B=E5=B0=91=E3=81=95=E3=81=9B?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/wacky/storagesign/StorageSign.java | 24 +++++++------ .../wacky/storagesign/StorageSignCore.java | 35 ++++--------------- 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index 2567296..826dafb 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ org.spigotmc spigot-api - 1.20.5-R0.1-SNAPSHOT + 1.20.6-R0.1-SNAPSHOT org.junit.jupiter diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 934f3f7..ccb1168 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -377,7 +377,7 @@ protected Material getMaterial(String str) { * @return Material */ public Material getMaterial() { - _logger.debug("return this.mat"); + _logger.debug(" return this.mat"); return this.mat; } @@ -717,9 +717,9 @@ public ItemStack getContents() { * @return true:回収できるよ/false:回収できないよ */ public boolean isSimilar(ItemStack item) { - _logger.debug("isSimilar:start"); + _logger.debug(" isSimilar:start"); if (item == null) { - _logger.debug("Item isn't Similar"); + _logger.debug(" Item isn't Similar"); return false; } @@ -740,35 +740,37 @@ public boolean isSimilar(ItemStack item) { } } - _logger.debug("Item isn't Similar"); + _logger.debug(" Item isn't Similar"); return false; } else if (isShulker(this.mat)) { - _logger.debug("Shulker"); + _logger.debug(" Shulker"); // 後回し } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION || this.mat == Material.LINGERING_POTION) { - _logger.debug("This mat is PotionSeries."); + _logger.debug(" This mat is PotionSeries."); - _logger.trace("this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); + _logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); if (this.mat.equals(item.getType())) { PotionMeta pom = (PotionMeta) item.getItemMeta(); - _logger.trace("pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); + _logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); if (pom.getBasePotionType().equals(this.pot)) { return true; } } } - return getContents().isSimilar(item); + boolean isSimilar = getContents().isSimilar(item); + _logger.trace(" isSimilar: " + isSimilar); + return isSimilar; } /** * フィールド変数:damageのgetter. */ public short getDamage() { - _logger.debug("getDamage"); + _logger.debug(" getDamage"); return this.damage; } @@ -879,7 +881,7 @@ public void setPotion(PotionType pot) { * フィールド変数:smatのgetter. */ public Material getSmat() { - _logger.debug("getSmat"); + _logger.debug(" getSmat"); return this.smat; } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index bd16bfe..0c70953 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -388,8 +388,9 @@ public void onPlayerInteract(PlayerInteractEvent event) { logger.debug("store all Empty Sign.SearchPlayer Inventory."); for (int i = 0; i < player.getInventory().getSize(); i++) { ItemStack item = player.getInventory().getItem(i); - logger.trace("storageSign.isSimilar(item)" + storageSign.isSimilar(item)); - if (storageSign.isSimilar(item)) { + boolean isSimilar = storageSign.isSimilar(item); + logger.trace("storageSign.isSimilar(item)" + isSimilar); + if (isSimilar) { logger.debug("find Empty Sign."); storageSign.addAmount(item.getAmount()); player.getInventory().clear(i); @@ -1012,8 +1013,6 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve } logger.debug("Export Item"); - int firstStackIndex = 0; - ItemStack firstStackItem = null; //PANPANによるロスト回避 for (int i = 0; i < contents.length; i++) { logger.trace("i: " + i); @@ -1033,32 +1032,10 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve return; } - logger.debug("firstStackItem Set."); - for (ItemStack itm : inv.getContents()) { - logger.trace(" itm: " + itm); - logger.trace(" item.isSimilar(itm): " + item.isSimilar(itm)); - if (item.isSimilar(itm)) { - logger.debug(" firstStackItem Set."); - firstStackItem = itm.clone(); - logger.trace(" firstStackItem: " + firstStackItem); - logger.trace(" firstStackIndex: " + firstStackIndex); - break; - } - firstStackIndex++; - } - logger.trace("firstStackItem.getAmount()" + firstStackItem.getAmount()); - logger.trace("item.getAmount(): " + item.getAmount()); - firstStackItem.setAmount(firstStackItem.getAmount() + item.getAmount()); - logger.debug("Export Item to Inventory."); - logger.trace("invAmount:" + inv.getItem(firstStackIndex).getAmount()); - logger.trace("ssAmount:" + storageSign.getAmount()); - - inv.setItem(firstStackIndex, firstStackItem); - storageSign.addAmount(-item.getAmount()); - - logger.trace("afterInvAmount:" + inv.getItem(firstStackIndex).getAmount()); - logger.trace("afterSSAmount:" + storageSign.getAmount()); + ItemStack cItem = item.clone(); + inv.addItem(cItem); + storageSign.addAmount(-cItem.getAmount()); } for (int i = 0; i < 4; i++) { logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); From 5ab34cb015218543edc556a21f2edfa1479755fb Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 6 May 2024 14:36:14 +0900 Subject: [PATCH 47/82] =?UTF-8?q?1.20.6=E5=AF=BE=E5=BF=9C=20isSimilar?= =?UTF-8?q?=E3=81=AESS=E3=81=AE=E5=A0=B4=E5=90=88=E3=81=AE=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wacky/storagesign/SignPhysicsEvent.java | 2 +- .../java/wacky/storagesign/StorageSign.java | 133 +++++++++++++- .../wacky/storagesign/StorageSignCore.java | 166 +++--------------- 3 files changed, 162 insertions(+), 139 deletions(-) diff --git a/src/main/java/wacky/storagesign/SignPhysicsEvent.java b/src/main/java/wacky/storagesign/SignPhysicsEvent.java index dbc9452..8c44c4d 100644 --- a/src/main/java/wacky/storagesign/SignPhysicsEvent.java +++ b/src/main/java/wacky/storagesign/SignPhysicsEvent.java @@ -21,6 +21,6 @@ public SignPhysicsEvent(StorageSignCore plugin, Logger logger) { @EventHandler public void onBlockPhysics(BlockPhysicsEvent event) { _logger.debug("onBlockPhysics:Start"); - event.setCancelled(plugin.isStorageSign(event.getBlock())); + event.setCancelled(StorageSign.isStorageSign(event.getBlock(), _logger)); } } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index ccb1168..7303e05 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Material; +import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.block.sign.Side; import org.bukkit.enchantments.Enchantment; @@ -761,7 +762,22 @@ public boolean isSimilar(ItemStack item) { } } - boolean isSimilar = getContents().isSimilar(item); + // SSなのかだけ、別ロジックで判定 + ItemStack contents = getContents(); + if(isStorageSign(item, _logger) && contents.getType() == item.getType()){ + StorageSign cSign = new StorageSign(contents, _logger); + StorageSign iSign = new StorageSign(item, _logger); + if(cSign.isEmpty() == iSign.isEmpty()){ + return true; +// } else if(cSign.getMaterial() == iSign.getMaterial()){ +// return true; + } else { + return false; + } + } + + // それ以外のItemはisSimilarで判定 + boolean isSimilar = contents.isSimilar(item); _logger.trace(" isSimilar: " + isSimilar); return isSimilar; } @@ -919,4 +935,119 @@ private boolean isShulker(Material mat) { _logger.debug("Item isn't Shulker"); return false; } + + public static boolean isStorageSign(ItemStack item, Logger logger) { + logger.debug(" isStorageSign(ItemStack):Start"); + if (item == null) { + logger.debug(" item is null."); + return false; + } + + boolean isSignPost = isSignPost(item.getType(), logger); + logger.trace(" isSignPost:" +isSignPost); + if (isSignPost) { + + logger.trace(" !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); + if (!item.getItemMeta().hasDisplayName()) { + logger.debug(" itemMeta hasn't displayName."); + return false; + } + logger.trace( + " !item.getItemMeta().getDisplayName().matches(\"StorageSign\"): " + !item.getItemMeta() + .getDisplayName().matches("StorageSign")); + if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { + logger.debug(" itemMetaName hasn't StorageSign."); + return false; + } + logger.trace(" item.getItemMeta().hasLore(): " + item.getItemMeta().hasLore()); + return item.getItemMeta().hasLore(); + } + logger.debug(" isSignPost is false."); + return false; + } + + public static boolean isStorageSign(Block block, Logger logger) { + logger.debug(" isStorageSign(Block):Start"); + + boolean isSignPost = isSignPost(block.getType(), logger); + boolean isWallSign = isWallSign(block.getType(), logger); + logger.trace(" block.getType(): " + block.getType()); + logger.trace(" isSignPost(block.getType()): " + isSignPost); + logger.trace(" isWallSign(block.getType()) :" + isWallSign); + if (isSignPost || isWallSign) { + logger.debug(" This Block is Sign."); + Sign sign = (Sign) block.getState(); + + logger.trace(" sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( + Side.FRONT).getLine(0).matches("StorageSign")); + if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { + logger.debug(" This Sign is StorageSign."); + return true; + } + } + + logger.debug(" This Block isn't StorageSign."); + return false; + } + + public static boolean isSignPost(Block block, Logger logger) { + logger.debug(" isSignPost(Block)"); + Material mat = block.getType(); + return isSignPost(mat, logger); + } + + public static boolean isWallSign(Block block, Logger logger) { + Material mat = block.getType(); + return isWallSign(mat, logger); + } + + //看板も8種類になったし、mat版おいとく + public static boolean isSignPost(Material mat, Logger logger) { + logger.debug(" isSignPost(Material): Start"); + + logger.trace(" mat: " + mat); + switch (mat) { + case OAK_SIGN: + case BIRCH_SIGN: + case SPRUCE_SIGN: + case JUNGLE_SIGN: + case ACACIA_SIGN: + case DARK_OAK_SIGN: + case CRIMSON_SIGN: + case WARPED_SIGN: + case MANGROVE_SIGN: + case CHERRY_SIGN: + case BAMBOO_SIGN: + logger.debug(" this Material is Sign."); + return true; + default: + } + logger.debug(" this Material isn't Sign."); + return false; + } + + public static boolean isWallSign(Material mat, Logger logger) { + logger.debug(" isWallSign(Material): Start"); + + logger.trace(" mat: " + mat); + switch (mat) { + case OAK_WALL_SIGN: + case BIRCH_WALL_SIGN: + case SPRUCE_WALL_SIGN: + case JUNGLE_WALL_SIGN: + case ACACIA_WALL_SIGN: + case DARK_OAK_WALL_SIGN: + case CRIMSON_WALL_SIGN: + case WARPED_WALL_SIGN: + case MANGROVE_WALL_SIGN: + case CHERRY_WALL_SIGN: + case BAMBOO_WALL_SIGN: + logger.debug(" this Material is WallSign."); + return true; + default: + } + logger.debug(" this Material isn't WallSign."); + return false; + } + } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 0c70953..bcaa4eb 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Set; import java.util.logging.Level; +import org.apache.logging.log4j.LogManager; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.GameMode; @@ -59,6 +60,8 @@ public class StorageSignCore extends JavaPlugin implements Listener { + private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( + StorageSignCore.class); static BannerMeta ominousBannerMeta; public Logger logger; FileConfiguration config; @@ -127,59 +130,7 @@ public void onDisable() { } - public boolean isStorageSign(ItemStack item) { - logger.debug(" isStorageSign(ItemStack):Start"); - if (item == null) { - logger.debug(" item is null."); - return false; - } - - boolean isSignPost = isSignPost(item.getType()); - logger.trace(" isSignPost:" +isSignPost); - if (isSignPost) { - - logger.trace(" !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); - if (!item.getItemMeta().hasDisplayName()) { - logger.debug(" itemMeta hasn't displayName."); - return false; - } - logger.trace( - " !item.getItemMeta().getDisplayName().matches(\"StorageSign\"): " + !item.getItemMeta() - .getDisplayName().matches("StorageSign")); - if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { - logger.debug(" itemMetaName hasn't StorageSign."); - return false; - } - logger.trace(" item.getItemMeta().hasLore(): " + item.getItemMeta().hasLore()); - return item.getItemMeta().hasLore(); - } - logger.debug(" isSignPost is false."); - return false; - } - - public boolean isStorageSign(Block block) { - logger.debug(" isStorageSign(Block):Start"); - - boolean isSignPost = isSignPost(block.getType()); - boolean isWallSign = isWallSign(block.getType()); - logger.trace(" block.getType(): " + block.getType()); - logger.trace(" isSignPost(block.getType()): " + isSignPost); - logger.trace(" isWallSign(block.getType()) :" + isWallSign); - if (isSignPost || isWallSign) { - logger.debug(" This Block is Sign."); - Sign sign = (Sign) block.getState(); - - logger.trace(" sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( - Side.FRONT).getLine(0).matches("StorageSign")); - if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { - logger.debug(" This Sign is StorageSign."); - return true; - } - } - logger.debug(" This Block isn't StorageSign."); - return false; - } public boolean isHorseEgg(ItemStack item) { logger.debug("isHorseEgg: Start"); @@ -239,7 +190,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { || event.getAction() == Action.RIGHT_CLICK_AIR) { logger.debug("UserAction is RIGHT_CLICK_BLOCK or RIGHT_CLICK_AIR"); - boolean clickBlockIsSS = isStorageSign(block); + boolean clickBlockIsSS = StorageSign.isStorageSign(block, logger); logger.trace("clickBlockIsSS: " + clickBlockIsSS); if (!clickBlockIsSS) { logger.debug("★This Block not StorageSign."); @@ -285,7 +236,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { return; } mat = itemMainHand.getType(); - boolean mainHandIsSS = isStorageSign(itemMainHand); + boolean mainHandIsSS = StorageSign.isStorageSign(itemMainHand, logger); boolean mainHandIsHE = isHorseEgg(itemMainHand); logger.trace("isStorageSign(itemMainHand): " + mainHandIsSS); logger.trace("isHorseEgg(itemMainHand): " + mainHandIsHE); @@ -356,7 +307,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { return; } - boolean isStorageSign = isStorageSign(itemMainHand); + boolean isStorageSign = StorageSign.isStorageSign(itemMainHand, logger); logger.trace("isStorageSign:" + isStorageSign); if (isStorageSign) { //看板合成 @@ -386,14 +337,15 @@ public void onPlayerInteract(PlayerInteractEvent event) { player.getInventory().clear(player.getInventory().getHeldItemSlot()); } else { logger.debug("store all Empty Sign.SearchPlayer Inventory."); + // アイテム内でサインを探す for (int i = 0; i < player.getInventory().getSize(); i++) { ItemStack item = player.getInventory().getItem(i); boolean isSimilar = storageSign.isSimilar(item); logger.trace("storageSign.isSimilar(item)" + isSimilar); if (isSimilar) { logger.debug("find Empty Sign."); - storageSign.addAmount(item.getAmount()); - player.getInventory().clear(i); + storageSign.addAmount(item.getAmount()); + player.getInventory().clear(i); } } } @@ -605,7 +557,7 @@ public void onBlockBreak(BlockBreakEvent event) { public void onBlockPlace(BlockPlaceEvent event) { logger.debug("★onBlockPlace: Start"); - boolean handItemIsSS = isStorageSign(event.getItemInHand()); + boolean handItemIsSS = StorageSign.isStorageSign(event.getItemInHand(), logger); logger.trace("event.isCancelled(): " + event.isCancelled()); logger.trace("!handItemIsSS: " + !handItemIsSS); if (event.isCancelled() || !handItemIsSS) { @@ -654,7 +606,7 @@ public void onPlayerSignOpen(PlayerSignOpenEvent event){ } Block block = event.getSign().getBlock(); - boolean isStorageSign = isStorageSign(block); + boolean isStorageSign = StorageSign.isStorageSign(block, logger); logger.trace("isStorageSign: " + isStorageSign); if (isStorageSign) { logger.debug("StorageSignEdit Cancel."); @@ -719,9 +671,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = isSignPost(block); - boolean relIsStorageSign = isStorageSign(block); - boolean relIsWallSign = isWallSign(block); + boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); + boolean relIsWallSign = StorageSign.isWallSign(block, logger); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -806,9 +758,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = isSignPost(block); - boolean relIsStorageSign = isStorageSign(block); - boolean relIsWallSign = isWallSign(block); + boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); + boolean relIsWallSign = StorageSign.isWallSign(block, logger); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -1048,9 +1000,9 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve @EventHandler public void onPlayerCraft(CraftItemEvent event) { logger.debug("★onPlayerCraft:Start"); - logger.trace("isStorageSign(event.getCurrentItem()): " + isStorageSign(event.getCurrentItem())); + logger.trace("isStorageSign(event.getCurrentItem()): " + StorageSign.isStorageSign(event.getCurrentItem(), logger)); logger.trace("!event.getWhoClicked().hasPermission(\"storagesign.craft\")" + !event.getWhoClicked().hasPermission("storagesign.craft")); - if (isStorageSign(event.getCurrentItem()) && !event.getWhoClicked() + if (StorageSign.isStorageSign(event.getCurrentItem(), logger) && !event.getWhoClicked() .hasPermission("storagesign.craft")) { logger.debug("This user hasn't Permission. storagesign.craft."); ((CommandSender) event.getWhoClicked()).sendMessage( @@ -1082,9 +1034,9 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = ((BlockState) holder).getBlock().getRelative(face[i]); - boolean relIsSignPost = isSignPost(block); - boolean relIsStorageSign = isStorageSign(block); - boolean relIsWallSign = isWallSign(block); + boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); + boolean relIsWallSign = StorageSign.isWallSign(block, logger); logger.trace(" i: " + i); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); @@ -1150,8 +1102,8 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { return; } - boolean mainHandhasSS = isStorageSign(playerInv.getItemInMainHand()); - boolean offHandhasSS = isStorageSign(playerInv.getItemInOffHand()); + boolean mainHandhasSS = StorageSign.isStorageSign(playerInv.getItemInMainHand(), logger); + boolean offHandhasSS = StorageSign.isStorageSign(playerInv.getItemInOffHand(), logger); logger.trace("mainHandhasSS: " + mainHandhasSS); logger.trace("offHandisSS: " + offHandhasSS); logger.debug("check mainHand has SS."); @@ -1212,7 +1164,7 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { logger.debug("This Entity isn't Player."); Item item = event.getItem(); - boolean isStorageSign = isStorageSign(item.getItemStack()); + boolean isStorageSign = StorageSign.isStorageSign(item.getItemStack(), logger); logger.trace("isStorageSign(item.getItemStack()): " + isStorageSign); if (isStorageSign) { logger.debug("Delay Picked Entity StorageSign."); @@ -1236,70 +1188,10 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { } } - private boolean isSignPost(Block block) { - logger.debug(" isSignPost(Block)"); - Material mat = block.getType(); - return isSignPost(mat); - } - - private boolean isWallSign(Block block) { - Material mat = block.getType(); - return isWallSign(mat); - } - - //看板も8種類になったし、mat版おいとく - private boolean isSignPost(Material mat) { - logger.debug(" isSignPost(Material): Start"); - - logger.trace(" mat: " + mat); - switch (mat) { - case OAK_SIGN: - case BIRCH_SIGN: - case SPRUCE_SIGN: - case JUNGLE_SIGN: - case ACACIA_SIGN: - case DARK_OAK_SIGN: - case CRIMSON_SIGN: - case WARPED_SIGN: - case MANGROVE_SIGN: - case CHERRY_SIGN: - case BAMBOO_SIGN: - logger.debug(" this Material is Sign."); - return true; - default: - } - logger.debug(" this Material isn't Sign."); - return false; - } - - private boolean isWallSign(Material mat) { - logger.debug(" isWallSign(Material): Start"); - - logger.trace(" mat: " + mat); - switch (mat) { - case OAK_WALL_SIGN: - case BIRCH_WALL_SIGN: - case SPRUCE_WALL_SIGN: - case JUNGLE_WALL_SIGN: - case ACACIA_WALL_SIGN: - case DARK_OAK_WALL_SIGN: - case CRIMSON_WALL_SIGN: - case WARPED_WALL_SIGN: - case MANGROVE_WALL_SIGN: - case CHERRY_WALL_SIGN: - case BAMBOO_WALL_SIGN: - logger.debug(" this Material is WallSign."); - return true; - default: - } - logger.debug(" this Material isn't WallSign."); - return false; - } - private void dropRelativeSign(Block block) { logger.debug(" dropRelativeSign:Start"); Map breakSignMap = new HashMap<>(); - boolean isStorageSign = isStorageSign(block); + boolean isStorageSign = StorageSign.isStorageSign(block, logger); logger.trace(" isStorageSign: " + isStorageSign); if (isStorageSign) { logger.debug(" breakItem is StorageSign."); @@ -1313,9 +1205,9 @@ private void dropRelativeSign(Block block) { BlockFace.WEST}; Block relBlock = block.getRelative(face[i]); - boolean relIsSignPost = isSignPost(relBlock); - boolean relIsStorageSign = isStorageSign(relBlock); - boolean relIsWallSign = isWallSign(relBlock); + boolean relIsSignPost = StorageSign.isSignPost(relBlock, logger); + boolean relIsStorageSign = StorageSign.isStorageSign(relBlock, logger); + boolean relIsWallSign = StorageSign.isWallSign(relBlock, logger); logger.trace(" relBlock: " + relBlock); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); From 55f62258ac5b1ebc2b558e043ef6cf68747452ef Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 6 May 2024 21:43:11 +0900 Subject: [PATCH 48/82] =?UTF-8?q?1.20.6=E5=AF=BE=E5=BF=9C=20isSimilar?= =?UTF-8?q?=E3=81=AESS=E3=81=AE=E5=A0=B4=E5=90=88=E3=81=AE=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 7303e05..b4c930f 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import org.apache.logging.log4j.LogManager; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; @@ -22,6 +23,8 @@ */ public class StorageSign { + private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( + StorageSign.class); /** * */ @@ -764,16 +767,14 @@ public boolean isSimilar(ItemStack item) { // SSなのかだけ、別ロジックで判定 ItemStack contents = getContents(); - if(isStorageSign(item, _logger) && contents.getType() == item.getType()){ + boolean isStorageSign = isStorageSign(item, _logger); + _logger.trace("isStorageSign: " + isStorageSign); + _logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); + if(isStorageSign&& contents.getType() == item.getType()){ StorageSign cSign = new StorageSign(contents, _logger); StorageSign iSign = new StorageSign(item, _logger); - if(cSign.isEmpty() == iSign.isEmpty()){ - return true; -// } else if(cSign.getMaterial() == iSign.getMaterial()){ -// return true; - } else { - return false; - } + _logger.trace("cSign.isEmpty() == iSign.isEmpty(): " + (cSign.isEmpty() == iSign.isEmpty())); + return cSign.isEmpty() == iSign.isEmpty(); } // それ以外のItemはisSimilarで判定 From c251c8e3d39adfedd2e977715ac714eef6849f90 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sat, 11 May 2024 15:17:49 +0900 Subject: [PATCH 49/82] =?UTF-8?q?1.20.6=E5=AF=BE=E5=BF=9C=20isSimilar?= =?UTF-8?q?=E3=81=AESS=E3=81=AE=E5=A0=B4=E5=90=88=E3=81=AE=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E6=94=B9=E5=96=84=20=E7=A9=BA=E3=82=B5?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=81=AE=E5=88=A4=E5=AE=9A=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index b4c930f..f0d9c66 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -768,13 +768,20 @@ public boolean isSimilar(ItemStack item) { // SSなのかだけ、別ロジックで判定 ItemStack contents = getContents(); boolean isStorageSign = isStorageSign(item, _logger); + boolean contentIsStorageSign = isStorageSign(contents, _logger); + boolean isSignPost = isSignPost(item.getType(), _logger); _logger.trace("isStorageSign: " + isStorageSign); _logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); - if(isStorageSign&& contents.getType() == item.getType()){ - StorageSign cSign = new StorageSign(contents, _logger); - StorageSign iSign = new StorageSign(item, _logger); - _logger.trace("cSign.isEmpty() == iSign.isEmpty(): " + (cSign.isEmpty() == iSign.isEmpty())); - return cSign.isEmpty() == iSign.isEmpty(); + if(isStorageSign && contentIsStorageSign){ + if(contents.getType() == item.getType()){ + StorageSign cSign = new StorageSign(contents, _logger); + StorageSign iSign = new StorageSign(item, _logger); + _logger.trace("cSign.isEmpty() == iSign.isEmpty(): " + (cSign.isEmpty() == iSign.isEmpty())); + return cSign.isEmpty() == iSign.isEmpty(); + } +// } else if(isSignPost) { +// // StorageSignじゃなくて、ただの看板の場合はfalse. +// return false; } // それ以外のItemはisSimilarで判定 From eaade84c5d1cb74d815301a8e78f7945936201f9 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Fri, 10 May 2024 22:32:36 +0900 Subject: [PATCH 50/82] =?UTF-8?q?NBT=5FNAME=5FSHORT=5FNAMES=E3=81=AE?= =?UTF-8?q?=E5=88=9D=E6=9C=9F=E5=8C=96=E3=82=92=E3=83=AA=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=AF=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index da048b6..9c1f0a4 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -2,7 +2,6 @@ import java.util.Collections; import java.util.EnumSet; -import java.util.HashMap; import java.util.Map; import java.util.Set; import org.bukkit.Material; @@ -43,16 +42,14 @@ public class PotionInfo { private static String OLD_JUMP_TYPE_NAME = "JUMP"; private static String OLD_SPEED_TYPE_NAME = "SPEED"; private static String OLD_REGEN_TYPE_NAME = "REGEN"; - private static final Map NBT_NAME_SHORT_NAMES = new HashMap() { - { - put(OLD_HEAL_TYPE_NAME, SHORT_NAME_HEAL); - put(OLD_DAMAGE_TYPE_NAME, SHORT_NAME_DAMAG); - put(OLD_JUMP_TYPE_NAME, SHORT_NAME_JUMP); - put(OLD_SPEED_TYPE_NAME, SHORT_NAME_SPEED); - put(OLD_REGEN_TYPE_NAME, SHORT_NAME_REGEN); - put(PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT); - } - }; + private static final Map NBT_NAME_SHORT_NAMES = Map.of( + OLD_HEAL_TYPE_NAME, SHORT_NAME_HEAL, + OLD_DAMAGE_TYPE_NAME, SHORT_NAME_DAMAG, + OLD_JUMP_TYPE_NAME, SHORT_NAME_JUMP, + OLD_SPEED_TYPE_NAME, SHORT_NAME_SPEED, + OLD_REGEN_TYPE_NAME, SHORT_NAME_REGEN, + PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT + ); protected Material mat; protected PotionType pot; protected short damage = 0; From f7a2fa38289f44c87497b8c5003340326aadac28 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Fri, 10 May 2024 22:34:51 +0900 Subject: [PATCH 51/82] =?UTF-8?q?PotionInfo=E3=81=AE=E8=A6=81=E7=B4=A0?= =?UTF-8?q?=E3=82=92=E9=9D=99=E7=9A=84=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/PotionInfo.java | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/main/java/wacky/storagesign/PotionInfo.java b/src/main/java/wacky/storagesign/PotionInfo.java index 9c1f0a4..64c2978 100644 --- a/src/main/java/wacky/storagesign/PotionInfo.java +++ b/src/main/java/wacky/storagesign/PotionInfo.java @@ -10,20 +10,22 @@ import com.github.teruteru128.logger.Logger; import wacky.storagesign.Exception.PotionException; +import static org.bukkit.potion.PotionType.*; + public class PotionInfo { private static final Set HEAL_POTIONS = - Collections.unmodifiableSet(EnumSet.of(PotionType.HEALING, PotionType.STRONG_HEALING)); + Collections.unmodifiableSet(EnumSet.of(HEALING, STRONG_HEALING)); private static final Set BREATH_POTIONS = Collections - .unmodifiableSet(EnumSet.of(PotionType.WATER_BREATHING, PotionType.LONG_WATER_BREATHING)); + .unmodifiableSet(EnumSet.of(WATER_BREATHING, LONG_WATER_BREATHING)); private static final Set DAMAGE_POTIONS = - Collections.unmodifiableSet(EnumSet.of(PotionType.HARMING, PotionType.STRONG_HARMING)); + Collections.unmodifiableSet(EnumSet.of(HARMING, STRONG_HARMING)); private static final Set JUMP_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.LEAPING, PotionType.LONG_LEAPING, PotionType.STRONG_LEAPING)); + EnumSet.of(LEAPING, LONG_LEAPING, STRONG_LEAPING)); private static final Set SPEED_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.SWIFTNESS, PotionType.LONG_SWIFTNESS, PotionType.STRONG_SWIFTNESS)); + EnumSet.of(SWIFTNESS, LONG_SWIFTNESS, STRONG_SWIFTNESS)); private static final Set REGENERATION_POTIONS = Collections.unmodifiableSet( - EnumSet.of(PotionType.REGENERATION, PotionType.LONG_REGENERATION, PotionType.STRONG_REGENERATION)); + EnumSet.of(REGENERATION, LONG_REGENERATION, STRONG_REGENERATION)); protected static String TYPE_SPLASH_PREF = "S"; protected static String TYPE_LINGERING_PREF = "L"; private static String ENHANCE_NORMAL_CODE = "0"; @@ -48,7 +50,7 @@ public class PotionInfo { OLD_JUMP_TYPE_NAME, SHORT_NAME_JUMP, OLD_SPEED_TYPE_NAME, SHORT_NAME_SPEED, OLD_REGEN_TYPE_NAME, SHORT_NAME_REGEN, - PotionType.WATER_BREATHING.toString(), SHORT_NAME_BREAT + WATER_BREATHING.toString(), SHORT_NAME_BREAT ); protected Material mat; protected PotionType pot; @@ -163,10 +165,10 @@ private PotionType getType(String effName, String enhance) { if (effName.equals(SHORT_NAME_HEAL)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Heal."); - return PotionType.HEALING; + return HEALING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Heal."); - return PotionType.STRONG_HEALING; + return STRONG_HEALING; } else { logger.error("Heal Enhance is not Exist!Enhance: " + enhance); throw new PotionException("治癒のポーションに対応する種類が存在しません"); @@ -174,10 +176,10 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_BREAT)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Breat."); - return PotionType.WATER_BREATHING; + return WATER_BREATHING; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Breat."); - return PotionType.LONG_WATER_BREATHING; + return LONG_WATER_BREATHING; } else { logger.error("Breat Enhance is not Exist!Enhance: " + enhance); throw new PotionException("水中呼吸のポーションに対応する種類が存在しません"); @@ -185,10 +187,10 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_DAMAG)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Damage."); - return PotionType.HARMING; + return HARMING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Damage."); - return PotionType.STRONG_HARMING; + return STRONG_HARMING; } else { logger.error("Damage Enhance is not Exist!Enhance: " + enhance); throw new PotionException("ダメージのポーションに対応する種類が存在しません"); @@ -196,13 +198,13 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_JUMP)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Jump."); - return PotionType.LEAPING; + return LEAPING; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Jump."); - return PotionType.LONG_LEAPING; + return LONG_LEAPING; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Jump."); - return PotionType.STRONG_LEAPING; + return STRONG_LEAPING; } else { logger.error("Jump Enhance is not Exist!Enhance: " + enhance); throw new PotionException("跳躍のポーションに対応する種類が存在しません"); @@ -210,13 +212,13 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_SPEED)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Speed."); - return PotionType.SWIFTNESS; + return SWIFTNESS; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Speed."); - return PotionType.LONG_SWIFTNESS; + return LONG_SWIFTNESS; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Speed."); - return PotionType.STRONG_SWIFTNESS; + return STRONG_SWIFTNESS; } else { logger.error("Speed Enhance is not Exist!Enhance: " + enhance); throw new PotionException("俊敏のポーションに対応する種類が存在しません"); @@ -224,13 +226,13 @@ private PotionType getType(String effName, String enhance) { } else if (effName.equals(SHORT_NAME_REGEN)) { if (enhance.equals(ENHANCE_NORMAL_CODE)) { logger.debug("Portion:Regen."); - return PotionType.REGENERATION; + return REGENERATION; } else if (enhance.equals(ENHANCE_EXTENSION_CODE)) { logger.debug("Portion:Ext_Regen."); - return PotionType.LONG_REGENERATION; + return LONG_REGENERATION; } else if (enhance.equals(ENHANCE_STRONG_CODE)) { logger.debug("Portion:Str_Regen."); - return PotionType.STRONG_REGENERATION; + return STRONG_REGENERATION; } else { logger.error("Speed Enhance is not Exist!Enhance: " + enhance); throw new PotionException("再生のポーションに対応する種類が存在しません"); @@ -246,7 +248,7 @@ private PotionType getType(String effName, String enhance) { name = ENHANCE_STRONG_PREF + name; } logger.trace("name: " + name); - for (PotionType p : PotionType.values()) { + for (PotionType p : values()) { logger.trace(" p: " + p); logger.trace(" p.toString().startsWith(name): " + p.toString().startsWith(name)); if (p.toString().startsWith(name)) { @@ -263,7 +265,7 @@ private static String getNormalType(PotionType pot) { if (HEAL_POTIONS.contains(pot)) { return OLD_HEAL_TYPE_NAME; } else if (BREATH_POTIONS.contains(pot)) { - return PotionType.WATER_BREATHING.toString(); + return WATER_BREATHING.toString(); } else if (DAMAGE_POTIONS.contains(pot)) { return OLD_DAMAGE_TYPE_NAME; } else if (JUMP_POTIONS.contains(pot)) { @@ -281,7 +283,7 @@ private static String getNormalType(PotionType pot) { } else if (name.startsWith(ENHANCE_STRONG_PREF)) { name = name.substring(ENHANCE_STRONG_PREF.length()); } - for (PotionType p : PotionType.values()) { + for (PotionType p : values()) { String str = p.toString(); if (str.startsWith(name)) { return str; From 6a637d45304824ad12b25c4a2179ab20e32c6576 Mon Sep 17 00:00:00 2001 From: Teruteru Date: Sat, 11 May 2024 15:42:23 +0900 Subject: [PATCH 52/82] =?UTF-8?q?Material=E3=81=AE=E8=A6=81=E7=B4=A0?= =?UTF-8?q?=E3=82=92=E9=9D=99=E7=9A=84=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 186 +++++++++--------- 1 file changed, 94 insertions(+), 92 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index f0d9c66..5db2274 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -18,6 +18,8 @@ import org.bukkit.util.NumberConversions; import com.github.teruteru128.logger.Logger; +import static org.bukkit.Material.*; + /** * StrageSignの実体クラスです. */ @@ -82,14 +84,14 @@ public StorageSign(ItemStack item, Logger logger) { logger.debug("StorageSign isn't Empty"); this.mat = getMaterial(str[0].split(":")[0]); - if (this.mat == Material.ENCHANTED_BOOK) { + if (this.mat == ENCHANTED_BOOK) { logger.debug("StorageSign have ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { logger.debug("StorageSign have any Potion"); // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); @@ -103,10 +105,10 @@ public StorageSign(ItemStack item, Logger logger) { logger.debug("str[0].contains\":\""); this.damage = NumberConversions.toShort(str[0].split(":")[1]); - } else if (this.mat == Material.STONE_SLAB) { + } else if (this.mat == STONE_SLAB) { logger.debug("StorageSign have STONE_SLAB"); // 1.13の滑らかハーフと1.14の石ハーフ区別 - this.mat = Material.SMOOTH_STONE_SLAB; + this.mat = SMOOTH_STONE_SLAB; } this.amount = NumberConversions.toInt(str[1]); @@ -131,16 +133,16 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { // 上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); - this.isEmpty = (this.mat == null || this.mat == Material.AIR); + this.isEmpty = (this.mat == null || this.mat == AIR); - if (this.mat == Material.ENCHANTED_BOOK) { + if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { logger.debug("any POTION"); // PotionInfo pi = new PotionInfo(mat, line2); PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2], logger); @@ -152,10 +154,10 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { logger.debug("line2.length is 2"); this.damage = NumberConversions.toShort(line2[1]); - } else if (this.mat == Material.STONE_SLAB) { + } else if (this.mat == STONE_SLAB) { logger.debug("StorageSign2:STONE_SLAB"); // 1.13の滑らかハーフと1.14の石ハーフ区別 - this.mat = Material.SMOOTH_STONE_SLAB; + this.mat = SMOOTH_STONE_SLAB; } @@ -164,49 +166,49 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.stack = 1; // 壁掛け看板のチェック - if (signmat == Material.OAK_WALL_SIGN) { + if (signmat == OAK_WALL_SIGN) { logger.debug("signmat is OAK_WALL_SIGN"); - this.smat = Material.OAK_SIGN; + this.smat = OAK_SIGN; - } else if (signmat == Material.BIRCH_WALL_SIGN) { + } else if (signmat == BIRCH_WALL_SIGN) { logger.debug("signmat is BIRCH_WALL_SIGN"); - this.smat = Material.BIRCH_SIGN; + this.smat = BIRCH_SIGN; - } else if (signmat == Material.SPRUCE_WALL_SIGN) { + } else if (signmat == SPRUCE_WALL_SIGN) { logger.debug("signmat is SPRUCE_WALL_SIGN"); - this.smat = Material.SPRUCE_SIGN; + this.smat = SPRUCE_SIGN; - } else if (signmat == Material.JUNGLE_WALL_SIGN) { + } else if (signmat == JUNGLE_WALL_SIGN) { logger.debug("signmat is JUNGLE_WALL_SIGN"); - this.smat = Material.JUNGLE_SIGN; + this.smat = JUNGLE_SIGN; - } else if (signmat == Material.ACACIA_WALL_SIGN) { + } else if (signmat == ACACIA_WALL_SIGN) { logger.debug("signmat is ACACIA_WALL_SIGN"); - this.smat = Material.ACACIA_SIGN; + this.smat = ACACIA_SIGN; - } else if (signmat == Material.DARK_OAK_WALL_SIGN) { + } else if (signmat == DARK_OAK_WALL_SIGN) { logger.debug("signmat is DARK_OAK_WALL_SIGN"); - this.smat = Material.DARK_OAK_SIGN; + this.smat = DARK_OAK_SIGN; - } else if (signmat == Material.CRIMSON_WALL_SIGN) { + } else if (signmat == CRIMSON_WALL_SIGN) { logger.debug("signmat is CRIMSON_WALL_SIGN"); - this.smat = Material.CRIMSON_SIGN; + this.smat = CRIMSON_SIGN; - } else if (signmat == Material.WARPED_WALL_SIGN) { + } else if (signmat == WARPED_WALL_SIGN) { logger.debug("signmat is WARPED_WALL_SIGN"); - this.smat = Material.WARPED_SIGN; + this.smat = WARPED_SIGN; - } else if (signmat == Material.MANGROVE_WALL_SIGN) { + } else if (signmat == MANGROVE_WALL_SIGN) { logger.debug("signmat is MANGROVE_WALL_SIGN"); - this.smat = Material.MANGROVE_SIGN; + this.smat = MANGROVE_SIGN; - } else if (signmat == Material.CHERRY_WALL_SIGN) { + } else if (signmat == CHERRY_WALL_SIGN) { logger.debug("signmat is CHERRY_WALL_SIGN"); - this.smat = Material.CHERRY_SIGN; + this.smat = CHERRY_SIGN; - } else if (signmat == Material.BAMBOO_WALL_SIGN) { + } else if (signmat == BAMBOO_WALL_SIGN) { logger.debug("signmat is BAMBOO_WALL_SIGN"); - this.smat = Material.BAMBOO_SIGN; + this.smat = BAMBOO_SIGN; } else { logger.debug("Material isn't WALL_SIGN"); @@ -223,7 +225,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { * @return ItemStack 空のStorageSign */ public static ItemStack emptySign() { - return emptySign(Material.OAK_SIGN); + return emptySign(OAK_SIGN); } /** @@ -263,106 +265,106 @@ protected Material getMaterial(String str) { // if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; if (str.matches("")) { _logger.debug("Material is AIR"); - return Material.AIR; + return AIR; } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { _logger.debug("Material is OakStorageSign"); this.damage = 1; - return Material.OAK_SIGN; + return OAK_SIGN; } else if (str.matches("SpruceStorageSign")) { _logger.debug("Material is SpruceStorageSign"); this.damage = 1; - return Material.SPRUCE_SIGN; + return SPRUCE_SIGN; } else if (str.matches("BirchStorageSign")) { _logger.debug("Material is BirchStorageSign"); this.damage = 1; - return Material.BIRCH_SIGN; + return BIRCH_SIGN; } else if (str.matches("JungleStorageSign")) { _logger.debug("Material is JungleStorageSign"); this.damage = 1; - return Material.JUNGLE_SIGN; + return JUNGLE_SIGN; } else if (str.matches("AcaciaStorageSign")) { _logger.debug("Material is AcaciaStorageSign"); this.damage = 1; - return Material.ACACIA_SIGN; + return ACACIA_SIGN; } else if (str.matches("DarkOakStorageSign")) { _logger.debug("Material is DarkOakStorageSign"); this.damage = 1; - return Material.DARK_OAK_SIGN; + return DARK_OAK_SIGN; } else if (str.matches("CrimsonStorageSign")) { _logger.debug("Material is CrimsonStorageSign"); this.damage = 1; - return Material.CRIMSON_SIGN; + return CRIMSON_SIGN; } else if (str.matches("WarpedStorageSign")) { _logger.debug("Material is WarpedStorageSign"); this.damage = 1; - return Material.WARPED_SIGN; + return WARPED_SIGN; } else if (str.matches("MangroveStorageSign")) { _logger.debug("Material is MangroveStorageSign"); this.damage = 1; - return Material.MANGROVE_SIGN; + return MANGROVE_SIGN; } else if (str.matches("CherryStorageSign")) { _logger.debug("Material is CherryStorageSign"); this.damage = 1; - return Material.CHERRY_SIGN; + return CHERRY_SIGN; } else if (str.matches("BambooStorageSign")) { _logger.debug("Material is BambooStorageSign"); this.damage = 1; - return Material.BAMBOO_SIGN; + return BAMBOO_SIGN; } if (str.matches("HorseEgg")) { _logger.debug("Material is HorseEgg"); this.damage = 1; - return Material.END_PORTAL; + return END_PORTAL; // ガスト卵でよくね? } // 1.13→1.14用 if (str.startsWith("SIGN")) { _logger.debug("Material is SIGN"); - return Material.OAK_SIGN; + return OAK_SIGN; } if (str.startsWith("ROSE_RED")) { _logger.debug("Material is ROSE_RED"); - return Material.RED_DYE; + return RED_DYE; } if (str.startsWith("DANDELION_YELLOW")) { _logger.debug("Material is DANDELION_YELLOW"); - return Material.YELLOW_DYE; + return YELLOW_DYE; } if (str.startsWith("CACTUS_GREEN")) { _logger.debug("Material is CACTUS_GREEN"); - return Material.GREEN_DYE; + return GREEN_DYE; } // 省略用 if (str.startsWith("ENCHBOOK")) { _logger.debug("Material is ENCHBOOK"); - return Material.ENCHANTED_BOOK; + return ENCHANTED_BOOK; } if (str.startsWith("SPOTION")) { _logger.debug("Material is SPOTION"); - return Material.SPLASH_POTION; + return SPLASH_POTION; } if (str.startsWith("LPOTION")) { _logger.debug("Material is LPOTION"); - return Material.LINGERING_POTION; + return LINGERING_POTION; } - Material mat = Material.matchMaterial(str); + Material mat = matchMaterial(str); if (mat == null) { _logger.debug("Material is null"); // 後ろ切れる程度なら対応可 - for (Material m : Material.values()) { + for (Material m : values()) { if (m.toString().startsWith(str)) { return m; } @@ -402,11 +404,11 @@ protected String getShortName() { _logger.debug("getShortName:start"); // 2行目の記載内容 _logger.trace("this.mat=" + mat); - if (this.mat == null || this.mat == Material.AIR) { + if (this.mat == null || this.mat == AIR) { _logger.debug("empty"); return ""; - } else if (this.mat == Material.END_PORTAL) { + } else if (this.mat == END_PORTAL) { _logger.debug("Material.END_PORTAL"); if (this.damage == 0) { _logger.debug("OakStorageSign"); @@ -418,47 +420,47 @@ protected String getShortName() { return "HorseEgg"; } - } else if (this.mat == Material.OAK_SIGN && this.damage == 1) { + } else if (this.mat == OAK_SIGN && this.damage == 1) { _logger.debug("OakStorageSign"); return "OakStorageSign"; - } else if (this.mat == Material.SPRUCE_SIGN && this.damage == 1) { + } else if (this.mat == SPRUCE_SIGN && this.damage == 1) { _logger.debug("SpruceStorageSign"); return "SpruceStorageSign"; - } else if (this.mat == Material.BIRCH_SIGN && this.damage == 1) { + } else if (this.mat == BIRCH_SIGN && this.damage == 1) { _logger.debug("BirchStorageSign"); return "BirchStorageSign"; - } else if (this.mat == Material.JUNGLE_SIGN && this.damage == 1) { + } else if (this.mat == JUNGLE_SIGN && this.damage == 1) { _logger.debug("JungleStorageSign"); return "JungleStorageSign"; - } else if (this.mat == Material.ACACIA_SIGN && this.damage == 1) { + } else if (this.mat == ACACIA_SIGN && this.damage == 1) { _logger.debug("AcaciaStorageSign"); return "AcaciaStorageSign"; - } else if (this.mat == Material.DARK_OAK_SIGN && this.damage == 1) { + } else if (this.mat == DARK_OAK_SIGN && this.damage == 1) { _logger.debug("DarkOakStorageSign"); return "DarkOakStorageSign"; - } else if (this.mat == Material.CRIMSON_SIGN && this.damage == 1) { + } else if (this.mat == CRIMSON_SIGN && this.damage == 1) { _logger.debug("CrimsonStorageSign"); return "CrimsonStorageSign"; - } else if (this.mat == Material.WARPED_SIGN && this.damage == 1) { + } else if (this.mat == WARPED_SIGN && this.damage == 1) { _logger.debug("WarpedStorageSign"); return "WarpedStorageSign"; - } else if (this.mat == Material.MANGROVE_SIGN && this.damage == 1) { + } else if (this.mat == MANGROVE_SIGN && this.damage == 1) { _logger.debug("MangroveStorageSign"); return "MangroveStorageSign"; - } else if (this.mat == Material.CHERRY_SIGN && this.damage == 1) { + } else if (this.mat == CHERRY_SIGN && this.damage == 1) { _logger.debug("CherryStorageSign"); return "CherryStorageSign"; - } else if (this.mat == Material.BAMBOO_SIGN && this.damage == 1) { + } else if (this.mat == BAMBOO_SIGN && this.damage == 1) { _logger.debug("BambooStorageSign"); return "BambooStorageSign"; @@ -471,12 +473,12 @@ protected String getShortName() { // else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : // "RED_MUSH_BLO:" + damage; - } else if (this.mat == Material.ENCHANTED_BOOK) { + } else if (this.mat == ENCHANTED_BOOK) { _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { _logger.debug("any POTION"); return PotionInfo.getSignData(this.mat, pot, this.damage); } @@ -526,13 +528,13 @@ public ItemStack getStorageSign() { _logger.debug("Empty"); list.add("Empty"); - } else if (this.mat == Material.ENCHANTED_BOOK) { + } else if (this.mat == ENCHANTED_BOOK) { _logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " + this.amount); - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { _logger.debug("any POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); @@ -556,7 +558,7 @@ public ItemStack getStorageSign() { */ private ItemStack emptyHorseEgg() { _logger.debug("emptyHorseEgg:start"); - ItemStack emptyHorseEgg = new ItemStack(Material.GHAST_SPAWN_EGG); + ItemStack emptyHorseEgg = new ItemStack(GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); List list = new ArrayList<>(); @@ -616,7 +618,7 @@ public ItemStack getContents() { return null; } - if (this.mat == Material.END_PORTAL) { + if (this.mat == END_PORTAL) { _logger.debug("Contents is END_PORTAL"); if (this.damage == 0) { _logger.debug("emptySign"); @@ -630,17 +632,17 @@ public ItemStack getContents() { } - if (this.mat == Material.STONE_SLAB) { + if (this.mat == STONE_SLAB) { _logger.debug("STONE_SLAB"); // ダメージ値0にする return new ItemStack(this.mat, 1); - } else if (this.mat == Material.OAK_SIGN || this.mat == Material.SPRUCE_SIGN - || this.mat == Material.BIRCH_SIGN || this.mat == Material.JUNGLE_SIGN - || this.mat == Material.ACACIA_SIGN || this.mat == Material.DARK_OAK_SIGN - || this.mat == Material.CRIMSON_SIGN || this.mat == Material.WARPED_SIGN - || this.mat == Material.MANGROVE_SIGN || this.mat == Material.CHERRY_SIGN - || this.mat == Material.BAMBOO_SIGN) { + } else if (this.mat == OAK_SIGN || this.mat == SPRUCE_SIGN + || this.mat == BIRCH_SIGN || this.mat == JUNGLE_SIGN + || this.mat == ACACIA_SIGN || this.mat == DARK_OAK_SIGN + || this.mat == CRIMSON_SIGN || this.mat == WARPED_SIGN + || this.mat == MANGROVE_SIGN || this.mat == CHERRY_SIGN + || this.mat == BAMBOO_SIGN) { _logger.debug("any SIGN"); if (this.damage == 0) { @@ -652,7 +654,7 @@ public ItemStack getContents() { return emptySign(this.mat); } - } else if (this.mat == Material.ENCHANTED_BOOK) { + } else if (this.mat == ENCHANTED_BOOK) { _logger.debug("ENCHANTED_BOOK"); ItemStack item = new ItemStack(this.mat, 1); @@ -662,8 +664,8 @@ public ItemStack getContents() { return item; - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { _logger.debug("any POTION"); ItemStack item = new ItemStack(this.mat, 1); @@ -675,7 +677,7 @@ public ItemStack getContents() { return item; - } else if (this.mat == Material.FIREWORK_ROCKET) { + } else if (this.mat == FIREWORK_ROCKET) { _logger.debug("FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, 1); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); @@ -685,7 +687,7 @@ public ItemStack getContents() { return item; - } else if (this.mat == Material.WHITE_BANNER && this.damage == 8) { + } else if (this.mat == WHITE_BANNER && this.damage == 8) { _logger.debug("WHITE_BANNER & damage is 8"); ItemStack item = new ItemStack(this.mat, 1); @@ -728,7 +730,7 @@ public boolean isSimilar(ItemStack item) { } - if (this.mat == Material.ENCHANTED_BOOK && item.getType() == Material.ENCHANTED_BOOK) { + if (this.mat == ENCHANTED_BOOK && item.getType() == ENCHANTED_BOOK) { _logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); @@ -751,8 +753,8 @@ public boolean isSimilar(ItemStack item) { _logger.debug(" Shulker"); // 後回し - } else if (this.mat == Material.POTION || this.mat == Material.SPLASH_POTION - || this.mat == Material.LINGERING_POTION) { + } else if (this.mat == POTION || this.mat == SPLASH_POTION + || this.mat == LINGERING_POTION) { _logger.debug(" This mat is PotionSeries."); _logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); From 8db3f3c07d91afcb9f895650a0afa8cec80c8146 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sat, 25 May 2024 20:55:48 +0900 Subject: [PATCH 53/82] =?UTF-8?q?1.20.6=E5=AF=BE=E5=BF=9C=20Plugin.yml?= =?UTF-8?q?=E3=81=AE=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 57eae88..83dc977 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ main: wacky.storagesign.StorageSignCore version: ${version} description: StorageSign Plugin for Spigot. You can 2billion items storeing to wooden sign. author: wackyls6 -api-version: 1.20 +api-version: 1.20.6 depend: [Logger] softdepend: [WorldGuard] website: https://github.com/wackyls6/StorageSign From 75d3dad62e56656674748761b040730b74fbaff3 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 31 May 2024 12:52:00 +0900 Subject: [PATCH 54/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E3=82=AA=E3=83=95=E3=83=8F=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=81=A7SS=E3=82=92=E6=8C=81=E3=81=A3=E3=81=9F=E6=99=82?= =?UTF-8?q?=E3=81=AE=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E6=8A=91=E5=88=B6?= =?UTF-8?q?=20=E3=83=8F=E3=83=81=E3=81=AE=E5=B7=A3=E3=80=81=E9=A4=8A?= =?UTF-8?q?=E8=9C=82=E7=AE=B1=E3=82=92=E6=89=8B=E5=8B=95=E3=81=A7=E5=85=A5?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E6=99=82=E3=81=AE=E5=87=A6=E7=90=86=E8=AA=BF?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/wacky/storagesign/StorageSign.java | 10 ++++++++++ src/main/java/wacky/storagesign/StorageSignCore.java | 9 ++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 826dafb..d167dbc 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.5.4 + 1.5.5 jar StorageSign diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 5db2274..2491684 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -1,7 +1,10 @@ package wacky.storagesign; import java.util.ArrayList; +import java.util.Collections; +import java.util.EnumSet; import java.util.List; +import java.util.Set; import org.apache.logging.log4j.LogManager; import org.bukkit.Material; import org.bukkit.block.Block; @@ -27,6 +30,9 @@ public class StorageSign { private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( StorageSign.class); + + private static final Set block_entity_data_Materials = Collections.unmodifiableSet( + EnumSet.of(BEE_NEST, BEEHIVE)); /** * */ @@ -765,6 +771,10 @@ public boolean isSimilar(ItemStack item) { return true; } } + } else if (block_entity_data_Materials.contains(this.mat)) { + // block_entity_data_Materialsに入ってるものは、isSimilarで比較できないので、Materialが一緒かで判定 + _logger.debug(" This mat is block_entity_data_Materials."); + return this.mat.equals(item.getType()); } // SSなのかだけ、別ロジックで判定 diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index bcaa4eb..c2d771b 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -198,7 +198,14 @@ public void onPlayerInteract(PlayerInteractEvent event) { } if (event.getHand() == EquipmentSlot.OFF_HAND) { logger.debug("★This hand is OFF_HAND."); - //一応 + //オフハンドでスニーク動作でSSを触り、かつ持ってるアイテムがSSのときは、看板が張り付かないようにイベントをキャンセルする + boolean offItemIsSS = StorageSign.isStorageSign(event.getItem(), logger); + logger.trace("player.isSneaking(): " + player.isSneaking()); + logger.trace("offItemIsSS: " + offItemIsSS); + if (player.isSneaking() && offItemIsSS) { + event.setUseItemInHand(Result.DENY); + event.setUseInteractedBlock(Result.DENY); + } return; } event.setUseItemInHand(Result.DENY); From 91a44246e338bd8d0b9d578ba54eac855fa581e8 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 31 May 2024 22:38:52 +0900 Subject: [PATCH 55/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20ConfigLoader=E4=BD=9C=E6=88=90=E3=83=BB=E5=88=87?= =?UTF-8?q?=E3=82=8A=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/ConfigLoader.java | 135 ++++++++++++++++++ .../wacky/storagesign/StorageSignCore.java | 69 +++++---- src/main/resources/config.yml | 1 + 3 files changed, 168 insertions(+), 37 deletions(-) create mode 100644 src/main/java/wacky/storagesign/ConfigLoader.java diff --git a/src/main/java/wacky/storagesign/ConfigLoader.java b/src/main/java/wacky/storagesign/ConfigLoader.java new file mode 100644 index 0000000..2b8fcb9 --- /dev/null +++ b/src/main/java/wacky/storagesign/ConfigLoader.java @@ -0,0 +1,135 @@ +package wacky.storagesign; + +import java.util.Arrays; +import java.util.List; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.plugin.java.JavaPlugin; + +/** + * config.ymlを読み取るローダー. + */ +public class ConfigLoader { + + /** + * config.ymlを参照するFileConfigurationの実体. + */ + public static FileConfiguration fileConfig; + + /** + * ローダーの初期化処理. JavaPlugin.onEnableクラスでのみ呼ばれることを想定. + */ + public static void setup(JavaPlugin plugin) { + fileConfig = plugin.getConfig(); + fileConfig.options().copyDefaults(true); + fileConfig.options().setHeader(List.of("StorageSign Configuration")); + plugin.saveConfig(); + } + + /** + * no-permissionの値を取得する. + * + * @return String + */ + public static String getNoPermission() { + return fileConfig.getString("no-permisson"); + } + + /** + * log-levelの値を取得する. + * + * @return String + */ + public static String getLogLevel() { + return fileConfig.getString("log-level"); + } + + /** + * manual-importの値を取得する. + * + * @return boolean + */ + public static boolean getManualImport() { + return fileConfig.getBoolean("manual-import"); + } + + /** + * manual-exportの値を取得する. + * + * @return boolean + */ + public static boolean getManualExport() { + return fileConfig.getBoolean("manual-export"); + } + + /** + * auto-importの値を取得する. + * + * @return boolean + */ + public static boolean getAutoImport() { + return fileConfig.getBoolean("auto-export"); + } + + /** + * auto-exportの値を取得する. + * + * @return boolean + */ + public static boolean getAutoExport() { + return fileConfig.getBoolean("auto-export"); + } + + /** + * autocollectの値を取得する. + * + * @return boolean + */ + public static boolean getAutoCollect() { + return fileConfig.getBoolean("autocollect"); + } + + /** + * hardrecipeの値を取得する. + * + * @return boolean + */ + public static boolean getHardRecipe() { + return fileConfig.getBoolean("hardrecipe"); + } + + /** + * divide-limitの値を取得する. + * + * @return boolean + */ + public static int getDivideLimit() { + return fileConfig.getInt("divide-limit"); + } + + /** + * max-stack-sizeの値を取得する. + * + * @return boolean + */ + public static int getMaxStackSize() { + return fileConfig.getInt("max-stack-size"); + } + + /** + * no-budの値を取得する. + * + * @return boolean + */ + public static boolean getNoBud() { + return fileConfig.getBoolean("no-bud"); + } + + /** + * falling-block-itemSSの値を取得する. + * + * @return boolean + */ + public static boolean getFallingBlockItemSs() { + return fileConfig.getBoolean("falling-block-itemSS"); + } +} diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index c2d771b..ee4b871 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -64,18 +64,15 @@ public class StorageSignCore extends JavaPlugin implements Listener { StorageSignCore.class); static BannerMeta ominousBannerMeta; public Logger logger; - FileConfiguration config; private boolean _fallingBlockSS; @Override public void onEnable() { - config = this.getConfig(); - config.options().copyDefaults(true); - config.options().setHeader(Arrays.asList("StorageSign Configuration")); - this.saveConfig(); + // ConfigLoader初期化 + ConfigLoader.setup(this); // ロガーの初期設定 - String logLevel = config.getString("log-level"); + String logLevel = ConfigLoader.getLogLevel(); // ログ取得 Logger.register(this, logLevel); logger = Logger.getInstance(this); @@ -92,7 +89,7 @@ public void onEnable() { Material[] sign = {Material.OAK_SIGN, Material.BIRCH_SIGN, Material.SPRUCE_SIGN, Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, Material.WARPED_SIGN, Material.MANGROVE_SIGN, Material.CHERRY_SIGN, Material.BAMBOO_SIGN}; - logger.trace("hardrecipe:" + config.getBoolean("hardrecipe")); + logger.trace("hardrecipe:" + ConfigLoader.getHardRecipe()); for (int i = 0; i < 11; i++) { logger.trace("signRecipi name:" + sign[i]); @@ -103,7 +100,7 @@ public void onEnable() { storageSignRecipe.setIngredient('C', Material.CHEST); storageSignRecipe.setIngredient('S', sign[i]); - if (config.getBoolean("hardrecipe")) { + if (ConfigLoader.getHardRecipe()) { storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); } else { storageSignRecipe.setIngredient('H', Material.CHEST); @@ -115,12 +112,12 @@ public void onEnable() { logger.trace("setEvent"); getServer().getPluginManager().registerEvents(this, this); - logger.trace("no-bud:" + config.getBoolean("no-bud")); - if (config.getBoolean("no-bud")) { + logger.trace("no-bud:" + ConfigLoader.getNoBud()); + if (ConfigLoader.getNoBud()) { logger.trace("no-bud is True."); new SignPhysicsEvent(this, logger); } - _fallingBlockSS = config.getBoolean("falling-block-itemSS"); + _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); logger.debug("★onEnable:End"); } @@ -215,7 +212,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { "storagesign.use")); if (!player.hasPermission("storagesign.use")) { logger.debug("★This User hasn't permission.storagesign.use"); - player.sendMessage(ChatColor.BLACK + config.getString("no-permisson")); + player.sendMessage(ChatColor.BLACK + ConfigLoader.getNoPermission()); event.setCancelled(true); return; } @@ -322,19 +319,17 @@ public void onPlayerInteract(PlayerInteractEvent event) { StorageSign itemSign = new StorageSign(itemMainHand, logger); logger.trace("itemSign:" + itemSign); logger.trace("storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean(\n" - + " \"manual-import\"):" + (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean( - "manual-import"))); + + " \"manual-import\"):" + (storageSign.getContents().isSimilar(itemSign.getContents()) && ConfigLoader.getManualImport())); logger.trace("itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount()\n" + " && config.getBoolean(\"manual-export\")" + (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() - && config.getBoolean("manual-export"))); - if (storageSign.getContents().isSimilar(itemSign.getContents()) && config.getBoolean( - "manual-import")) { + && ConfigLoader.getManualExport())); + if (storageSign.getContents().isSimilar(itemSign.getContents()) && ConfigLoader.getManualImport()) { logger.debug("Sign store Items."); storageSign.addAmount(itemSign.getAmount() * itemSign.getStackSize()); itemSign.setAmount(0); player.getInventory().setItemInMainHand(itemSign.getStorageSign()); } else if (itemSign.isEmpty() && storageSign.getMaterial() == itemSign.getSmat() - && storageSign.getDamage() == 1 && config.getBoolean("manual-import")) { + && storageSign.getDamage() == 1 && ConfigLoader.getManualImport()) { //空看板収納 logger.debug("Empty Sign store."); logger.trace("player.isSneaking()" + player.isSneaking()); @@ -357,7 +352,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { } } } else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() - && config.getBoolean("manual-export")) { + && ConfigLoader.getManualExport()) { //中身分割機能 logger.debug("Export Item to Empty Sign."); itemSign.setMaterial(storageSign.getMaterial()); @@ -365,7 +360,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { itemSign.setEnchant(storageSign.getEnchant()); itemSign.setPotion(storageSign.getPotion()); - int limit = config.getInt("divide-limit"); + int limit = ConfigLoader.getDivideLimit(); logger.trace("limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)" + (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1))); if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { @@ -394,13 +389,13 @@ public void onPlayerInteract(PlayerInteractEvent event) { boolean isMainSimiller = storageSign.isSimilar(itemMainHand); logger.debug("check manual Import."); logger.trace("storageSign.isSimilar(itemMainHand): " + isMainSimiller); - logger.trace("config.getBoolean(\"manual-import\"): " + config.getBoolean("manual-import")); - logger.trace("config.getBoolean(\"manual-export\"): " + config.getBoolean("manual-export")); + logger.trace("config.getBoolean(\"manual-import\"): " + ConfigLoader.getManualImport()); + logger.trace("config.getBoolean(\"manual-export\"): " + ConfigLoader.getManualExport()); if (isMainSimiller) { logger.debug("StorageSign Import."); - logger.trace("!config.getBoolean(\"manual-import\"): " + !config.getBoolean("manual-import")); - if (!config.getBoolean("manual-import")) { + logger.trace("!config.getBoolean(\"manual-import\"): " + !ConfigLoader.getManualImport()); + if (!ConfigLoader.getManualImport()) { logger.debug("★option:manual-import is False!"); return; } @@ -437,7 +432,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { } player.updateInventory(); - } else if (config.getBoolean("manual-export"))/*放出*/ { + } else if (ConfigLoader.getManualExport())/*放出*/ { logger.debug("Export StorageSign Item."); boolean isDye = false; @@ -530,7 +525,7 @@ public void onSignChange(SignChangeEvent event) { sign.update(); } else { logger.debug("This user hasn't Permission.storagesign.create"); - event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.getPlayer().sendMessage(ChatColor.RED + ConfigLoader.getNoPermission()); event.setCancelled(true); } } @@ -550,7 +545,7 @@ public void onBlockBreak(BlockBreakEvent event) { .hasPermission("storagesign.break")); if (!event.getPlayer().hasPermission("storagesign.break")) { logger.debug("★This user hasn't Permission. storagesign.break."); - event.getPlayer().sendMessage(ChatColor.RED + config.getString("no-permisson")); + event.getPlayer().sendMessage(ChatColor.RED + ConfigLoader.getNoPermission()); event.setCancelled(true); return; } @@ -575,7 +570,7 @@ public void onBlockPlace(BlockPlaceEvent event) { logger.trace("!player.hasPermission(\"storagesign.place\"): " + !player.hasPermission("storagesign.place")); if (!player.hasPermission("storagesign.place")) { logger.debug("★This user hasn't Permission. storagesign.place."); - player.sendMessage(ChatColor.RED + config.getString("no-permisson")); + player.sendMessage(ChatColor.RED + ConfigLoader.getNoPermission()); event.setCancelled(true); return; } @@ -639,8 +634,8 @@ public void onItemMove(InventoryMoveItemEvent event) { Sign sign = null; StorageSign storageSign = null; ItemStack item = event.getItem(); - logger.trace("config.getBoolean(\"auto-import\"): " + config.getBoolean("auto-import")); - if (config.getBoolean("auto-import")) { + logger.trace("config.getBoolean(\"auto-import\"): " + ConfigLoader.getAutoImport()); + if (ConfigLoader.getAutoImport()) { logger.debug("auto-import Start"); logger.trace("event.getDestination().getLocation(): " + event.getDestination().getLocation()); logger.trace("event.getDestination().getHolder(): " + event.getDestination().getHolder()); @@ -727,8 +722,8 @@ public void onItemMove(InventoryMoveItemEvent event) { } //搬出用にリセット - logger.debug("config.getBoolean(\"auto-export\"): " + config.getBoolean("auto-export")); - if (config.getBoolean("auto-export")) { + logger.debug("config.getBoolean(\"auto-export\"): " + ConfigLoader.getAutoExport()); + if (ConfigLoader.getAutoExport()) { blockInventory[0] = null; blockInventory[1] = null; flag = false; @@ -1013,7 +1008,7 @@ public void onPlayerCraft(CraftItemEvent event) { .hasPermission("storagesign.craft")) { logger.debug("This user hasn't Permission. storagesign.craft."); ((CommandSender) event.getWhoClicked()).sendMessage( - ChatColor.RED + config.getString("no-permisson")); + ChatColor.RED + ConfigLoader.getNoPermission()); event.setCancelled(true); } logger.debug("★onPlayerCraft:End"); @@ -1023,8 +1018,8 @@ public void onPlayerCraft(CraftItemEvent event) { public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに投げ込まれたとき logger.debug("★onInventoryPickup:Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); - logger.trace("!config.getBoolean(\"auto-import\"): " + !config.getBoolean("auto-import")); - if (event.isCancelled() || !config.getBoolean("auto-import")) { + logger.trace("!config.getBoolean(\"auto-import\"): " + !ConfigLoader.getAutoImport()); + if (event.isCancelled() || !ConfigLoader.getAutoImport()) { logger.debug("★eventCancelled or not set permission.auto-import."); return; } @@ -1095,8 +1090,8 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { } logger.trace("event.getEntityType(): " + event.getEntityType()); - logger.trace("config.getBoolean(\"autocollect\"): " + config.getBoolean("autocollect")); - if (event.getEntityType() == EntityType.PLAYER && config.getBoolean("autocollect")) { + logger.trace("config.getBoolean(\"autocollect\"): " + ConfigLoader.getAutoCollect()); + if (event.getEntityType() == EntityType.PLAYER && ConfigLoader.getAutoCollect()) { Player player = (Player) event.getEntity(); PlayerInventory playerInv = player.getInventory(); ItemStack item = event.getItem().getItemStack(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6ecde02..060bfaa 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,5 +11,6 @@ autocollect: true hardrecipe: false divide-limit: 345600 +max-stack-size: 32 no-bud: false falling-block-itemSS: false From 8e0d4d48a80b23a96436cd567325431661a49d69 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 31 May 2024 23:08:42 +0900 Subject: [PATCH 56/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20SS=E5=9F=BA=E7=A4=8E=E6=94=B9=E4=BF=AE=E5=89=8D?= =?UTF-8?q?=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=83=BB=E8=A6=81?= =?UTF-8?q?=E3=82=89=E3=81=AA=E3=81=84=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 106 ++++++------------ 1 file changed, 35 insertions(+), 71 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 2491684..99f7a4a 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -28,53 +28,56 @@ */ public class StorageSign { - private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( - StorageSign.class); - + /** + * block_entity_dataタグが付いて、単純な比較では収納ができないアイテム一覧. + */ private static final Set block_entity_data_Materials = Collections.unmodifiableSet( EnumSet.of(BEE_NEST, BEEHIVE)); + /** - * + * 看板のアイテム素材. */ protected Material smat; + /** - * + * 看板に収納されるアイテム素材. */ protected Material mat; + /** - * + * 看板に設定されるダメージ値. */ protected short damage; /** - * + * 看板に収納されているエンチャント本のエンチャント情報. */ protected Enchantment ench; /** - * + * 看板に収納されているポーションの種類. */ protected PotionType pot; + /** - * + * 看板に収納されているアイテム数. */ protected int amount; + /** - * + * SSのアイテムスタック数. */ protected int stack; /** - * + * 看板の中身が空か. */ protected boolean isEmpty; /** - * + * ログ出力用ロガー. */ private Logger _logger; - // StorageSignだと確認してから使っちくりー - /** - * + * ItemStackに設定されている看板の情報からStorageSignを生成する. */ public StorageSign(ItemStack item, Logger logger) { this._logger = logger; @@ -125,13 +128,8 @@ public StorageSign(ItemStack item, Logger logger) { logger.debug("StorageSign:end"); } - // Sto(ry - /* - * public StorageSign(Sign sign) { this(sign,Material.OAK_SIGN); } - */ - /** - * + * ブロックとして存在している看板の情報からStorageSignを生成する. */ public StorageSign(Sign sign, Material signmat, Logger logger) { this._logger = logger; @@ -469,16 +467,6 @@ protected String getShortName() { } else if (this.mat == BAMBOO_SIGN && this.damage == 1) { _logger.debug("BambooStorageSign"); return "BambooStorageSign"; - - // else if (mat == Material.LEGACY_STAINED_GLASS_PANE) return damage == 0 ? "STAINGLASS_PANE" - // : "STAINGLASS_P:" + damage; - // else if (mat == Material.LEGACY_REDSTONE_COMPARATOR) return "RS_COMPARATOR"; - // else if (mat == Material.LEGACY_REDSTONE_TORCH_ON) return "REDSTONE_TORCH"; - // else if (mat == Material.LEGACY_HUGE_MUSHROOM_1) return damage == 0 ? "BROWN_MUSH_BLOC" : - // "BROWN_MUSH_B:" + damage; - // else if (mat == Material.LEGACY_HUGE_MUSHROOM_2) return damage == 0 ? "RED_MUSH_BLOCK" : - // "RED_MUSH_BLO:" + damage; - } else if (this.mat == ENCHANTED_BOOK) { _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; @@ -755,10 +743,6 @@ public boolean isSimilar(ItemStack item) { _logger.debug(" Item isn't Similar"); return false; - } else if (isShulker(this.mat)) { - _logger.debug(" Shulker"); - // 後回し - } else if (this.mat == POTION || this.mat == SPLASH_POTION || this.mat == LINGERING_POTION) { _logger.debug(" This mat is PotionSeries."); @@ -791,9 +775,6 @@ public boolean isSimilar(ItemStack item) { _logger.trace("cSign.isEmpty() == iSign.isEmpty(): " + (cSign.isEmpty() == iSign.isEmpty())); return cSign.isEmpty() == iSign.isEmpty(); } -// } else if(isSignPost) { -// // StorageSignじゃなくて、ただの看板の場合はfalse. -// return false; } // それ以外のItemはisSimilarで判定 @@ -922,40 +903,8 @@ public Material getSmat() { } /** - * マテリアルがシュルカーボックスかを検査します. - * - * @return true:シュルカーボックスにだよ/false:シュルカーボックスじゃないよ + * 渡されたItemStackがStorageSignか判断. */ - private boolean isShulker(Material mat) { - _logger.debug("isShulker:start"); - switch (mat) { - case SHULKER_BOX: - case WHITE_SHULKER_BOX: - case ORANGE_SHULKER_BOX: - case MAGENTA_SHULKER_BOX: - case LIGHT_BLUE_SHULKER_BOX: - case YELLOW_SHULKER_BOX: - case LIME_SHULKER_BOX: - case PINK_SHULKER_BOX: - case GRAY_SHULKER_BOX: - case LIGHT_GRAY_SHULKER_BOX: - case CYAN_SHULKER_BOX: - case PURPLE_SHULKER_BOX: - case BLUE_SHULKER_BOX: - case BROWN_SHULKER_BOX: - case GREEN_SHULKER_BOX: - case RED_SHULKER_BOX: - case BLACK_SHULKER_BOX: - _logger.debug("Item is Shulker"); - return true; - - default: - - } - _logger.debug("Item isn't Shulker"); - return false; - } - public static boolean isStorageSign(ItemStack item, Logger logger) { logger.debug(" isStorageSign(ItemStack):Start"); if (item == null) { @@ -986,6 +935,9 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { return false; } + /** + * 渡されたBlockがStorageSignか判断. + */ public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" isStorageSign(Block):Start"); @@ -1010,17 +962,26 @@ public static boolean isStorageSign(Block block, Logger logger) { return false; } + /** + * 渡されたBlockが看板か判断. + */ public static boolean isSignPost(Block block, Logger logger) { logger.debug(" isSignPost(Block)"); Material mat = block.getType(); return isSignPost(mat, logger); } + /** + * 渡されたBlockが壁掛け看板か判断. + */ public static boolean isWallSign(Block block, Logger logger) { Material mat = block.getType(); return isWallSign(mat, logger); } + /** + * 渡されたMaterialが看板か判断. + */ //看板も8種類になったし、mat版おいとく public static boolean isSignPost(Material mat, Logger logger) { logger.debug(" isSignPost(Material): Start"); @@ -1046,6 +1007,9 @@ public static boolean isSignPost(Material mat, Logger logger) { return false; } + /** + * 渡されたMaterialが壁掛け看板か判断. + */ public static boolean isWallSign(Material mat, Logger logger) { logger.debug(" isWallSign(Material): Start"); From f723a9ad75753c62d00de35035c3743fc61fd9bc Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 2 Jun 2024 19:00:07 +0900 Subject: [PATCH 57/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20StorageSign=E3=81=AEMax=E3=82=B9=E3=82=BF=E3=83=83?= =?UTF-8?q?=E3=82=AF=E6=95=B0=E8=A8=AD=E5=AE=9A=E6=A9=9F=E8=83=BD=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20=E3=82=B9=E3=83=8B=E3=83=BC=E3=82=AF=E3=81=A7SS?= =?UTF-8?q?=E5=88=86=E5=89=B2=E3=82=92=E5=AE=9F=E8=A1=8C=E3=81=97=E3=81=9F?= =?UTF-8?q?=E9=9A=9B=E3=81=AB=E4=B8=8A=E9=99=90=E5=80=A4=E3=82=92=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/ConfigLoader.java | 9 +++++++++ src/main/java/wacky/storagesign/StorageSign.java | 4 +++- src/main/java/wacky/storagesign/StorageSignCore.java | 7 ++++++- src/main/resources/config.yml | 3 ++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/wacky/storagesign/ConfigLoader.java b/src/main/java/wacky/storagesign/ConfigLoader.java index 2b8fcb9..aa36839 100644 --- a/src/main/java/wacky/storagesign/ConfigLoader.java +++ b/src/main/java/wacky/storagesign/ConfigLoader.java @@ -106,6 +106,15 @@ public static int getDivideLimit() { return fileConfig.getInt("divide-limit"); } + /** + * sneak-divide-limitの値を取得する. + * + * @return boolean + */ + public static int getSneakDivideLimit() { + return fileConfig.getInt("sneak-divide-limit"); + } + /** * max-stack-sizeの値を取得する. * diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 99f7a4a..d0d6485 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -246,6 +246,7 @@ public static ItemStack emptySign(Material smat) { meta.setDisplayName("StorageSign"); list.add("Empty"); meta.setLore(list); + meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); emptySign.setItemMeta(meta); return emptySign; @@ -511,7 +512,7 @@ protected String getShortName() { * @return ItemStack 空のStorageSign */ public ItemStack getStorageSign() { - _logger.debug("getStorageSign:stert"); + _logger.debug("getStorageSign:start"); ItemStack item = new ItemStack(this.smat, this.stack); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("StorageSign"); @@ -539,6 +540,7 @@ public ItemStack getStorageSign() { } meta.setLore(list); + meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); item.setItemMeta(meta); _logger.debug("getStorageSign:end"); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index ee4b871..0d26bc4 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -360,7 +360,12 @@ public void onPlayerInteract(PlayerInteractEvent event) { itemSign.setEnchant(storageSign.getEnchant()); itemSign.setPotion(storageSign.getPotion()); - int limit = ConfigLoader.getDivideLimit(); + int limit; + if (player.isSneaking()){ + limit = ConfigLoader.getSneakDivideLimit(); + } else { + limit = ConfigLoader.getDivideLimit(); + } logger.trace("limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)" + (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1))); if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 060bfaa..118ade0 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,6 +11,7 @@ autocollect: true hardrecipe: false divide-limit: 345600 -max-stack-size: 32 +max-stack-size: 16 +sneak-divide-limit: 34560 no-bud: false falling-block-itemSS: false From 9a91ec403a848bc7847d6d840fb9e524161b7e2c Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 2 Jun 2024 20:23:38 +0900 Subject: [PATCH 58/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20SS=E3=81=AE=E5=9F=BA=E7=A4=8E=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E6=94=B9=E4=BF=AE=EF=BC=88=E4=BB=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 372 ++++++------------ 1 file changed, 126 insertions(+), 246 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index d0d6485..f17ad3f 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -4,6 +4,8 @@ import java.util.Collections; import java.util.EnumSet; import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.Set; import org.apache.logging.log4j.LogManager; import org.bukkit.Material; @@ -21,12 +23,14 @@ import org.bukkit.util.NumberConversions; import com.github.teruteru128.logger.Logger; +import static java.util.Map.entry; import static org.bukkit.Material.*; /** * StrageSignの実体クラスです. */ public class StorageSign { + private static final String storage_sign_name = "StorageSign"; /** * block_entity_dataタグが付いて、単純な比較では収納ができないアイテム一覧. @@ -34,6 +38,94 @@ public class StorageSign { private static final Set block_entity_data_Materials = Collections.unmodifiableSet( EnumSet.of(BEE_NEST, BEEHIVE)); + /** + * SSの中でポーションと扱われるアイテム一覧. + * ポーション種類が追加されたら追加する. + */ + private static final Set potion_materials = Collections.unmodifiableSet(EnumSet.of(POTION, SPLASH_POTION, LINGERING_POTION)); + + /** + * 看板と扱われるアイテム一覧. + * 看板種類が追加されたら追加する. + */ + private static final Set sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); + + /** + * 看板と扱われるアイテム一覧. + * 看板種類が追加されたら追加する. + */ + private static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); + + /** + * 壁掛け看板と通常看板の変換一覧. + * 看板種類が追加されたら追加する. + */ + private static final Map wall_normal_sign_maps = Map.ofEntries( + entry(OAK_WALL_SIGN, OAK_SIGN), + entry(BIRCH_WALL_SIGN, BIRCH_SIGN), + entry(SPRUCE_WALL_SIGN, SPRUCE_SIGN), + entry(JUNGLE_WALL_SIGN, JUNGLE_SIGN), + entry(ACACIA_WALL_SIGN, ACACIA_SIGN), + entry(DARK_OAK_WALL_SIGN, DARK_OAK_SIGN), + entry(CRIMSON_WALL_SIGN, CRIMSON_SIGN), + entry(WARPED_WALL_SIGN, WARPED_SIGN), + entry(MANGROVE_WALL_SIGN, MANGROVE_SIGN), + entry(CHERRY_WALL_SIGN, CHERRY_SIGN), + entry(BAMBOO_WALL_SIGN, BAMBOO_SIGN) + ); + + /** + * damage値1をつける特殊なアイテム名とアイテム用マテリアルの変換一覧. + * 看板種類が追加されたら追加する. + */ + private static final Map mat_string_special_material_maps = Map.ofEntries( + entry("EmptySign", OAK_SIGN), + entry("OakStorageSign", OAK_SIGN), + entry("SpruceStorageSign", SPRUCE_SIGN), + entry("BirchStorageSign", BIRCH_SIGN), + entry("JungleStorageSign", JUNGLE_SIGN), + entry("AcaciaStorageSign", ACACIA_SIGN), + entry("DarkOakStorageSign", DARK_OAK_SIGN), + entry("CrimsonStorageSign", CRIMSON_SIGN), + entry("WarpedStorageSign", WARPED_SIGN), + entry("MangroveStorageSign", MANGROVE_SIGN), + entry("CherryStorageSign", CHERRY_SIGN), + entry("BambooStorageSign", BAMBOO_SIGN) + ); + + /** + * 特殊なアイテム名とアイテム用マテリアルの変換一覧. + * 特殊処理をするアイテムが追加されたら追加する. + */ + private static final Map mat_string_material_maps = Map.ofEntries( + entry("SIGN", OAK_SIGN), + entry("ROSE_RED", RED_DYE), + entry("DANDELION_YELLOW", YELLOW_DYE), + entry("CACTUS_GREEN", GREEN_DYE), + entry("ENCHBOOK", ENCHANTED_BOOK), + entry("SPOTION", SPLASH_POTION), + entry("LPOTION", LINGERING_POTION) + ); + + /** + * damage値1をつける特殊なアイテム名とアイテム用マテリアルの変換一覧. + * 看板種類が追加されたら追加する. + */ + private static final Map special_material_mat_string_maps = Map.ofEntries( + entry(OAK_SIGN, "EmptySign"), + entry(OAK_SIGN, "OakStorageSign"), + entry(SPRUCE_SIGN, "SpruceStorageSign"), + entry(BIRCH_SIGN, "BirchStorageSign"), + entry(JUNGLE_SIGN, "JungleStorageSign"), + entry(ACACIA_SIGN, "AcaciaStorageSign"), + entry(DARK_OAK_SIGN,"DarkOakStorageSign"), + entry(CRIMSON_SIGN, "CrimsonStorageSign"), + entry(WARPED_SIGN, "WarpedStorageSign"), + entry(MANGROVE_SIGN, "MangroveStorageSign"), + entry(CHERRY_SIGN, "CherryStorageSign"), + entry(BAMBOO_SIGN, "BambooStorageSign") + ); + /** * 看板のアイテム素材. */ @@ -99,8 +191,7 @@ public StorageSign(ItemStack item, Logger logger) { this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { logger.debug("StorageSign have any Potion"); // PotionInfo pi = new PotionInfo(mat, str[0].split(":")); String[] potionStr = str[0].split(":"); @@ -145,8 +236,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.damage = ei.getDamage(); this.ench = ei.getEnchantType(); - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { logger.debug("any POTION"); // PotionInfo pi = new PotionInfo(mat, line2); PotionInfo pi = new PotionInfo(this.mat, line2[0], line2[1], line2[2], logger); @@ -170,50 +260,9 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.stack = 1; // 壁掛け看板のチェック - if (signmat == OAK_WALL_SIGN) { - logger.debug("signmat is OAK_WALL_SIGN"); - this.smat = OAK_SIGN; - - } else if (signmat == BIRCH_WALL_SIGN) { - logger.debug("signmat is BIRCH_WALL_SIGN"); - this.smat = BIRCH_SIGN; - - } else if (signmat == SPRUCE_WALL_SIGN) { - logger.debug("signmat is SPRUCE_WALL_SIGN"); - this.smat = SPRUCE_SIGN; - - } else if (signmat == JUNGLE_WALL_SIGN) { - logger.debug("signmat is JUNGLE_WALL_SIGN"); - this.smat = JUNGLE_SIGN; - - } else if (signmat == ACACIA_WALL_SIGN) { - logger.debug("signmat is ACACIA_WALL_SIGN"); - this.smat = ACACIA_SIGN; - - } else if (signmat == DARK_OAK_WALL_SIGN) { - logger.debug("signmat is DARK_OAK_WALL_SIGN"); - this.smat = DARK_OAK_SIGN; - - } else if (signmat == CRIMSON_WALL_SIGN) { - logger.debug("signmat is CRIMSON_WALL_SIGN"); - this.smat = CRIMSON_SIGN; - - } else if (signmat == WARPED_WALL_SIGN) { - logger.debug("signmat is WARPED_WALL_SIGN"); - this.smat = WARPED_SIGN; - - } else if (signmat == MANGROVE_WALL_SIGN) { - logger.debug("signmat is MANGROVE_WALL_SIGN"); - this.smat = MANGROVE_SIGN; - - } else if (signmat == CHERRY_WALL_SIGN) { - logger.debug("signmat is CHERRY_WALL_SIGN"); - this.smat = CHERRY_SIGN; - - } else if (signmat == BAMBOO_WALL_SIGN) { - logger.debug("signmat is BAMBOO_WALL_SIGN"); - this.smat = BAMBOO_SIGN; - + if (wall_normal_sign_maps.containsKey(signmat)) { + logger.debug("signmat is " + wall_normal_sign_maps.get(signmat)); + this.smat = wall_normal_sign_maps.get(signmat); } else { logger.debug("Material isn't WALL_SIGN"); this.smat = signmat; @@ -243,7 +292,7 @@ public static ItemStack emptySign(Material smat) { ItemMeta meta = emptySign.getItemMeta(); List list = new ArrayList<>(); - meta.setDisplayName("StorageSign"); + meta.setDisplayName(storage_sign_name); list.add("Empty"); meta.setLore(list); meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); @@ -260,72 +309,18 @@ public static ItemStack emptySign(Material smat) { */ protected Material getMaterial(String str) { _logger.debug("getMaterial:start"); - // if (str.matches("EmptySign")) { - // return Material.END_PORTAL; - // } - // if (str.startsWith("REDSTONE_TORCH")) return Material.REDSTONE_TORCH; - // if (str.startsWith("RS_COMPARATOR")) return Material.COMPARATOR; - // if (str.startsWith("STAINGLASS_P")) return Material.LEGACY_STAINED_GLASS_PANE; - // if (str.startsWith("BROWN_MUSH_B")) return Material.BROWN_MUSHROOM_BLOCK; - // if (str.startsWith("RED_MUSH_BLO")) return Material.RED_MUSHROOM_BLOCK; if (str.matches("")) { _logger.debug("Material is AIR"); return AIR; - } else if (str.matches("EmptySign") || str.matches("OakStorageSign")) { - _logger.debug("Material is OakStorageSign"); - this.damage = 1; - return OAK_SIGN; - - } else if (str.matches("SpruceStorageSign")) { - _logger.debug("Material is SpruceStorageSign"); - this.damage = 1; - return SPRUCE_SIGN; - - } else if (str.matches("BirchStorageSign")) { - _logger.debug("Material is BirchStorageSign"); + } else if (mat_string_special_material_maps.containsKey(str)) { + _logger.debug("Material is " + mat_string_special_material_maps.get(str)); this.damage = 1; - return BIRCH_SIGN; - - } else if (str.matches("JungleStorageSign")) { - _logger.debug("Material is JungleStorageSign"); - this.damage = 1; - return JUNGLE_SIGN; - - } else if (str.matches("AcaciaStorageSign")) { - _logger.debug("Material is AcaciaStorageSign"); - this.damage = 1; - return ACACIA_SIGN; - - } else if (str.matches("DarkOakStorageSign")) { - _logger.debug("Material is DarkOakStorageSign"); + return mat_string_special_material_maps.get(str); + } else if (mat_string_material_maps.containsKey(str)) { + _logger.debug("Material is " + mat_string_material_maps.get(str)); this.damage = 1; - return DARK_OAK_SIGN; - - } else if (str.matches("CrimsonStorageSign")) { - _logger.debug("Material is CrimsonStorageSign"); - this.damage = 1; - return CRIMSON_SIGN; - - } else if (str.matches("WarpedStorageSign")) { - _logger.debug("Material is WarpedStorageSign"); - this.damage = 1; - return WARPED_SIGN; - - } else if (str.matches("MangroveStorageSign")) { - _logger.debug("Material is MangroveStorageSign"); - this.damage = 1; - return MANGROVE_SIGN; - - } else if (str.matches("CherryStorageSign")) { - _logger.debug("Material is CherryStorageSign"); - this.damage = 1; - return CHERRY_SIGN; - - } else if (str.matches("BambooStorageSign")) { - _logger.debug("Material is BambooStorageSign"); - this.damage = 1; - return BAMBOO_SIGN; + return mat_string_material_maps.get(str); } if (str.matches("HorseEgg")) { _logger.debug("Material is HorseEgg"); @@ -333,40 +328,10 @@ protected Material getMaterial(String str) { return END_PORTAL; // ガスト卵でよくね? } - // 1.13→1.14用 - if (str.startsWith("SIGN")) { - _logger.debug("Material is SIGN"); - return OAK_SIGN; - } - if (str.startsWith("ROSE_RED")) { - _logger.debug("Material is ROSE_RED"); - return RED_DYE; - } - if (str.startsWith("DANDELION_YELLOW")) { - _logger.debug("Material is DANDELION_YELLOW"); - return YELLOW_DYE; - } - if (str.startsWith("CACTUS_GREEN")) { - _logger.debug("Material is CACTUS_GREEN"); - return GREEN_DYE; - } - // 省略用 - if (str.startsWith("ENCHBOOK")) { - _logger.debug("Material is ENCHBOOK"); - return ENCHANTED_BOOK; - } - if (str.startsWith("SPOTION")) { - _logger.debug("Material is SPOTION"); - return SPLASH_POTION; - } - if (str.startsWith("LPOTION")) { - _logger.debug("Material is LPOTION"); - return LINGERING_POTION; - } Material mat = matchMaterial(str); - if (mat == null) { + if (Objects.isNull(mat)) { _logger.debug("Material is null"); // 後ろ切れる程度なら対応可 for (Material m : values()) { @@ -379,7 +344,6 @@ protected Material getMaterial(String str) { // nullなら空. _logger.debug("Material isn't bifurcation"); return mat; - } /** @@ -424,56 +388,15 @@ protected String getShortName() { _logger.debug("HorseEgg"); return "HorseEgg"; } - - } else if (this.mat == OAK_SIGN && this.damage == 1) { - _logger.debug("OakStorageSign"); - return "OakStorageSign"; - - } else if (this.mat == SPRUCE_SIGN && this.damage == 1) { - _logger.debug("SpruceStorageSign"); - return "SpruceStorageSign"; - - } else if (this.mat == BIRCH_SIGN && this.damage == 1) { - _logger.debug("BirchStorageSign"); - return "BirchStorageSign"; - - } else if (this.mat == JUNGLE_SIGN && this.damage == 1) { - _logger.debug("JungleStorageSign"); - return "JungleStorageSign"; - - } else if (this.mat == ACACIA_SIGN && this.damage == 1) { - _logger.debug("AcaciaStorageSign"); - return "AcaciaStorageSign"; - - } else if (this.mat == DARK_OAK_SIGN && this.damage == 1) { - _logger.debug("DarkOakStorageSign"); - return "DarkOakStorageSign"; - - } else if (this.mat == CRIMSON_SIGN && this.damage == 1) { - _logger.debug("CrimsonStorageSign"); - return "CrimsonStorageSign"; - - } else if (this.mat == WARPED_SIGN && this.damage == 1) { - _logger.debug("WarpedStorageSign"); - return "WarpedStorageSign"; - - } else if (this.mat == MANGROVE_SIGN && this.damage == 1) { - _logger.debug("MangroveStorageSign"); - return "MangroveStorageSign"; - - } else if (this.mat == CHERRY_SIGN && this.damage == 1) { - _logger.debug("CherryStorageSign"); - return "CherryStorageSign"; - - } else if (this.mat == BAMBOO_SIGN && this.damage == 1) { - _logger.debug("BambooStorageSign"); - return "BambooStorageSign"; - } else if (this.mat == ENCHANTED_BOOK) { + // SS看板に当てはまるものなら、一覧から出力する. + } else if (special_material_mat_string_maps.containsKey(this.mat) && this.damage == 1) { + _logger.debug(special_material_mat_string_maps.get(this.mat)); + return special_material_mat_string_maps.get(this.mat); + } else if (ENCHANTED_BOOK.equals(this.mat)) { _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { _logger.debug("any POTION"); return PotionInfo.getSignData(this.mat, pot, this.damage); } @@ -515,7 +438,7 @@ public ItemStack getStorageSign() { _logger.debug("getStorageSign:start"); ItemStack item = new ItemStack(this.smat, this.stack); ItemMeta meta = item.getItemMeta(); - meta.setDisplayName("StorageSign"); + meta.setDisplayName(storage_sign_name); List list = new ArrayList<>(); // IDとMaterial名が混ざってたり、エンチャ本対応したり @@ -523,13 +446,12 @@ public ItemStack getStorageSign() { _logger.debug("Empty"); list.add("Empty"); - } else if (this.mat == ENCHANTED_BOOK) { + } else if (ENCHANTED_BOOK.equals(this.mat)) { _logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " + this.amount); - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { _logger.debug("any POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); @@ -591,7 +513,7 @@ public String[] getSigntexts() { _logger.debug("getSigntexts:start"); String[] sign = new String[4]; - sign[0] = "StorageSign"; + sign[0] = storage_sign_name; sign[1] = getShortName(); sign[2] = String.valueOf(this.amount); sign[3] = String.valueOf(this.amount / 3456) + "LC " + String.valueOf(this.amount % 3456 / 64) @@ -633,12 +555,7 @@ public ItemStack getContents() { // ダメージ値0にする return new ItemStack(this.mat, 1); - } else if (this.mat == OAK_SIGN || this.mat == SPRUCE_SIGN - || this.mat == BIRCH_SIGN || this.mat == JUNGLE_SIGN - || this.mat == ACACIA_SIGN || this.mat == DARK_OAK_SIGN - || this.mat == CRIMSON_SIGN || this.mat == WARPED_SIGN - || this.mat == MANGROVE_SIGN || this.mat == CHERRY_SIGN - || this.mat == BAMBOO_SIGN) { + } else if (sign_materials.contains(this.mat)) { _logger.debug("any SIGN"); if (this.damage == 0) { @@ -660,8 +577,7 @@ public ItemStack getContents() { return item; - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { _logger.debug("any POTION"); ItemStack item = new ItemStack(this.mat, 1); @@ -745,8 +661,7 @@ public boolean isSimilar(ItemStack item) { _logger.debug(" Item isn't Similar"); return false; - } else if (this.mat == POTION || this.mat == SPLASH_POTION - || this.mat == LINGERING_POTION) { + } else if (potion_materials.contains(this.mat)) { _logger.debug(" This mat is PotionSeries."); _logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); @@ -925,8 +840,8 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { } logger.trace( " !item.getItemMeta().getDisplayName().matches(\"StorageSign\"): " + !item.getItemMeta() - .getDisplayName().matches("StorageSign")); - if (!item.getItemMeta().getDisplayName().matches("StorageSign")) { + .getDisplayName().matches(storage_sign_name)); + if (!item.getItemMeta().getDisplayName().matches(storage_sign_name)) { logger.debug(" itemMetaName hasn't StorageSign."); return false; } @@ -953,8 +868,8 @@ public static boolean isStorageSign(Block block, Logger logger) { Sign sign = (Sign) block.getState(); logger.trace(" sign.getSide(Side.FRONT).getLine(0).matches(\"StorageSign\"): " + sign.getSide( - Side.FRONT).getLine(0).matches("StorageSign")); - if (sign.getSide(Side.FRONT).getLine(0).matches("StorageSign")) { + Side.FRONT).getLine(0).matches(storage_sign_name)); + if (sign.getSide(Side.FRONT).getLine(0).matches(storage_sign_name)) { logger.debug(" This Sign is StorageSign."); return true; } @@ -987,26 +902,9 @@ public static boolean isWallSign(Block block, Logger logger) { //看板も8種類になったし、mat版おいとく public static boolean isSignPost(Material mat, Logger logger) { logger.debug(" isSignPost(Material): Start"); - logger.trace(" mat: " + mat); - switch (mat) { - case OAK_SIGN: - case BIRCH_SIGN: - case SPRUCE_SIGN: - case JUNGLE_SIGN: - case ACACIA_SIGN: - case DARK_OAK_SIGN: - case CRIMSON_SIGN: - case WARPED_SIGN: - case MANGROVE_SIGN: - case CHERRY_SIGN: - case BAMBOO_SIGN: - logger.debug(" this Material is Sign."); - return true; - default: - } - logger.debug(" this Material isn't Sign."); - return false; + logger.trace(" sign_materials.contains(mat): " + sign_materials.contains(mat)); + return sign_materials.contains(mat); } /** @@ -1014,26 +912,8 @@ public static boolean isSignPost(Material mat, Logger logger) { */ public static boolean isWallSign(Material mat, Logger logger) { logger.debug(" isWallSign(Material): Start"); - logger.trace(" mat: " + mat); - switch (mat) { - case OAK_WALL_SIGN: - case BIRCH_WALL_SIGN: - case SPRUCE_WALL_SIGN: - case JUNGLE_WALL_SIGN: - case ACACIA_WALL_SIGN: - case DARK_OAK_WALL_SIGN: - case CRIMSON_WALL_SIGN: - case WARPED_WALL_SIGN: - case MANGROVE_WALL_SIGN: - case CHERRY_WALL_SIGN: - case BAMBOO_WALL_SIGN: - logger.debug(" this Material is WallSign."); - return true; - default: - } - logger.debug(" this Material isn't WallSign."); - return false; + logger.trace(" wall_sign_materials.contains(mat): " + wall_sign_materials.contains(mat)); + return wall_sign_materials.contains(mat); } - } From 194727e35e75cee6ba3b7f69591ee3a0a5ebada4 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 2 Jun 2024 21:11:40 +0900 Subject: [PATCH 59/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20SS=E3=81=AE=E5=9F=BA=E7=A4=8E=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E6=94=B9=E4=BF=AE=EF=BC=88=E4=BB=AE=EF=BC=89=20isSignPost,isWa?= =?UTF-8?q?llSign=E3=82=92Set=E3=81=AE=E5=80=A4=E3=81=8B=E3=82=89=E6=A4=9C?= =?UTF-8?q?=E7=B4=A2=E3=81=97=E3=81=A6=E3=81=8F=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 107 +++++++----------- .../wacky/storagesign/StorageSignCore.java | 16 +-- 2 files changed, 52 insertions(+), 71 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index f17ad3f..82a3639 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -48,13 +48,13 @@ public class StorageSign { * 看板と扱われるアイテム一覧. * 看板種類が追加されたら追加する. */ - private static final Set sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); + public static final Set sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); /** * 看板と扱われるアイテム一覧. * 看板種類が追加されたら追加する. */ - private static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); + public static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); /** * 壁掛け看板と通常看板の変換一覧. @@ -281,6 +281,31 @@ public static ItemStack emptySign() { return emptySign(OAK_SIGN); } + /** + * 引数に渡された情報を基にStorageSignを作成して、ItemStackとして取得します. + * + * @param type Material + * @param amount Integer + * @param list List + * @return ItemStack StorageSign + */ + public static ItemStack createStorageSign(Material type, Integer amount, List list){ + ItemStack sign; + if(Objects.isNull(amount)) { + sign = new ItemStack(type); + } else { + sign = new ItemStack(type, amount); + } + + ItemMeta meta = sign.getItemMeta(); + + meta.setDisplayName(storage_sign_name); + meta.setLore(list); + meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); + sign.setItemMeta(meta); + + return sign; + } /** * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. * @@ -288,17 +313,20 @@ public static ItemStack emptySign() { * @return ItemStack 空のStorageSign */ public static ItemStack emptySign(Material smat) { - ItemStack emptySign = new ItemStack(smat); - ItemMeta meta = emptySign.getItemMeta(); - List list = new ArrayList<>(); + return emptySign(smat, null); + } - meta.setDisplayName(storage_sign_name); + /** + * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. + * + * @param smat Material + * @param amount Integer + * @return ItemStack 空のStorageSign + */ + public static ItemStack emptySign(Material smat, Integer amount) { + List list = new ArrayList<>(); list.add("Empty"); - meta.setLore(list); - meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); - emptySign.setItemMeta(meta); - - return emptySign; + return createStorageSign(smat, amount, list); } /** @@ -436,15 +464,12 @@ protected String getShortName() { */ public ItemStack getStorageSign() { _logger.debug("getStorageSign:start"); - ItemStack item = new ItemStack(this.smat, this.stack); - ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(storage_sign_name); List list = new ArrayList<>(); // IDとMaterial名が混ざってたり、エンチャ本対応したり if (this.isEmpty) { _logger.debug("Empty"); - list.add("Empty"); + return emptySign(this.smat, this.stack); } else if (ENCHANTED_BOOK.equals(this.mat)) { _logger.debug("ENCHANTED_BOOK"); @@ -460,13 +485,8 @@ public ItemStack getStorageSign() { list.add(getShortName() + " " + this.amount); } - - meta.setLore(list); - meta.setMaxStackSize(ConfigLoader.getMaxStackSize()); - item.setItemMeta(meta); - _logger.debug("getStorageSign:end"); - return item; + return createStorageSign(this.smat, this.stack, list); } /** @@ -682,7 +702,6 @@ public boolean isSimilar(ItemStack item) { ItemStack contents = getContents(); boolean isStorageSign = isStorageSign(item, _logger); boolean contentIsStorageSign = isStorageSign(contents, _logger); - boolean isSignPost = isSignPost(item.getType(), _logger); _logger.trace("isStorageSign: " + isStorageSign); _logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); if(isStorageSign && contentIsStorageSign){ @@ -829,7 +848,7 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { return false; } - boolean isSignPost = isSignPost(item.getType(), logger); + boolean isSignPost = sign_materials.contains(item.getType()); logger.trace(" isSignPost:" +isSignPost); if (isSignPost) { @@ -858,8 +877,8 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" isStorageSign(Block):Start"); - boolean isSignPost = isSignPost(block.getType(), logger); - boolean isWallSign = isWallSign(block.getType(), logger); + boolean isSignPost = sign_materials.contains(block.getType()); + boolean isWallSign = wall_sign_materials.contains(block.getType()); logger.trace(" block.getType(): " + block.getType()); logger.trace(" isSignPost(block.getType()): " + isSignPost); logger.trace(" isWallSign(block.getType()) :" + isWallSign); @@ -878,42 +897,4 @@ public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" This Block isn't StorageSign."); return false; } - - /** - * 渡されたBlockが看板か判断. - */ - public static boolean isSignPost(Block block, Logger logger) { - logger.debug(" isSignPost(Block)"); - Material mat = block.getType(); - return isSignPost(mat, logger); - } - - /** - * 渡されたBlockが壁掛け看板か判断. - */ - public static boolean isWallSign(Block block, Logger logger) { - Material mat = block.getType(); - return isWallSign(mat, logger); - } - - /** - * 渡されたMaterialが看板か判断. - */ - //看板も8種類になったし、mat版おいとく - public static boolean isSignPost(Material mat, Logger logger) { - logger.debug(" isSignPost(Material): Start"); - logger.trace(" mat: " + mat); - logger.trace(" sign_materials.contains(mat): " + sign_materials.contains(mat)); - return sign_materials.contains(mat); - } - - /** - * 渡されたMaterialが壁掛け看板か判断. - */ - public static boolean isWallSign(Material mat, Logger logger) { - logger.debug(" isWallSign(Material): Start"); - logger.trace(" mat: " + mat); - logger.trace(" wall_sign_materials.contains(mat): " + wall_sign_materials.contains(mat)); - return wall_sign_materials.contains(mat); - } } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 0d26bc4..8390c4e 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -678,9 +678,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.isWallSign(block, logger); + boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -765,9 +765,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.isWallSign(block, logger); + boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -1041,9 +1041,9 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = ((BlockState) holder).getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.isSignPost(block, logger); + boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.isWallSign(block, logger); + boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); logger.trace(" i: " + i); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); @@ -1212,9 +1212,9 @@ private void dropRelativeSign(Block block) { BlockFace.WEST}; Block relBlock = block.getRelative(face[i]); - boolean relIsSignPost = StorageSign.isSignPost(relBlock, logger); + boolean relIsSignPost = StorageSign.sign_materials.contains(relBlock.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(relBlock, logger); - boolean relIsWallSign = StorageSign.isWallSign(relBlock, logger); + boolean relIsWallSign = StorageSign.wall_sign_materials.contains(relBlock.getType()); logger.trace(" relBlock: " + relBlock); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); From df8aad73710812ba870790d8f2c8ee7dcfac6bc4 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 2 Jun 2024 22:18:31 +0900 Subject: [PATCH 60/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20SS=E3=81=AE=E5=9F=BA=E7=A4=8E=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E6=94=B9=E4=BF=AE=EF=BC=88=E4=BB=AE=EF=BC=89=20lombok=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20signdefinition=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AB=E7=9C=8B=E6=9D=BF=E3=81=AE=E4=BE=9D=E5=AD=98?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E5=85=A8=E9=83=A8=E7=A7=BB=E3=81=97=E3=81=9F?= =?UTF-8?q?=20EmptySign=E3=81=AE=E6=89=B1=E3=81=84=E3=82=92=E5=85=83?= =?UTF-8?q?=E3=81=AB=E6=88=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../java/wacky/storagesign/StorageSign.java | 101 ++++-------------- .../wacky/storagesign/StorageSignCore.java | 37 ++++--- .../signdefinition/SignDefinition.java | 63 +++++++++++ .../SignMatStringDefinition.java | 52 +++++++++ 5 files changed, 158 insertions(+), 101 deletions(-) create mode 100644 src/main/java/wacky/storagesign/signdefinition/SignDefinition.java create mode 100644 src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java diff --git a/pom.xml b/pom.xml index d167dbc..b6bd608 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,12 @@ logger 1.1.1 + + org.projectlombok + lombok + 1.18.32 + provided + UTF-8 diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 82a3639..696ac7a 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; -import org.apache.logging.log4j.LogManager; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; @@ -22,6 +21,8 @@ import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; import com.github.teruteru128.logger.Logger; +import wacky.storagesign.signdefinition.SignDefinition; +import wacky.storagesign.signdefinition.SignMatStringDefinition; import static java.util.Map.entry; import static org.bukkit.Material.*; @@ -44,55 +45,6 @@ public class StorageSign { */ private static final Set potion_materials = Collections.unmodifiableSet(EnumSet.of(POTION, SPLASH_POTION, LINGERING_POTION)); - /** - * 看板と扱われるアイテム一覧. - * 看板種類が追加されたら追加する. - */ - public static final Set sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); - - /** - * 看板と扱われるアイテム一覧. - * 看板種類が追加されたら追加する. - */ - public static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); - - /** - * 壁掛け看板と通常看板の変換一覧. - * 看板種類が追加されたら追加する. - */ - private static final Map wall_normal_sign_maps = Map.ofEntries( - entry(OAK_WALL_SIGN, OAK_SIGN), - entry(BIRCH_WALL_SIGN, BIRCH_SIGN), - entry(SPRUCE_WALL_SIGN, SPRUCE_SIGN), - entry(JUNGLE_WALL_SIGN, JUNGLE_SIGN), - entry(ACACIA_WALL_SIGN, ACACIA_SIGN), - entry(DARK_OAK_WALL_SIGN, DARK_OAK_SIGN), - entry(CRIMSON_WALL_SIGN, CRIMSON_SIGN), - entry(WARPED_WALL_SIGN, WARPED_SIGN), - entry(MANGROVE_WALL_SIGN, MANGROVE_SIGN), - entry(CHERRY_WALL_SIGN, CHERRY_SIGN), - entry(BAMBOO_WALL_SIGN, BAMBOO_SIGN) - ); - - /** - * damage値1をつける特殊なアイテム名とアイテム用マテリアルの変換一覧. - * 看板種類が追加されたら追加する. - */ - private static final Map mat_string_special_material_maps = Map.ofEntries( - entry("EmptySign", OAK_SIGN), - entry("OakStorageSign", OAK_SIGN), - entry("SpruceStorageSign", SPRUCE_SIGN), - entry("BirchStorageSign", BIRCH_SIGN), - entry("JungleStorageSign", JUNGLE_SIGN), - entry("AcaciaStorageSign", ACACIA_SIGN), - entry("DarkOakStorageSign", DARK_OAK_SIGN), - entry("CrimsonStorageSign", CRIMSON_SIGN), - entry("WarpedStorageSign", WARPED_SIGN), - entry("MangroveStorageSign", MANGROVE_SIGN), - entry("CherryStorageSign", CHERRY_SIGN), - entry("BambooStorageSign", BAMBOO_SIGN) - ); - /** * 特殊なアイテム名とアイテム用マテリアルの変換一覧. * 特殊処理をするアイテムが追加されたら追加する. @@ -107,25 +59,6 @@ public class StorageSign { entry("LPOTION", LINGERING_POTION) ); - /** - * damage値1をつける特殊なアイテム名とアイテム用マテリアルの変換一覧. - * 看板種類が追加されたら追加する. - */ - private static final Map special_material_mat_string_maps = Map.ofEntries( - entry(OAK_SIGN, "EmptySign"), - entry(OAK_SIGN, "OakStorageSign"), - entry(SPRUCE_SIGN, "SpruceStorageSign"), - entry(BIRCH_SIGN, "BirchStorageSign"), - entry(JUNGLE_SIGN, "JungleStorageSign"), - entry(ACACIA_SIGN, "AcaciaStorageSign"), - entry(DARK_OAK_SIGN,"DarkOakStorageSign"), - entry(CRIMSON_SIGN, "CrimsonStorageSign"), - entry(WARPED_SIGN, "WarpedStorageSign"), - entry(MANGROVE_SIGN, "MangroveStorageSign"), - entry(CHERRY_SIGN, "CherryStorageSign"), - entry(BAMBOO_SIGN, "BambooStorageSign") - ); - /** * 看板のアイテム素材. */ @@ -260,9 +193,9 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.stack = 1; // 壁掛け看板のチェック - if (wall_normal_sign_maps.containsKey(signmat)) { - logger.debug("signmat is " + wall_normal_sign_maps.get(signmat)); - this.smat = wall_normal_sign_maps.get(signmat); + if (SignDefinition.wall_normal_sign_maps.containsKey(signmat)) { + logger.debug("signmat is " + SignDefinition.wall_normal_sign_maps.get(signmat)); + this.smat = SignDefinition.wall_normal_sign_maps.get(signmat); } else { logger.debug("Material isn't WALL_SIGN"); this.smat = signmat; @@ -341,10 +274,14 @@ protected Material getMaterial(String str) { _logger.debug("Material is AIR"); return AIR; - } else if (mat_string_special_material_maps.containsKey(str)) { - _logger.debug("Material is " + mat_string_special_material_maps.get(str)); + } else if (str.matches("EmptySign")) { + _logger.debug("Material is OldOakStorageSign"); + this.damage = 1; + return OAK_SIGN; + } else if (SignMatStringDefinition.asStringMaterialMap().containsKey(str)) { + _logger.debug("Material is " + SignMatStringDefinition.asStringMaterialMap().get(str)); this.damage = 1; - return mat_string_special_material_maps.get(str); + return SignMatStringDefinition.asStringMaterialMap().get(str); } else if (mat_string_material_maps.containsKey(str)) { _logger.debug("Material is " + mat_string_material_maps.get(str)); this.damage = 1; @@ -417,9 +354,9 @@ protected String getShortName() { return "HorseEgg"; } // SS看板に当てはまるものなら、一覧から出力する. - } else if (special_material_mat_string_maps.containsKey(this.mat) && this.damage == 1) { - _logger.debug(special_material_mat_string_maps.get(this.mat)); - return special_material_mat_string_maps.get(this.mat); + } else if (SignMatStringDefinition.asMaterialStringMap().containsKey(this.mat) && this.damage == 1) { + _logger.debug(SignMatStringDefinition.asMaterialStringMap().get(this.mat)); + return SignMatStringDefinition.asMaterialStringMap().get(this.mat); } else if (ENCHANTED_BOOK.equals(this.mat)) { _logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; @@ -575,7 +512,7 @@ public ItemStack getContents() { // ダメージ値0にする return new ItemStack(this.mat, 1); - } else if (sign_materials.contains(this.mat)) { + } else if (SignDefinition.sign_materials.contains(this.mat)) { _logger.debug("any SIGN"); if (this.damage == 0) { @@ -848,7 +785,7 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { return false; } - boolean isSignPost = sign_materials.contains(item.getType()); + boolean isSignPost = SignDefinition.sign_materials.contains(item.getType()); logger.trace(" isSignPost:" +isSignPost); if (isSignPost) { @@ -877,8 +814,8 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" isStorageSign(Block):Start"); - boolean isSignPost = sign_materials.contains(block.getType()); - boolean isWallSign = wall_sign_materials.contains(block.getType()); + boolean isSignPost = SignDefinition.sign_materials.contains(block.getType()); + boolean isWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); logger.trace(" block.getType(): " + block.getType()); logger.trace(" isSignPost(block.getType()): " + isSignPost); logger.trace(" isWallSign(block.getType()) :" + isWallSign); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 8390c4e..03299e3 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -1,8 +1,8 @@ package wacky.storagesign; import com.github.teruteru128.logger.Logger; -import java.util.Arrays; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.logging.Level; @@ -21,7 +21,6 @@ import org.bukkit.block.data.type.WallSign; import org.bukkit.block.sign.Side; import org.bukkit.command.CommandSender; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.EntityType; import org.bukkit.entity.FallingBlock; @@ -57,6 +56,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; +import wacky.storagesign.signdefinition.SignDefinition; public class StorageSignCore extends JavaPlugin implements Listener { @@ -86,19 +86,18 @@ public void onEnable() { // logger.trace("traceLog"); //鯖別レシピが実装されたら - Material[] sign = {Material.OAK_SIGN, Material.BIRCH_SIGN, Material.SPRUCE_SIGN, - Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, - Material.WARPED_SIGN, Material.MANGROVE_SIGN, Material.CHERRY_SIGN, Material.BAMBOO_SIGN}; logger.trace("hardrecipe:" + ConfigLoader.getHardRecipe()); - for (int i = 0; i < 11; i++) { - logger.trace("signRecipi name:" + sign[i]); + Iterator it = SignDefinition.sign_materials.iterator(); + while(it.hasNext()){ + Material mat = it.next(); + logger.trace("signRecipi name:" + mat); - ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this, "ssr" + i), - StorageSign.emptySign(sign[i])); + ShapedRecipe storageSignRecipe = new ShapedRecipe(new NamespacedKey(this, "ssr" + mat.toString()), + StorageSign.emptySign(mat)); //ShapedRecipe storageSignRecipe = new ShapedRecipe(StorageSign.emptySign()); storageSignRecipe.shape("CCC", "CSC", "CHC"); storageSignRecipe.setIngredient('C', Material.CHEST); - storageSignRecipe.setIngredient('S', sign[i]); + storageSignRecipe.setIngredient('S', mat); if (ConfigLoader.getHardRecipe()) { storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); @@ -106,7 +105,7 @@ public void onEnable() { storageSignRecipe.setIngredient('H', Material.CHEST); } getServer().addRecipe(storageSignRecipe); - logger.trace(sign[i] + "StorageSign Recipe added."); + logger.trace(mat + "StorageSign Recipe added."); } logger.trace("setEvent"); @@ -678,9 +677,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); + boolean relIsSignPost = SignDefinition.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); + boolean relIsWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -765,9 +764,9 @@ public void onItemMove(InventoryMoveItemEvent event) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = blockInventory[j].getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); + boolean relIsSignPost = SignDefinition.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); + boolean relIsWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); logger.trace("blockInventory[j].getBlock(): "+ blockInventory[j].getBlock()); logger.trace("i: " + i); logger.trace("face[i]: " + face[i]); @@ -1041,9 +1040,9 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; Block block = ((BlockState) holder).getBlock().getRelative(face[i]); - boolean relIsSignPost = StorageSign.sign_materials.contains(block.getType()); + boolean relIsSignPost = SignDefinition.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); - boolean relIsWallSign = StorageSign.wall_sign_materials.contains(block.getType()); + boolean relIsWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); logger.trace(" i: " + i); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); @@ -1212,9 +1211,9 @@ private void dropRelativeSign(Block block) { BlockFace.WEST}; Block relBlock = block.getRelative(face[i]); - boolean relIsSignPost = StorageSign.sign_materials.contains(relBlock.getType()); + boolean relIsSignPost = SignDefinition.sign_materials.contains(relBlock.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(relBlock, logger); - boolean relIsWallSign = StorageSign.wall_sign_materials.contains(relBlock.getType()); + boolean relIsWallSign = SignDefinition.wall_sign_materials.contains(relBlock.getType()); logger.trace(" relBlock: " + relBlock); logger.trace(" relIsSignPost: " + relIsSignPost); logger.trace(" relIsStorageSign: " + relIsStorageSign); diff --git a/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java b/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java new file mode 100644 index 0000000..3ea9d0c --- /dev/null +++ b/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java @@ -0,0 +1,63 @@ +package wacky.storagesign.signdefinition; + +import static java.util.Map.entry; +import static org.bukkit.Material.ACACIA_SIGN; +import static org.bukkit.Material.ACACIA_WALL_SIGN; +import static org.bukkit.Material.BAMBOO_SIGN; +import static org.bukkit.Material.BAMBOO_WALL_SIGN; +import static org.bukkit.Material.BIRCH_SIGN; +import static org.bukkit.Material.BIRCH_WALL_SIGN; +import static org.bukkit.Material.CHERRY_SIGN; +import static org.bukkit.Material.CHERRY_WALL_SIGN; +import static org.bukkit.Material.CRIMSON_SIGN; +import static org.bukkit.Material.CRIMSON_WALL_SIGN; +import static org.bukkit.Material.DARK_OAK_SIGN; +import static org.bukkit.Material.DARK_OAK_WALL_SIGN; +import static org.bukkit.Material.JUNGLE_SIGN; +import static org.bukkit.Material.JUNGLE_WALL_SIGN; +import static org.bukkit.Material.MANGROVE_SIGN; +import static org.bukkit.Material.MANGROVE_WALL_SIGN; +import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.OAK_WALL_SIGN; +import static org.bukkit.Material.SPRUCE_SIGN; +import static org.bukkit.Material.SPRUCE_WALL_SIGN; +import static org.bukkit.Material.WARPED_SIGN; +import static org.bukkit.Material.WARPED_WALL_SIGN; + +import java.util.Collections; +import java.util.EnumSet; +import java.util.Map; +import java.util.Set; +import org.bukkit.Material; + +public class SignDefinition { + + /** + * 看板と扱われるアイテム一覧. + * 看板種類が追加されたら追加する. + */ + public static final Set sign_materials = Collections.unmodifiableSet( + EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); + /** + * 看板と扱われるアイテム一覧. + * 看板種類が追加されたら追加する. + */ + public static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); + /** + * 壁掛け看板と通常看板の変換一覧. + * 看板種類が追加されたら追加する. + */ + public static final Map wall_normal_sign_maps = Map.ofEntries( + entry(OAK_WALL_SIGN, OAK_SIGN), + entry(BIRCH_WALL_SIGN, BIRCH_SIGN), + entry(SPRUCE_WALL_SIGN, SPRUCE_SIGN), + entry(JUNGLE_WALL_SIGN, JUNGLE_SIGN), + entry(ACACIA_WALL_SIGN, ACACIA_SIGN), + entry(DARK_OAK_WALL_SIGN, DARK_OAK_SIGN), + entry(CRIMSON_WALL_SIGN, CRIMSON_SIGN), + entry(WARPED_WALL_SIGN, WARPED_SIGN), + entry(MANGROVE_WALL_SIGN, MANGROVE_SIGN), + entry(CHERRY_WALL_SIGN, CHERRY_SIGN), + entry(BAMBOO_WALL_SIGN, BAMBOO_SIGN) + ); +} diff --git a/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java b/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java new file mode 100644 index 0000000..4f751b2 --- /dev/null +++ b/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java @@ -0,0 +1,52 @@ +package wacky.storagesign.signdefinition; + +import static java.util.Map.entry; +import static org.bukkit.Material.ACACIA_SIGN; +import static org.bukkit.Material.BAMBOO_SIGN; +import static org.bukkit.Material.BIRCH_SIGN; +import static org.bukkit.Material.CHERRY_SIGN; +import static org.bukkit.Material.CRIMSON_SIGN; +import static org.bukkit.Material.DARK_OAK_SIGN; +import static org.bukkit.Material.JUNGLE_SIGN; +import static org.bukkit.Material.MANGROVE_SIGN; +import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.SPRUCE_SIGN; +import static org.bukkit.Material.WARPED_SIGN; + +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.Map; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.bukkit.Material; + +@AllArgsConstructor +@Getter +public enum SignMatStringDefinition { + OAK_SS("OakStorageSign", OAK_SIGN), + SPRUCE_SS("SpruceStorageSign", SPRUCE_SIGN), + BIRCH_SS("BirchStorageSign", BIRCH_SIGN), + JUNGLE_SS("JungleStorageSign", JUNGLE_SIGN), + ACACIA_SS("AcaciaStorageSign", ACACIA_SIGN), + DARKOAK_SS("DarkOakStorageSign", DARK_OAK_SIGN), + CRIMSON_SS("CrimsonStorageSign", CRIMSON_SIGN), + WARPED_SS("WarpedStorageSign", WARPED_SIGN), + MANGROVE_SS("MangroveStorageSign", MANGROVE_SIGN), + CHERRY_SS("CherryStorageSign", CHERRY_SIGN), + BAMBOO_SS("BambooStorageSign", BAMBOO_SIGN); + + private String materialString; + private Material material; + + public static Map asStringMaterialMap() { + Map map = new LinkedHashMap<>(); + Arrays.stream(values()).forEach(e -> map.put(e.materialString, e.material)); + return map; + } + + public static Map asMaterialStringMap() { + Map map = new LinkedHashMap<>(); + Arrays.stream(values()).forEach(e -> map.put(e.material, e.materialString)); + return map; + } +} From 45d1a7f9dc249e58650e24a0a48100772031bca8 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Mon, 3 Jun 2024 21:41:37 +0900 Subject: [PATCH 61/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20SS=E3=81=AE=E5=9F=BA=E7=A4=8E=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E6=94=B9=E4=BF=AE=EF=BC=88=E4=BB=AE=EF=BC=89=20lombok=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20signdefinition=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AB=E7=9C=8B=E6=9D=BF=E3=81=AE=E4=BE=9D=E5=AD=98?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E5=85=A8=E9=83=A8=E7=A7=BB=E3=81=97=E3=81=9F?= =?UTF-8?q?=20EmptySign=E3=81=AE=E6=89=B1=E3=81=84=E3=82=92=E5=85=83?= =?UTF-8?q?=E3=81=AB=E6=88=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 696ac7a..7a823f6 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -99,7 +99,7 @@ public class StorageSign { /** * ログ出力用ロガー. */ - private Logger _logger; + private final Logger _logger; /** * ItemStackに設定されている看板の情報からStorageSignを生成する. @@ -108,7 +108,8 @@ public StorageSign(ItemStack item, Logger logger) { this._logger = logger; logger.debug("StorageSign:start"); - String[] str = item.getItemMeta().getLore().get(0).split(" "); + List lore = Objects.requireNonNull(item.getItemMeta()).getLore(); + String[] str = Objects.requireNonNull(lore).getFirst().split(" "); if (str[0].matches("Empty")) { logger.debug("StorageSign is Empty"); @@ -219,7 +220,7 @@ public static ItemStack emptySign() { * * @param type Material * @param amount Integer - * @param list List + * @param list List * @return ItemStack StorageSign */ public static ItemStack createStorageSign(Material type, Integer amount, List list){ @@ -231,8 +232,7 @@ public static ItemStack createStorageSign(Material type, Integer amount, List list = new ArrayList<>(); - meta.setDisplayName("HorseEgg"); + Objects.requireNonNull(meta).setDisplayName("HorseEgg"); list.add("Empty"); meta.setLore(list); emptyHorseEgg.setItemMeta(meta); @@ -473,8 +473,8 @@ public String[] getSigntexts() { sign[0] = storage_sign_name; sign[1] = getShortName(); sign[2] = String.valueOf(this.amount); - sign[3] = String.valueOf(this.amount / 3456) + "LC " + String.valueOf(this.amount % 3456 / 64) - + "s " + String.valueOf(this.amount % 64); + sign[3] = (this.amount / 3456) + "LC " + (this.amount % 3456 / 64) + + "s " + (this.amount % 64); _logger.debug("getSigntext:end"); return sign; @@ -529,7 +529,7 @@ public ItemStack getContents() { ItemStack item = new ItemStack(this.mat, 1); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); - enchantMeta.addStoredEnchant(this.ench, this.damage, true); + Objects.requireNonNull(enchantMeta).addStoredEnchant(this.ench, this.damage, true); item.setItemMeta(enchantMeta); return item; @@ -539,9 +539,7 @@ public ItemStack getContents() { ItemStack item = new ItemStack(this.mat, 1); PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); - // potionMeta.setBasePotionData(new PotionData(pot, damage == 1, damage == 2)); - - potionMeta.setBasePotionType(this.pot); + Objects.requireNonNull(potionMeta).setBasePotionType(this.pot); item.setItemMeta(potionMeta); return item; @@ -550,8 +548,7 @@ public ItemStack getContents() { _logger.debug("FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, 1); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); - - fireworkMeta.setPower(this.damage); + Objects.requireNonNull(fireworkMeta).setPower(this.damage); item.setItemMeta(fireworkMeta); return item; @@ -603,16 +600,18 @@ public boolean isSimilar(ItemStack item) { _logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); - + // ないと思うけど、metaがnullならfalse. + if(Objects.isNull(enchantMeta)) { + return false; + } if (enchantMeta.getStoredEnchants().size() == 1) { _logger.debug("enchantMeta.getStoredEnchants().size() = 1"); Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - if (itemEnch == this.ench && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { + if (itemEnch.equals(this.ench) && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { _logger.debug("Item is Similar"); return true; - } } _logger.debug(" Item isn't Similar"); @@ -624,6 +623,10 @@ public boolean isSimilar(ItemStack item) { _logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); if (this.mat.equals(item.getType())) { PotionMeta pom = (PotionMeta) item.getItemMeta(); + // ないと思うけど、pomがnullならfalse + if(Objects.isNull(pom) || Objects.isNull(pom.getBasePotionType())) { + return false; + } _logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); if (pom.getBasePotionType().equals(this.pot)) { return true; @@ -641,12 +644,12 @@ public boolean isSimilar(ItemStack item) { boolean contentIsStorageSign = isStorageSign(contents, _logger); _logger.trace("isStorageSign: " + isStorageSign); _logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); - if(isStorageSign && contentIsStorageSign){ - if(contents.getType() == item.getType()){ - StorageSign cSign = new StorageSign(contents, _logger); - StorageSign iSign = new StorageSign(item, _logger); - _logger.trace("cSign.isEmpty() == iSign.isEmpty(): " + (cSign.isEmpty() == iSign.isEmpty())); - return cSign.isEmpty() == iSign.isEmpty(); + if (isStorageSign && contentIsStorageSign) { + if (contents.getType() == item.getType()) { + StorageSign contentSign = new StorageSign(contents, _logger); + StorageSign itemSign = new StorageSign(item, _logger); + _logger.trace("cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); + return contentSign.isEmpty() == itemSign.isEmpty(); } } @@ -786,8 +789,12 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { } boolean isSignPost = SignDefinition.sign_materials.contains(item.getType()); - logger.trace(" isSignPost:" +isSignPost); + logger.trace(" isSignPost:" + isSignPost); if (isSignPost) { + // ないと思うけど、metaがなかったら比較できないのでfalse. + if(Objects.isNull(item.getItemMeta())) { + return false; + } logger.trace(" !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); if (!item.getItemMeta().hasDisplayName()) { From bf8101269393cb62f076fd2c3a22cb9ca29e47ef Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 4 Jun 2024 16:31:33 +0900 Subject: [PATCH 62/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20CheckStyle=E5=AF=BE=E5=BF=9C=20=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=83=87=E3=83=B3=E3=83=88=E7=AD=89=E4=BB=A5=E5=A4=96=E3=81=AE?= =?UTF-8?q?=E7=B4=B0=E3=81=8B=E3=81=84=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 227 +++++++++--------- 1 file changed, 114 insertions(+), 113 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 7a823f6..c2ab044 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -99,13 +99,13 @@ public class StorageSign { /** * ログ出力用ロガー. */ - private final Logger _logger; + private final Logger logger; /** * ItemStackに設定されている看板の情報からStorageSignを生成する. */ public StorageSign(ItemStack item, Logger logger) { - this._logger = logger; + this.logger = logger; logger.debug("StorageSign:start"); List lore = Objects.requireNonNull(item.getItemMeta()).getLore(); @@ -157,7 +157,7 @@ public StorageSign(ItemStack item, Logger logger) { * ブロックとして存在している看板の情報からStorageSignを生成する. */ public StorageSign(Sign sign, Material signmat, Logger logger) { - this._logger = logger; + this.logger = logger; logger.debug("StorageSign(Material signmat):start"); // 上と統合したい String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); @@ -215,6 +215,29 @@ public static ItemStack emptySign() { return emptySign(OAK_SIGN); } + /** + * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. + * + * @param signMat Material + * @return ItemStack 空のStorageSign + */ + public static ItemStack emptySign(Material signMat) { + return emptySign(signMat, null); + } + + /** + * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. + * + * @param smat Material + * @param amount Integer + * @return ItemStack 空のStorageSign + */ + public static ItemStack emptySign(Material smat, Integer amount) { + List list = new ArrayList<>(); + list.add("Empty"); + return createStorageSign(smat, amount, list); + } + /** * 引数に渡された情報を基にStorageSignを作成して、ItemStackとして取得します. * @@ -239,28 +262,6 @@ public static ItemStack createStorageSign(Material type, Integer amount, List list = new ArrayList<>(); - list.add("Empty"); - return createStorageSign(smat, amount, list); - } /** * 指定された文字列でMaterialに変換します. @@ -269,26 +270,26 @@ public static ItemStack emptySign(Material smat, Integer amount) { * @return Material */ protected Material getMaterial(String str) { - _logger.debug("getMaterial:start"); + logger.debug("getMaterial:start"); if (str.matches("")) { - _logger.debug("Material is AIR"); + logger.debug("Material is AIR"); return AIR; } else if (str.matches("EmptySign")) { - _logger.debug("Material is OldOakStorageSign"); + logger.debug("Material is OldOakStorageSign"); this.damage = 1; return OAK_SIGN; } else if (SignMatStringDefinition.asStringMaterialMap().containsKey(str)) { - _logger.debug("Material is " + SignMatStringDefinition.asStringMaterialMap().get(str)); + logger.debug("Material is " + SignMatStringDefinition.asStringMaterialMap().get(str)); this.damage = 1; return SignMatStringDefinition.asStringMaterialMap().get(str); } else if (mat_string_material_maps.containsKey(str)) { - _logger.debug("Material is " + mat_string_material_maps.get(str)); + logger.debug("Material is " + mat_string_material_maps.get(str)); this.damage = 1; return mat_string_material_maps.get(str); } if (str.matches("HorseEgg")) { - _logger.debug("Material is HorseEgg"); + logger.debug("Material is HorseEgg"); this.damage = 1; return END_PORTAL; // ガスト卵でよくね? @@ -297,7 +298,7 @@ protected Material getMaterial(String str) { Material mat = matchMaterial(str); if (Objects.isNull(mat)) { - _logger.debug("Material is null"); + logger.debug("Material is null"); // 後ろ切れる程度なら対応可 for (Material m : values()) { if (m.toString().startsWith(str)) { @@ -307,7 +308,7 @@ protected Material getMaterial(String str) { } // nullなら空. - _logger.debug("Material isn't bifurcation"); + logger.debug("Material isn't bifurcation"); return mat; } @@ -317,7 +318,7 @@ protected Material getMaterial(String str) { * @return Material */ public Material getMaterial() { - _logger.debug(" return this.mat"); + logger.debug(" return this.mat"); return this.mat; } @@ -325,7 +326,7 @@ public Material getMaterial() { * フィールド変数:matのsetter. */ public void setMaterial(Material mat) { - _logger.debug("setMaterial to Material mat"); + logger.debug("setMaterial to Material mat"); this.mat = mat; } @@ -335,61 +336,61 @@ public void setMaterial(Material mat) { * @return Materialの短い名前 */ protected String getShortName() { - _logger.debug("getShortName:start"); + logger.debug("getShortName:start"); // 2行目の記載内容 - _logger.trace("this.mat=" + mat); + logger.trace("this.mat=" + mat); if (this.mat == null || this.mat == AIR) { - _logger.debug("empty"); + logger.debug("empty"); return ""; } else if (this.mat == END_PORTAL) { - _logger.debug("Material.END_PORTAL"); + logger.debug("Material.END_PORTAL"); if (this.damage == 0) { - _logger.debug("OakStorageSign"); + logger.debug("OakStorageSign"); return "OakStorageSign"; } if (this.damage == 1) { - _logger.debug("HorseEgg"); + logger.debug("HorseEgg"); return "HorseEgg"; } // SS看板に当てはまるものなら、一覧から出力する. } else if (SignMatStringDefinition.asMaterialStringMap().containsKey(this.mat) && this.damage == 1) { - _logger.debug(SignMatStringDefinition.asMaterialStringMap().get(this.mat)); + logger.debug(SignMatStringDefinition.asMaterialStringMap().get(this.mat)); return SignMatStringDefinition.asMaterialStringMap().get(this.mat); } else if (ENCHANTED_BOOK.equals(this.mat)) { - _logger.debug("ENCHBOOK + data"); + logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; } else if (potion_materials.contains(this.mat)) { - _logger.debug("any POTION"); + logger.debug("any POTION"); return PotionInfo.getSignData(this.mat, pot, this.damage); } // リミットブレイク int limit = 99; if (this.damage != 0) { - _logger.debug("limit break"); + logger.debug("limit break"); limit -= String.valueOf(this.damage).length() + 1; } if (this.mat.toString().length() > limit) { - _logger.debug("this.mat.toString().length() > limit"); + logger.debug("this.mat.toString().length() > limit"); if (this.damage != 0) { - _logger.debug("item damage isn't 0"); + logger.debug("item damage isn't 0"); return this.mat.toString().substring(0, limit) + ":" + this.damage; } - _logger.debug("item damage is 0"); + logger.debug("item damage is 0"); return this.mat.toString().substring(0, limit); } else { - _logger.debug("else this.mat.toString().length() > limit"); + logger.debug("else this.mat.toString().length() > limit"); if (this.damage != 0) { - _logger.debug("item damage isn't 0"); + logger.debug("item damage isn't 0"); return this.mat.toString() + ":" + this.damage; } - _logger.debug("item damage is 0"); + logger.debug("item damage is 0"); return this.mat.toString(); } } @@ -400,29 +401,29 @@ protected String getShortName() { * @return ItemStack 空のStorageSign */ public ItemStack getStorageSign() { - _logger.debug("getStorageSign:start"); + logger.debug("getStorageSign:start"); List list = new ArrayList<>(); // IDとMaterial名が混ざってたり、エンチャ本対応したり if (this.isEmpty) { - _logger.debug("Empty"); + logger.debug("Empty"); return emptySign(this.smat, this.stack); } else if (ENCHANTED_BOOK.equals(this.mat)) { - _logger.debug("ENCHANTED_BOOK"); + logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " + this.amount); } else if (potion_materials.contains(this.mat)) { - _logger.debug("any POTION"); + logger.debug("any POTION"); list.add(PotionInfo.getTagData(this.mat, pot, this.damage, this.amount)); } else { - _logger.debug("other"); + logger.debug("other"); list.add(getShortName() + " " + this.amount); } - _logger.debug("getStorageSign:end"); + logger.debug("getStorageSign:end"); return createStorageSign(this.smat, this.stack, list); } @@ -432,7 +433,7 @@ public ItemStack getStorageSign() { * @return ItemStack 空のHoerseEgg */ private ItemStack emptyHorseEgg() { - _logger.debug("emptyHorseEgg:start"); + logger.debug("emptyHorseEgg:start"); ItemStack emptyHorseEgg = new ItemStack(GHAST_SPAWN_EGG); ItemMeta meta = emptyHorseEgg.getItemMeta(); List list = new ArrayList<>(); @@ -442,7 +443,7 @@ private ItemStack emptyHorseEgg() { meta.setLore(list); emptyHorseEgg.setItemMeta(meta); - _logger.debug("emptyHorseEgg:end"); + logger.debug("emptyHorseEgg:end"); return emptyHorseEgg; } @@ -454,10 +455,10 @@ private ItemStack emptyHorseEgg() { * @return 取得した文字列 */ public String getSigntext(int i) { - _logger.debug("getSigntext:start"); + logger.debug("getSigntext:start"); String[] sign = getSigntexts(); - _logger.trace("sign[]=" + String.join(" / ", sign)); - _logger.debug("getSigntext:end"); + logger.trace("sign[]=" + String.join(" / ", sign)); + logger.debug("getSigntext:end"); return sign[i]; } @@ -467,7 +468,7 @@ public String getSigntext(int i) { * @return 取得した文字列 */ public String[] getSigntexts() { - _logger.debug("getSigntexts:start"); + logger.debug("getSigntexts:start"); String[] sign = new String[4]; sign[0] = storage_sign_name; @@ -476,7 +477,7 @@ public String[] getSigntexts() { sign[3] = (this.amount / 3456) + "LC " + (this.amount % 3456 / 64) + "s " + (this.amount % 64); - _logger.debug("getSigntext:end"); + logger.debug("getSigntext:end"); return sign; } @@ -487,45 +488,45 @@ public String[] getSigntexts() { */ public ItemStack getContents() { // 中身取得、一部アイテム用の例外 - _logger.debug("getContents:start"); + logger.debug("getContents:start"); if (this.mat == null) { - _logger.debug("StrageSign haven't item"); + logger.debug("StrageSign haven't item"); return null; } if (this.mat == END_PORTAL) { - _logger.debug("Contents is END_PORTAL"); + logger.debug("Contents is END_PORTAL"); if (this.damage == 0) { - _logger.debug("emptySign"); + logger.debug("emptySign"); return emptySign(); } if (this.damage == 1) { - _logger.debug("emptyHorseEgg"); + logger.debug("emptyHorseEgg"); return emptyHorseEgg(); } } if (this.mat == STONE_SLAB) { - _logger.debug("STONE_SLAB"); + logger.debug("STONE_SLAB"); // ダメージ値0にする return new ItemStack(this.mat, 1); } else if (SignDefinition.sign_materials.contains(this.mat)) { - _logger.debug("any SIGN"); + logger.debug("any SIGN"); if (this.damage == 0) { - _logger.debug("damage is 0"); + logger.debug("damage is 0"); return new ItemStack(this.mat, 1); } else { - _logger.debug("damage isn't 0"); + logger.debug("damage isn't 0"); return emptySign(this.mat); } } else if (this.mat == ENCHANTED_BOOK) { - _logger.debug("ENCHANTED_BOOK"); + logger.debug("ENCHANTED_BOOK"); ItemStack item = new ItemStack(this.mat, 1); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); @@ -535,7 +536,7 @@ public ItemStack getContents() { return item; } else if (potion_materials.contains(this.mat)) { - _logger.debug("any POTION"); + logger.debug("any POTION"); ItemStack item = new ItemStack(this.mat, 1); PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); @@ -545,7 +546,7 @@ public ItemStack getContents() { return item; } else if (this.mat == FIREWORK_ROCKET) { - _logger.debug("FIREWORK_ROCKET"); + logger.debug("FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, 1); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); Objects.requireNonNull(fireworkMeta).setPower(this.damage); @@ -554,7 +555,7 @@ public ItemStack getContents() { return item; } else if (this.mat == WHITE_BANNER && this.damage == 8) { - _logger.debug("WHITE_BANNER & damage is 8"); + logger.debug("WHITE_BANNER & damage is 8"); ItemStack item = new ItemStack(this.mat, 1); // どこかからコピー @@ -565,7 +566,7 @@ public ItemStack getContents() { } if (this.damage == 0) { - _logger.debug("damage is 0"); + logger.debug("damage is 0"); // 大半はダメージなくなった return new ItemStack(this.mat, 1); } @@ -573,13 +574,13 @@ public ItemStack getContents() { var itemStack = new ItemStack(this.mat, 1); var meta = itemStack.getItemMeta(); if (meta instanceof Damageable dam) { - _logger.debug("meta instanceof Damageable dam"); + logger.debug("meta instanceof Damageable dam"); dam.setDamage(this.damage); itemStack.setItemMeta(meta); } // ツール系のみダメージあり - _logger.debug("Item is tools"); + logger.debug("Item is tools"); return itemStack; } @@ -589,15 +590,15 @@ public ItemStack getContents() { * @return true:回収できるよ/false:回収できないよ */ public boolean isSimilar(ItemStack item) { - _logger.debug(" isSimilar:start"); + logger.debug(" isSimilar:start"); if (item == null) { - _logger.debug(" Item isn't Similar"); + logger.debug(" Item isn't Similar"); return false; } if (this.mat == ENCHANTED_BOOK && item.getType() == ENCHANTED_BOOK) { - _logger.debug("ENCHANTED_BOOK"); + logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); // ないと思うけど、metaがnullならfalse. @@ -605,57 +606,57 @@ public boolean isSimilar(ItemStack item) { return false; } if (enchantMeta.getStoredEnchants().size() == 1) { - _logger.debug("enchantMeta.getStoredEnchants().size() = 1"); + logger.debug("enchantMeta.getStoredEnchants().size() = 1"); Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; if (itemEnch.equals(this.ench) && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { - _logger.debug("Item is Similar"); + logger.debug("Item is Similar"); return true; } } - _logger.debug(" Item isn't Similar"); + logger.debug(" Item isn't Similar"); return false; } else if (potion_materials.contains(this.mat)) { - _logger.debug(" This mat is PotionSeries."); + logger.debug(" This mat is PotionSeries."); - _logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); + logger.trace(" this.mat.equals(item.getType()): " + this.mat.equals(item.getType())); if (this.mat.equals(item.getType())) { PotionMeta pom = (PotionMeta) item.getItemMeta(); // ないと思うけど、pomがnullならfalse if(Objects.isNull(pom) || Objects.isNull(pom.getBasePotionType())) { return false; } - _logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); + logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); if (pom.getBasePotionType().equals(this.pot)) { return true; } } } else if (block_entity_data_Materials.contains(this.mat)) { // block_entity_data_Materialsに入ってるものは、isSimilarで比較できないので、Materialが一緒かで判定 - _logger.debug(" This mat is block_entity_data_Materials."); + logger.debug(" This mat is block_entity_data_Materials."); return this.mat.equals(item.getType()); } // SSなのかだけ、別ロジックで判定 ItemStack contents = getContents(); - boolean isStorageSign = isStorageSign(item, _logger); - boolean contentIsStorageSign = isStorageSign(contents, _logger); - _logger.trace("isStorageSign: " + isStorageSign); - _logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); + boolean isStorageSign = isStorageSign(item, logger); + boolean contentIsStorageSign = isStorageSign(contents, logger); + logger.trace("isStorageSign: " + isStorageSign); + logger.trace("contents.getType() == item.getType(): " + (contents.getType() == item.getType())); if (isStorageSign && contentIsStorageSign) { if (contents.getType() == item.getType()) { - StorageSign contentSign = new StorageSign(contents, _logger); - StorageSign itemSign = new StorageSign(item, _logger); - _logger.trace("cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); + StorageSign contentSign = new StorageSign(contents, logger); + StorageSign itemSign = new StorageSign(item, logger); + logger.trace("cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); return contentSign.isEmpty() == itemSign.isEmpty(); } } // それ以外のItemはisSimilarで判定 boolean isSimilar = contents.isSimilar(item); - _logger.trace(" isSimilar: " + isSimilar); + logger.trace(" isSimilar: " + isSimilar); return isSimilar; } @@ -663,7 +664,7 @@ public boolean isSimilar(ItemStack item) { * フィールド変数:damageのgetter. */ public short getDamage() { - _logger.debug(" getDamage"); + logger.debug(" getDamage"); return this.damage; } @@ -671,7 +672,7 @@ public short getDamage() { * フィールド変数:damageのsetter. */ public void setDamage(short damage) { - _logger.debug("setDamage"); + logger.debug("setDamage"); this.damage = damage; } @@ -679,7 +680,7 @@ public void setDamage(short damage) { * フィールド変数:amountのgetter. */ public int getAmount() { - _logger.debug("getAmount"); + logger.debug("getAmount"); return this.amount; } @@ -687,7 +688,7 @@ public int getAmount() { * フィールド変数:amountのsetter. */ public void setAmount(int amount) { - _logger.debug("setAmount"); + logger.debug("setAmount"); this.amount = amount; this.isEmpty = amount == 0; } @@ -698,19 +699,19 @@ public void setAmount(int amount) { * @param amount 加算対象の値 */ public void addAmount(int amount) { - _logger.debug("addAmount:start"); + logger.debug("addAmount:start"); if (this.amount < -amount) { - _logger.debug("set amount 0"); + logger.debug("set amount 0"); this.amount = 0; } else { - _logger.debug("add Amount"); + logger.debug("add Amount"); this.amount += amount; } if (this.amount < 0) { - _logger.debug("set amount to MAX_VALUE"); + logger.debug("set amount to MAX_VALUE"); this.amount = Integer.MAX_VALUE; } @@ -724,7 +725,7 @@ public void addAmount(int amount) { * @return StackSize */ public int getStackSize() { - _logger.debug("get StorageSign StackSize"); + logger.debug("get StorageSign StackSize"); return this.stack; } @@ -734,7 +735,7 @@ public int getStackSize() { * @return true:空っぽ/false:入ってます */ public boolean isEmpty() { - _logger.debug("Check StrageSign is Empty"); + logger.debug("Check StrageSign is Empty"); return this.isEmpty; } @@ -742,7 +743,7 @@ public boolean isEmpty() { * フィールド変数:enchのgetter. */ public Enchantment getEnchant() { - _logger.debug("getEnchant"); + logger.debug("getEnchant"); return this.ench; } @@ -750,7 +751,7 @@ public Enchantment getEnchant() { * フィールド変数:enchのsetter. */ public void setEnchant(Enchantment ench) { - _logger.debug("setEnchant"); + logger.debug("setEnchant"); this.ench = ench; } @@ -758,7 +759,7 @@ public void setEnchant(Enchantment ench) { * フィールド変数:potのgetter. */ public PotionType getPotion() { - _logger.debug("getPotion"); + logger.debug("getPotion"); return this.pot; } @@ -766,7 +767,7 @@ public PotionType getPotion() { * フィールド変数:potのsetter. */ public void setPotion(PotionType pot) { - _logger.debug("setPotion"); + logger.debug("setPotion"); this.pot = pot; } @@ -774,7 +775,7 @@ public void setPotion(PotionType pot) { * フィールド変数:smatのgetter. */ public Material getSmat() { - _logger.debug(" getSmat"); + logger.debug(" getSmat"); return this.smat; } From b05116d2c04508c956df6fd5ee48a35cf581f526 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 4 Jun 2024 16:32:28 +0900 Subject: [PATCH 63/82] =?UTF-8?q?1.20.6=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20CheckStyle=E5=AF=BE=E5=BF=9C=20=E5=85=A8=E4=BD=93?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3=E3=83=88=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 76 ++++++++++++------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index c2ab044..16963f7 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -1,5 +1,27 @@ package wacky.storagesign; +import static java.util.Map.entry; +import static org.bukkit.Material.AIR; +import static org.bukkit.Material.BEEHIVE; +import static org.bukkit.Material.BEE_NEST; +import static org.bukkit.Material.ENCHANTED_BOOK; +import static org.bukkit.Material.END_PORTAL; +import static org.bukkit.Material.FIREWORK_ROCKET; +import static org.bukkit.Material.GHAST_SPAWN_EGG; +import static org.bukkit.Material.GREEN_DYE; +import static org.bukkit.Material.LINGERING_POTION; +import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.POTION; +import static org.bukkit.Material.RED_DYE; +import static org.bukkit.Material.SMOOTH_STONE_SLAB; +import static org.bukkit.Material.SPLASH_POTION; +import static org.bukkit.Material.STONE_SLAB; +import static org.bukkit.Material.WHITE_BANNER; +import static org.bukkit.Material.YELLOW_DYE; +import static org.bukkit.Material.matchMaterial; +import static org.bukkit.Material.values; + +import com.github.teruteru128.logger.Logger; import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; @@ -20,18 +42,15 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; -import com.github.teruteru128.logger.Logger; import wacky.storagesign.signdefinition.SignDefinition; import wacky.storagesign.signdefinition.SignMatStringDefinition; -import static java.util.Map.entry; -import static org.bukkit.Material.*; - /** * StrageSignの実体クラスです. */ public class StorageSign { - private static final String storage_sign_name = "StorageSign"; + + private static final String storage_sign_name = "StorageSign"; /** * block_entity_dataタグが付いて、単純な比較では収納ができないアイテム一覧. @@ -40,14 +59,13 @@ public class StorageSign { EnumSet.of(BEE_NEST, BEEHIVE)); /** - * SSの中でポーションと扱われるアイテム一覧. - * ポーション種類が追加されたら追加する. + * SSの中でポーションと扱われるアイテム一覧. ポーション種類が追加されたら追加する. */ - private static final Set potion_materials = Collections.unmodifiableSet(EnumSet.of(POTION, SPLASH_POTION, LINGERING_POTION)); + private static final Set potion_materials = Collections.unmodifiableSet( + EnumSet.of(POTION, SPLASH_POTION, LINGERING_POTION)); /** - * 特殊なアイテム名とアイテム用マテリアルの変換一覧. - * 特殊処理をするアイテムが追加されたら追加する. + * 特殊なアイテム名とアイテム用マテリアルの変換一覧. 特殊処理をするアイテムが追加されたら追加する. */ private static final Map mat_string_material_maps = Map.ofEntries( entry("SIGN", OAK_SIGN), @@ -228,7 +246,7 @@ public static ItemStack emptySign(Material signMat) { /** * Materialの内容から、空のStorageSignを作成して、ItemStackとして取得します. * - * @param smat Material + * @param smat Material * @param amount Integer * @return ItemStack 空のStorageSign */ @@ -241,14 +259,14 @@ public static ItemStack emptySign(Material smat, Integer amount) { /** * 引数に渡された情報を基にStorageSignを作成して、ItemStackとして取得します. * - * @param type Material + * @param type Material * @param amount Integer - * @param list List + * @param list List * @return ItemStack StorageSign */ - public static ItemStack createStorageSign(Material type, Integer amount, List list){ + public static ItemStack createStorageSign(Material type, Integer amount, List list) { ItemStack sign; - if(Objects.isNull(amount)) { + if (Objects.isNull(amount)) { sign = new ItemStack(type); } else { sign = new ItemStack(type, amount); @@ -355,7 +373,8 @@ protected String getShortName() { return "HorseEgg"; } // SS看板に当てはまるものなら、一覧から出力する. - } else if (SignMatStringDefinition.asMaterialStringMap().containsKey(this.mat) && this.damage == 1) { + } else if (SignMatStringDefinition.asMaterialStringMap().containsKey(this.mat) + && this.damage == 1) { logger.debug(SignMatStringDefinition.asMaterialStringMap().get(this.mat)); return SignMatStringDefinition.asMaterialStringMap().get(this.mat); } else if (ENCHANTED_BOOK.equals(this.mat)) { @@ -450,8 +469,7 @@ private ItemStack emptyHorseEgg() { /** * StrageSignから、設置されている看板として表示される文字列を取得します. * - * @param i 看板の何行目の文字列を取得したいか指定します
- * (ex.)1行目⇒0 + * @param i 看板の何行目の文字列を取得したいか指定します
(ex.)1行目⇒0 * @return 取得した文字列 */ public String getSigntext(int i) { @@ -602,7 +620,7 @@ public boolean isSimilar(ItemStack item) { EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); // ないと思うけど、metaがnullならfalse. - if(Objects.isNull(enchantMeta)) { + if (Objects.isNull(enchantMeta)) { return false; } if (enchantMeta.getStoredEnchants().size() == 1) { @@ -610,7 +628,8 @@ public boolean isSimilar(ItemStack item) { Enchantment itemEnch = enchantMeta.getStoredEnchants().keySet().toArray(new Enchantment[0])[0]; - if (itemEnch.equals(this.ench) && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { + if (itemEnch.equals(this.ench) + && enchantMeta.getStoredEnchantLevel(itemEnch) == this.damage) { logger.debug("Item is Similar"); return true; } @@ -625,10 +644,11 @@ public boolean isSimilar(ItemStack item) { if (this.mat.equals(item.getType())) { PotionMeta pom = (PotionMeta) item.getItemMeta(); // ないと思うけど、pomがnullならfalse - if(Objects.isNull(pom) || Objects.isNull(pom.getBasePotionType())) { + if (Objects.isNull(pom) || Objects.isNull(pom.getBasePotionType())) { return false; } - logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType().equals(this.pot)); + logger.trace(" pom.getBasePotionType().equals(this.pot): " + pom.getBasePotionType() + .equals(this.pot)); if (pom.getBasePotionType().equals(this.pot)) { return true; } @@ -649,7 +669,8 @@ public boolean isSimilar(ItemStack item) { if (contents.getType() == item.getType()) { StorageSign contentSign = new StorageSign(contents, logger); StorageSign itemSign = new StorageSign(item, logger); - logger.trace("cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); + logger.trace( + "cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); return contentSign.isEmpty() == itemSign.isEmpty(); } } @@ -789,15 +810,16 @@ public static boolean isStorageSign(ItemStack item, Logger logger) { return false; } - boolean isSignPost = SignDefinition.sign_materials.contains(item.getType()); + boolean isSignPost = SignDefinition.sign_materials.contains(item.getType()); logger.trace(" isSignPost:" + isSignPost); if (isSignPost) { // ないと思うけど、metaがなかったら比較できないのでfalse. - if(Objects.isNull(item.getItemMeta())) { + if (Objects.isNull(item.getItemMeta())) { return false; } - logger.trace(" !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); + logger.trace( + " !item.getItemMeta().hasDisplayName(): " + !item.getItemMeta().hasDisplayName()); if (!item.getItemMeta().hasDisplayName()) { logger.debug(" itemMeta hasn't displayName."); return false; @@ -823,7 +845,7 @@ public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" isStorageSign(Block):Start"); boolean isSignPost = SignDefinition.sign_materials.contains(block.getType()); - boolean isWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); + boolean isWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); logger.trace(" block.getType(): " + block.getType()); logger.trace(" isSignPost(block.getType()): " + isSignPost); logger.trace(" isWallSign(block.getType()) :" + isWallSign); From 8ebc9f000a64408dce5c307df705a6019ae526fb Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 14 Jun 2024 23:00:22 +0900 Subject: [PATCH 64/82] =?UTF-8?q?1.21.0=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E4=B8=8D=E5=90=89=E3=81=AA=E7=93=B6=E5=8F=8E?= =?UTF-8?q?=E7=B4=8D=E7=94=A8=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF=E4=BB=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../java/wacky/storagesign/StorageSign.java | 52 +++++++++++++++++-- .../wacky/storagesign/StorageSignCore.java | 10 ++++ src/main/resources/plugin.yml | 2 +- 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b6bd608..80b086b 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.5.5 + 1.6.0 jar StorageSign @@ -54,7 +54,7 @@ org.spigotmc spigot-api - 1.20.6-R0.1-SNAPSHOT + 1.21-R0.1-SNAPSHOT org.junit.jupiter diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 16963f7..ab9d7ec 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -11,6 +11,7 @@ import static org.bukkit.Material.GREEN_DYE; import static org.bukkit.Material.LINGERING_POTION; import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.OMINOUS_BOTTLE; import static org.bukkit.Material.POTION; import static org.bukkit.Material.RED_DYE; import static org.bukkit.Material.SMOOTH_STONE_SLAB; @@ -39,6 +40,7 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.OminousBottleMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; @@ -72,6 +74,7 @@ public class StorageSign { entry("ROSE_RED", RED_DYE), entry("DANDELION_YELLOW", YELLOW_DYE), entry("CACTUS_GREEN", GREEN_DYE), + entry("OMINOUS_BOTTLE", OMINOUS_BOTTLE), entry("ENCHBOOK", ENCHANTED_BOOK), entry("SPOTION", SPLASH_POTION), entry("LPOTION", LINGERING_POTION) @@ -137,7 +140,12 @@ public StorageSign(ItemStack item, Logger logger) { logger.debug("StorageSign isn't Empty"); this.mat = getMaterial(str[0].split(":")[0]); - if (this.mat == ENCHANTED_BOOK) { + if (this.mat == OMINOUS_BOTTLE) { + logger.debug("StorageSign have OMINOUS_BOTTLE"); + EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); + this.damage = Short.valueOf(str[0].split(":")[1]); + + }else if (this.mat == ENCHANTED_BOOK) { logger.debug("StorageSign have ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); this.damage = ei.getDamage(); @@ -182,7 +190,11 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { this.mat = getMaterial(line2[0]); this.isEmpty = (this.mat == null || this.mat == AIR); - if (this.mat == ENCHANTED_BOOK) { + if (this.mat == OMINOUS_BOTTLE) { + logger.debug("OMINOUS_BOTTLE"); + this.damage = Short.valueOf(line2[1]); + + } else if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); this.damage = ei.getDamage(); @@ -377,6 +389,10 @@ protected String getShortName() { && this.damage == 1) { logger.debug(SignMatStringDefinition.asMaterialStringMap().get(this.mat)); return SignMatStringDefinition.asMaterialStringMap().get(this.mat); + } else if (OMINOUS_BOTTLE.equals(this.mat)) { + logger.debug("OMINOUS_BOTTLE + data"); + return this.mat +":" + this.damage; + } else if (ENCHANTED_BOOK.equals(this.mat)) { logger.debug("ENCHBOOK + data"); return "ENCHBOOK:" + EnchantInfo.getShortType(this.ench) + ":" + this.damage; @@ -428,6 +444,11 @@ public ItemStack getStorageSign() { logger.debug("Empty"); return emptySign(this.smat, this.stack); + } else if (OMINOUS_BOTTLE.equals(this.mat)) { + logger.debug("OMINOUS_BOTTLE"); + list.add(this.mat.toString() + ":" + this.damage + " " + + this.amount); + } else if (ENCHANTED_BOOK.equals(this.mat)) { logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " @@ -543,6 +564,19 @@ public ItemStack getContents() { return emptySign(this.mat); } + } else if (this.mat == OMINOUS_BOTTLE) { + logger.debug("OMINOUS_BOTTLE"); + ItemStack item = new ItemStack(this.mat); + if(item.getMaxStackSize() <= this.amount) { + item.setAmount(item.getMaxStackSize()); + } else { + item.setAmount(this.amount); + } + OminousBottleMeta ominousMeta = (OminousBottleMeta) item.getItemMeta(); + Objects.requireNonNull(ominousMeta).setAmplifier(this.damage); + item.setItemMeta(ominousMeta); + + return item; } else if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); ItemStack item = new ItemStack(this.mat, 1); @@ -615,7 +649,19 @@ public boolean isSimilar(ItemStack item) { } - if (this.mat == ENCHANTED_BOOK && item.getType() == ENCHANTED_BOOK) { + if (this.mat == OMINOUS_BOTTLE && item.getType() == OMINOUS_BOTTLE) { + logger.debug("OMINOUS_BOTTLE"); + OminousBottleMeta omiItemMeta = (OminousBottleMeta) item.getItemMeta(); + if (Objects.isNull(omiItemMeta)) { + return false; + } + if(omiItemMeta.hasAmplifier() && ((short)omiItemMeta.getAmplifier()) == this.damage) { + return true; + } else if(!omiItemMeta.hasAmplifier() && this.damage == 0) { + return true; + } + + } else if (this.mat == ENCHANTED_BOOK && item.getType() == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 03299e3..b4b0f67 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -53,6 +53,7 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.FireworkMeta; +import org.bukkit.inventory.meta.OminousBottleMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; @@ -264,6 +265,15 @@ public void onPlayerInteract(PlayerInteractEvent event) { PotionType pot = potionMeta.getBasePotionType(); storageSign.setDamage(Short.parseShort(PotionInfo.getPotionTypeCode(pot))); storageSign.setPotion(pot); + } else if (mat == Material.OMINOUS_BOTTLE) { + logger.debug("main hand has OMINOUS_BOTTLE."); + OminousBottleMeta ominousMeta = (OminousBottleMeta) itemMainHand.getItemMeta(); + storageSign.setMaterial(mat); + if(ominousMeta.hasAmplifier()) { + storageSign.setDamage((short)ominousMeta.getAmplifier()); + } else { + storageSign.setDamage((short)0); + } } else if (mat == Material.ENCHANTED_BOOK) { logger.debug("main hand has EnchantedBook."); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) itemMainHand.getItemMeta(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 83dc977..7089001 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ main: wacky.storagesign.StorageSignCore version: ${version} description: StorageSign Plugin for Spigot. You can 2billion items storeing to wooden sign. author: wackyls6 -api-version: 1.20.6 +api-version: 1.21.0 depend: [Logger] softdepend: [WorldGuard] website: https://github.com/wackyls6/StorageSign From 8e0d3fc8984f38a71f5b479d87e2c8099559fafb Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 3 Jul 2024 21:56:58 +0900 Subject: [PATCH 65/82] =?UTF-8?q?1.21.0=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E4=B8=8D=E5=90=89=E3=81=AA=E7=93=B6=E5=8F=8E?= =?UTF-8?q?=E7=B4=8D=E7=94=A8=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF=E6=9C=AC?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wacky/storagesign/OmniousBottleInfo.java | 70 +++++++++++++++++++ .../java/wacky/storagesign/StorageSign.java | 64 +++++++++-------- .../wacky/storagesign/StorageSignCore.java | 7 +- 3 files changed, 105 insertions(+), 36 deletions(-) create mode 100644 src/main/java/wacky/storagesign/OmniousBottleInfo.java diff --git a/src/main/java/wacky/storagesign/OmniousBottleInfo.java b/src/main/java/wacky/storagesign/OmniousBottleInfo.java new file mode 100644 index 0000000..711c5f1 --- /dev/null +++ b/src/main/java/wacky/storagesign/OmniousBottleInfo.java @@ -0,0 +1,70 @@ +package wacky.storagesign; + +import java.util.Objects; +import lombok.Getter; +import org.apache.logging.log4j.LogManager; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.OminousBottleMeta; + +/** + * 不吉な瓶の情報クラス. + * */ +@Getter +public class OmniousBottleInfo { + + /** + * 不吉な瓶のマテリアル. + * */ + private final Material material; + + /** + * 不吉な瓶のマテリアル. + * */ + private final short amplifier; + + public OmniousBottleInfo(Material material, String[] itemStr){ + this.material = material; + this.amplifier = Short.parseShort(itemStr[1]); + } + + public static ItemStack GetItemStack(Material mat, int amount, short damage){ + ItemStack item = new ItemStack(mat); + item.setAmount(Math.min(amount, item.getMaxStackSize())); + OminousBottleMeta ominousMeta = (OminousBottleMeta) item.getItemMeta(); + Objects.requireNonNull(ominousMeta).setAmplifier(damage); + item.setItemMeta(ominousMeta); + + return item; + } + + public static short GetAmplifierWithMeta(ItemMeta meta){ + OminousBottleMeta ominousMeta = (OminousBottleMeta) meta; + if(ominousMeta.hasAmplifier()) { + return (short)ominousMeta.getAmplifier(); + } else { + return 0; + } + } + + public static String GetTagData(Material mat, short damage, int amount){ + return mat.toString() + ":" + damage + " " + amount; + } + + public static String GetSignString(Material mat, short damage){ + return mat +":" + damage; + } + + public static boolean IsSimilar(ItemMeta meta, short damage){ + OminousBottleMeta omiItemMeta = (OminousBottleMeta) meta; + if (Objects.isNull(omiItemMeta)) { + return false; + } + if(omiItemMeta.hasAmplifier() && ((short)omiItemMeta.getAmplifier()) == damage) { + return true; + } else { + return (!omiItemMeta.hasAmplifier() && damage == 0); + } + } +} diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index ab9d7ec..968db30 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import org.apache.logging.log4j.LogManager; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; @@ -40,7 +41,6 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.OminousBottleMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; @@ -79,6 +79,8 @@ public class StorageSign { entry("SPOTION", SPLASH_POTION), entry("LPOTION", LINGERING_POTION) ); + private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( + StorageSign.class); /** * 看板のアイテム素材. @@ -142,9 +144,11 @@ public StorageSign(ItemStack item, Logger logger) { if (this.mat == OMINOUS_BOTTLE) { logger.debug("StorageSign have OMINOUS_BOTTLE"); - EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); - this.damage = Short.valueOf(str[0].split(":")[1]); - + logger.trace("this.mat: " + this.mat); + logger.trace("str[0].split(\":\"): " + str[0].split(":")); + OmniousBottleInfo oi = new OmniousBottleInfo(this.mat, str[0].split(":")); + this.damage = oi.getAmplifier(); + logger.trace("this.damage: " + this.damage); }else if (this.mat == ENCHANTED_BOOK) { logger.debug("StorageSign have ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, str[0].split(":"), logger); @@ -192,8 +196,11 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { if (this.mat == OMINOUS_BOTTLE) { logger.debug("OMINOUS_BOTTLE"); - this.damage = Short.valueOf(line2[1]); - + OmniousBottleInfo oi = new OmniousBottleInfo(this.mat, line2); + logger.trace("this.mat: " + this.mat); + logger.trace("line2: " + line2); + this.damage = oi.getAmplifier(); + logger.trace("this.damage: " + this.damage); } else if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); EnchantInfo ei = new EnchantInfo(this.mat, line2, logger); @@ -391,7 +398,11 @@ protected String getShortName() { return SignMatStringDefinition.asMaterialStringMap().get(this.mat); } else if (OMINOUS_BOTTLE.equals(this.mat)) { logger.debug("OMINOUS_BOTTLE + data"); - return this.mat +":" + this.damage; + logger.trace("this.mat: " + this.mat); + logger.trace("this.damage: " + this.damage); + String singString = OmniousBottleInfo.GetSignString(this.mat, this.damage); + logger.trace("singString: " + singString); + return singString; } else if (ENCHANTED_BOOK.equals(this.mat)) { logger.debug("ENCHBOOK + data"); @@ -446,9 +457,12 @@ public ItemStack getStorageSign() { } else if (OMINOUS_BOTTLE.equals(this.mat)) { logger.debug("OMINOUS_BOTTLE"); - list.add(this.mat.toString() + ":" + this.damage + " " - + this.amount); - + logger.trace("this.mat: " + this.mat); + logger.trace("this.damage: " + this.damage); + logger.trace("this.amount: " + this.amount); + String tagData = OmniousBottleInfo.GetTagData(this.mat, this.damage, this.amount); + logger.trace("tagData: " + tagData); + list.add(tagData); } else if (ENCHANTED_BOOK.equals(this.mat)) { logger.debug("ENCHANTED_BOOK"); list.add(this.mat.toString() + ":" + this.ench.getKey().getKey() + ":" + this.damage + " " @@ -566,16 +580,11 @@ public ItemStack getContents() { } else if (this.mat == OMINOUS_BOTTLE) { logger.debug("OMINOUS_BOTTLE"); - ItemStack item = new ItemStack(this.mat); - if(item.getMaxStackSize() <= this.amount) { - item.setAmount(item.getMaxStackSize()); - } else { - item.setAmount(this.amount); - } - OminousBottleMeta ominousMeta = (OminousBottleMeta) item.getItemMeta(); - Objects.requireNonNull(ominousMeta).setAmplifier(this.damage); - item.setItemMeta(ominousMeta); - + logger.trace("this.mat: " + this.mat); + logger.trace("this.damage: " + this.damage); + logger.trace("this.amount: " + this.amount); + ItemStack item = OmniousBottleInfo.GetItemStack(this.mat, this.amount, this.damage); + logger.trace("tagData: " + item); return item; } else if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); @@ -651,16 +660,11 @@ public boolean isSimilar(ItemStack item) { if (this.mat == OMINOUS_BOTTLE && item.getType() == OMINOUS_BOTTLE) { logger.debug("OMINOUS_BOTTLE"); - OminousBottleMeta omiItemMeta = (OminousBottleMeta) item.getItemMeta(); - if (Objects.isNull(omiItemMeta)) { - return false; - } - if(omiItemMeta.hasAmplifier() && ((short)omiItemMeta.getAmplifier()) == this.damage) { - return true; - } else if(!omiItemMeta.hasAmplifier() && this.damage == 0) { - return true; - } - + logger.trace("item.getItemMeta(): " + item.getItemMeta()); + logger.trace("this.damage: " + this.damage); + boolean isSimilar = OmniousBottleInfo.IsSimilar(item.getItemMeta(), this.damage); + logger.trace("isSimilar: " + isSimilar); + return isSimilar; } else if (this.mat == ENCHANTED_BOOK && item.getType() == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index b4b0f67..f3831e7 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -267,13 +267,8 @@ public void onPlayerInteract(PlayerInteractEvent event) { storageSign.setPotion(pot); } else if (mat == Material.OMINOUS_BOTTLE) { logger.debug("main hand has OMINOUS_BOTTLE."); - OminousBottleMeta ominousMeta = (OminousBottleMeta) itemMainHand.getItemMeta(); storageSign.setMaterial(mat); - if(ominousMeta.hasAmplifier()) { - storageSign.setDamage((short)ominousMeta.getAmplifier()); - } else { - storageSign.setDamage((short)0); - } + storageSign.setDamage(OmniousBottleInfo.GetAmplifierWithMeta(itemMainHand.getItemMeta())); } else if (mat == Material.ENCHANTED_BOOK) { logger.debug("main hand has EnchantedBook."); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) itemMainHand.getItemMeta(); From 23f9132050669d6db21118fa7993363418822fa1 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 5 Jul 2024 16:39:02 +0900 Subject: [PATCH 66/82] =?UTF-8?q?1.21.0=E8=BF=BD=E5=8A=A0=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E6=94=B9=E4=BF=AE=20plugins=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=AB=E3=83=80=E3=83=BC=E3=81=AB=E3=82=AA=E3=83=BC=E3=83=88?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E6=A9=9F=E8=83=BD=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- pom.xml | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2e54df2..69e5f2c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ bin setblock pluginsb pluginss -/target/ \ No newline at end of file +/target/ +/project.properties diff --git a/pom.xml b/pom.xml index 80b086b..cb3fd7b 100644 --- a/pom.xml +++ b/pom.xml @@ -32,10 +32,47 @@ org.apache.maven.plugins maven-resources-plugin - 2.7 + 3.2.0 ${project.build.sourceEncoding} + + + copy-files-on-build + package + + copy-resources + + + ${RESOURCE-PATH} + + + ${basedir}/target + ${project.artifactId}-${project.version}.jar + false + + + + + + + + org.codehaus.mojo + properties-maven-plugin + 1.1.0 + + + initialize + + read-project-properties + + + + project.properties + + + +
From a1d82cc6cc782921742df436790df78e4ff734d2 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 5 Jul 2024 16:41:12 +0900 Subject: [PATCH 67/82] =?UTF-8?q?1.21.0=E8=BF=BD=E5=8A=A0=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E6=94=B9=E4=BF=AE=20=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index cb3fd7b..379d8be 100644 --- a/pom.xml +++ b/pom.xml @@ -44,6 +44,7 @@ copy-resources + ${RESOURCE-PATH} From a8fa593a583d0d9ee7760829c67621dda576fee7 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 4 Dec 2024 21:50:01 +0900 Subject: [PATCH 68/82] =?UTF-8?q?1.21.4=E6=94=B9=E4=BF=AE=20=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=921.7.0=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=20=E3=83=9A=E3=83=BC=E3=83=AB=E3=82=AA?= =?UTF-8?q?=E3=83=BC=E3=82=AF=E3=82=B9=E3=83=88=E3=83=AC=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=82=B5=E3=82=A4=E3=83=B3=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- .../storagesign/signdefinition/SignDefinition.java | 10 +++++++--- .../signdefinition/SignMatStringDefinition.java | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 379d8be..3c1a2ad 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.6.0 + 1.7.0 jar StorageSign @@ -92,7 +92,7 @@ org.spigotmc spigot-api - 1.21-R0.1-SNAPSHOT + 1.21.4-R0.1-SNAPSHOT org.junit.jupiter diff --git a/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java b/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java index 3ea9d0c..5fc2910 100644 --- a/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java +++ b/src/main/java/wacky/storagesign/signdefinition/SignDefinition.java @@ -19,6 +19,8 @@ import static org.bukkit.Material.MANGROVE_WALL_SIGN; import static org.bukkit.Material.OAK_SIGN; import static org.bukkit.Material.OAK_WALL_SIGN; +import static org.bukkit.Material.PALE_OAK_SIGN; +import static org.bukkit.Material.PALE_OAK_WALL_SIGN; import static org.bukkit.Material.SPRUCE_SIGN; import static org.bukkit.Material.SPRUCE_WALL_SIGN; import static org.bukkit.Material.WARPED_SIGN; @@ -37,12 +39,12 @@ public class SignDefinition { * 看板種類が追加されたら追加する. */ public static final Set sign_materials = Collections.unmodifiableSet( - EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN)); + EnumSet.of(OAK_SIGN, SPRUCE_SIGN, BIRCH_SIGN, JUNGLE_SIGN, ACACIA_SIGN, DARK_OAK_SIGN, CRIMSON_SIGN, WARPED_SIGN, MANGROVE_SIGN, CHERRY_SIGN, BAMBOO_SIGN, PALE_OAK_SIGN)); /** * 看板と扱われるアイテム一覧. * 看板種類が追加されたら追加する. */ - public static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN)); + public static final Set wall_sign_materials = Collections.unmodifiableSet(EnumSet.of(OAK_WALL_SIGN, SPRUCE_WALL_SIGN, BIRCH_WALL_SIGN, JUNGLE_WALL_SIGN, ACACIA_WALL_SIGN, DARK_OAK_WALL_SIGN, CRIMSON_WALL_SIGN, WARPED_WALL_SIGN, MANGROVE_WALL_SIGN, CHERRY_WALL_SIGN, BAMBOO_WALL_SIGN, PALE_OAK_WALL_SIGN)); /** * 壁掛け看板と通常看板の変換一覧. * 看板種類が追加されたら追加する. @@ -58,6 +60,8 @@ public class SignDefinition { entry(WARPED_WALL_SIGN, WARPED_SIGN), entry(MANGROVE_WALL_SIGN, MANGROVE_SIGN), entry(CHERRY_WALL_SIGN, CHERRY_SIGN), - entry(BAMBOO_WALL_SIGN, BAMBOO_SIGN) + entry(BAMBOO_WALL_SIGN, BAMBOO_SIGN), + entry(PALE_OAK_WALL_SIGN , PALE_OAK_SIGN) + ); } diff --git a/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java b/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java index 4f751b2..fc2a633 100644 --- a/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java +++ b/src/main/java/wacky/storagesign/signdefinition/SignMatStringDefinition.java @@ -10,6 +10,7 @@ import static org.bukkit.Material.JUNGLE_SIGN; import static org.bukkit.Material.MANGROVE_SIGN; import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.PALE_OAK_SIGN; import static org.bukkit.Material.SPRUCE_SIGN; import static org.bukkit.Material.WARPED_SIGN; @@ -33,7 +34,8 @@ public enum SignMatStringDefinition { WARPED_SS("WarpedStorageSign", WARPED_SIGN), MANGROVE_SS("MangroveStorageSign", MANGROVE_SIGN), CHERRY_SS("CherryStorageSign", CHERRY_SIGN), - BAMBOO_SS("BambooStorageSign", BAMBOO_SIGN); + BAMBOO_SS("BambooStorageSign", BAMBOO_SIGN), + PALEOAK_SS("PaleOakStorageSign", PALE_OAK_SIGN); private String materialString; private Material material; From 100230f23e8717ad6b31ab26d58c620a60f5d913 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 5 Dec 2024 22:27:12 +0900 Subject: [PATCH 69/82] =?UTF-8?q?1.21.4=E6=94=B9=E4=BF=AE=20=E4=B8=8D?= =?UTF-8?q?=E5=90=89=E3=81=AA=E6=97=97=E3=81=8C=E9=AF=96=E8=B5=B7=E5=8B=95?= =?UTF-8?q?=E7=9B=B4=E5=BE=8C=E5=87=BA=E3=81=9B=E3=81=AA=E3=81=84=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSignCore.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index f3831e7..e7a1812 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -4,9 +4,11 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.logging.Level; import org.apache.logging.log4j.LogManager; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.GameMode; @@ -63,10 +65,12 @@ public class StorageSignCore extends JavaPlugin implements Listener { private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( StorageSignCore.class); - static BannerMeta ominousBannerMeta; + public static BannerMeta ominousBannerMeta; public Logger logger; private boolean _fallingBlockSS; + private static final String ominousBannerComponent = "minecraft:white_banner[minecraft:item_name='{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}',minecraft:hide_additional_tooltip={},minecraft:banner_patterns=[{color: \"cyan\", pattern: \"minecraft:rhombus\"}, {color: \"light_gray\", pattern: \"minecraft:stripe_bottom\"}, {color: \"gray\", pattern: \"minecraft:stripe_center\"}, {color: \"light_gray\", pattern: \"minecraft:border\"}, {color: \"black\", pattern: \"minecraft:stripe_middle\"}, {color: \"light_gray\", pattern: \"minecraft:half_horizontal\"}, {color: \"light_gray\", pattern: \"minecraft:circle\"}, {color: \"black\", pattern: \"minecraft:border\"}]]"; + @Override public void onEnable() { // ConfigLoader初期化 @@ -119,6 +123,9 @@ public void onEnable() { } _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); + ItemStack stack = Bukkit.getItemFactory().createItemStack(ominousBannerComponent); + ominousBannerMeta = (BannerMeta) stack.getItemMeta(); + logger.debug("★onEnable:End"); } From a6344adb22f82f0ac3dcbad22ee9424c2df45625 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 29 Dec 2024 21:29:17 +0900 Subject: [PATCH 70/82] =?UTF-8?q?1.21.0=E6=94=B9=E4=BF=AE=201.21.3Paper?= =?UTF-8?q?=E3=81=A7=E4=B8=8D=E5=90=89=E3=81=AA=E7=93=B6=E3=81=8C=E3=82=A2?= =?UTF-8?q?=E3=82=A4=E3=83=86=E3=83=A0=E7=99=BB=E9=8C=B2=E5=BE=8C=E4=BB=95?= =?UTF-8?q?=E8=88=9E=E3=81=88=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20=E4=B8=8D=E5=90=89=E3=81=AA=E6=97=97=E3=81=8C?= =?UTF-8?q?=E9=AF=96=E8=B5=B7=E5=8B=95=E7=9B=B4=E5=BE=8C=E5=87=BA=E3=81=9B?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 ++++++++++++- .../java/wacky/storagesign/OmniousBottleInfo.java | 6 +++++- .../java/wacky/storagesign/StorageSignCore.java | 6 ++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 379d8be..6a72300 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.6.0 + 1.6.1 jar StorageSign @@ -10,6 +10,10 @@ spigotmc https://hub.spigotmc.org/nexus/content/repositories/snapshots + + papermc + https://repo.papermc.io/repository/maven-public/ + @@ -94,6 +98,13 @@ spigot-api 1.21-R0.1-SNAPSHOT + org.junit.jupiter junit-jupiter diff --git a/src/main/java/wacky/storagesign/OmniousBottleInfo.java b/src/main/java/wacky/storagesign/OmniousBottleInfo.java index 711c5f1..3b95b6a 100644 --- a/src/main/java/wacky/storagesign/OmniousBottleInfo.java +++ b/src/main/java/wacky/storagesign/OmniousBottleInfo.java @@ -31,7 +31,11 @@ public OmniousBottleInfo(Material material, String[] itemStr){ public static ItemStack GetItemStack(Material mat, int amount, short damage){ ItemStack item = new ItemStack(mat); - item.setAmount(Math.min(amount, item.getMaxStackSize())); + int amt = Math.min(amount, item.getMaxStackSize()); + // Paperでamtに0を入れるとなぜかアイテムスタックが消えてしまうため、0の場合は設定しない + if(amt != 0) { + item.setAmount(amt); + } OminousBottleMeta ominousMeta = (OminousBottleMeta) item.getItemMeta(); Objects.requireNonNull(ominousMeta).setAmplifier(damage); item.setItemMeta(ominousMeta); diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index f3831e7..6c409bc 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -7,6 +7,7 @@ import java.util.Set; import java.util.logging.Level; import org.apache.logging.log4j.LogManager; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.GameMode; @@ -67,6 +68,8 @@ public class StorageSignCore extends JavaPlugin implements Listener { public Logger logger; private boolean _fallingBlockSS; + private static final String ominousBannerComponent = "minecraft:white_banner[minecraft:item_name='{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}',minecraft:hide_additional_tooltip={},minecraft:banner_patterns=[{color: \"cyan\", pattern: \"minecraft:rhombus\"}, {color: \"light_gray\", pattern: \"minecraft:stripe_bottom\"}, {color: \"gray\", pattern: \"minecraft:stripe_center\"}, {color: \"light_gray\", pattern: \"minecraft:border\"}, {color: \"black\", pattern: \"minecraft:stripe_middle\"}, {color: \"light_gray\", pattern: \"minecraft:half_horizontal\"}, {color: \"light_gray\", pattern: \"minecraft:circle\"}, {color: \"black\", pattern: \"minecraft:border\"}]]"; + @Override public void onEnable() { // ConfigLoader初期化 @@ -119,6 +122,9 @@ public void onEnable() { } _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); + ItemStack stack = Bukkit.getItemFactory().createItemStack(ominousBannerComponent); + ominousBannerMeta = (BannerMeta) stack.getItemMeta(); + logger.debug("★onEnable:End"); } From d85b824a878c3ea73eb1a649e6787f98e90b618f Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Wed, 22 Jan 2025 20:40:10 +0900 Subject: [PATCH 71/82] 1.21.0 Bugfix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不吉な瓶をスニークで1つだけ取得しようとしたときに64個を取得できてしまう不具合を修正 --- .../wacky/storagesign/OmniousBottleInfo.java | 8 +++++-- .../java/wacky/storagesign/StorageSign.java | 21 +++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/wacky/storagesign/OmniousBottleInfo.java b/src/main/java/wacky/storagesign/OmniousBottleInfo.java index 3b95b6a..1086710 100644 --- a/src/main/java/wacky/storagesign/OmniousBottleInfo.java +++ b/src/main/java/wacky/storagesign/OmniousBottleInfo.java @@ -31,8 +31,12 @@ public OmniousBottleInfo(Material material, String[] itemStr){ public static ItemStack GetItemStack(Material mat, int amount, short damage){ ItemStack item = new ItemStack(mat); - int amt = Math.min(amount, item.getMaxStackSize()); - // Paperでamtに0を入れるとなぜかアイテムスタックが消えてしまうため、0の場合は設定しない + int amt = Math.min(amount, 1); + /* + * NOTE: + * Paperでamtに0を入れるとなぜかアイテムスタックが消えてしまうため、 + * 0の場合は設定しない。 + */ if(amt != 0) { item.setAmount(amt); } diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 968db30..a7007d3 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -51,6 +51,9 @@ * StrageSignの実体クラスです. */ public class StorageSign { + + /** ItemStackのデフォルト個数 */ + private static final int DEFAULT_ITEM_AMOUNT = 1; private static final String storage_sign_name = "StorageSign"; @@ -564,14 +567,14 @@ public ItemStack getContents() { if (this.mat == STONE_SLAB) { logger.debug("STONE_SLAB"); // ダメージ値0にする - return new ItemStack(this.mat, 1); + return new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); } else if (SignDefinition.sign_materials.contains(this.mat)) { logger.debug("any SIGN"); if (this.damage == 0) { logger.debug("damage is 0"); - return new ItemStack(this.mat, 1); + return new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); } else { logger.debug("damage isn't 0"); @@ -583,12 +586,12 @@ public ItemStack getContents() { logger.trace("this.mat: " + this.mat); logger.trace("this.damage: " + this.damage); logger.trace("this.amount: " + this.amount); - ItemStack item = OmniousBottleInfo.GetItemStack(this.mat, this.amount, this.damage); + ItemStack item = OmniousBottleInfo.GetItemStack(this.mat, DEFAULT_ITEM_AMOUNT, this.damage); logger.trace("tagData: " + item); return item; } else if (this.mat == ENCHANTED_BOOK) { logger.debug("ENCHANTED_BOOK"); - ItemStack item = new ItemStack(this.mat, 1); + ItemStack item = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); EnchantmentStorageMeta enchantMeta = (EnchantmentStorageMeta) item.getItemMeta(); Objects.requireNonNull(enchantMeta).addStoredEnchant(this.ench, this.damage, true); @@ -599,7 +602,7 @@ public ItemStack getContents() { } else if (potion_materials.contains(this.mat)) { logger.debug("any POTION"); - ItemStack item = new ItemStack(this.mat, 1); + ItemStack item = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); PotionMeta potionMeta = (PotionMeta) item.getItemMeta(); Objects.requireNonNull(potionMeta).setBasePotionType(this.pot); item.setItemMeta(potionMeta); @@ -608,7 +611,7 @@ public ItemStack getContents() { } else if (this.mat == FIREWORK_ROCKET) { logger.debug("FIREWORK_ROCKET"); - ItemStack item = new ItemStack(this.mat, 1); + ItemStack item = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); Objects.requireNonNull(fireworkMeta).setPower(this.damage); item.setItemMeta(fireworkMeta); @@ -618,7 +621,7 @@ public ItemStack getContents() { } else if (this.mat == WHITE_BANNER && this.damage == 8) { logger.debug("WHITE_BANNER & damage is 8"); - ItemStack item = new ItemStack(this.mat, 1); + ItemStack item = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); // どこかからコピー item.setItemMeta(StorageSignCore.ominousBannerMeta); @@ -629,10 +632,10 @@ public ItemStack getContents() { if (this.damage == 0) { logger.debug("damage is 0"); // 大半はダメージなくなった - return new ItemStack(this.mat, 1); + return new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); } - var itemStack = new ItemStack(this.mat, 1); + var itemStack = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); var meta = itemStack.getItemMeta(); if (meta instanceof Damageable dam) { logger.debug("meta instanceof Damageable dam"); From e202db60fbaffc9a447e1c3da614d10e424392f0 Mon Sep 17 00:00:00 2001 From: cloud5414 Date: Wed, 22 Jan 2025 20:50:28 +0900 Subject: [PATCH 72/82] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E4=BF=AE=E6=AD=A3=E6=88=BB=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/OmniousBottleInfo.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/wacky/storagesign/OmniousBottleInfo.java b/src/main/java/wacky/storagesign/OmniousBottleInfo.java index 1086710..3b95b6a 100644 --- a/src/main/java/wacky/storagesign/OmniousBottleInfo.java +++ b/src/main/java/wacky/storagesign/OmniousBottleInfo.java @@ -31,12 +31,8 @@ public OmniousBottleInfo(Material material, String[] itemStr){ public static ItemStack GetItemStack(Material mat, int amount, short damage){ ItemStack item = new ItemStack(mat); - int amt = Math.min(amount, 1); - /* - * NOTE: - * Paperでamtに0を入れるとなぜかアイテムスタックが消えてしまうため、 - * 0の場合は設定しない。 - */ + int amt = Math.min(amount, item.getMaxStackSize()); + // Paperでamtに0を入れるとなぜかアイテムスタックが消えてしまうため、0の場合は設定しない if(amt != 0) { item.setAmount(amt); } From 2c4c3e42b82ea2b6516a8079ead0dd79086c86e9 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 1 Apr 2025 22:45:06 +0900 Subject: [PATCH 73/82] =?UTF-8?q?1.21.5=E6=94=B9=E4=BF=AE=20SS=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E6=99=82=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E8=90=BD=E3=81=A1=E3=81=97=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=81=AE=E8=A7=A3=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- src/main/java/wacky/storagesign/ConfigLoader.java | 9 +++++++++ .../java/wacky/storagesign/StorageSignCore.java | 15 ++++++++++++--- src/main/resources/config.yml | 1 + 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 3c1a2ad..caf61ef 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.7.0 + 1.8.0 jar StorageSign @@ -92,7 +92,7 @@ org.spigotmc spigot-api - 1.21.4-R0.1-SNAPSHOT + 1.21.5-R0.1-SNAPSHOT org.junit.jupiter diff --git a/src/main/java/wacky/storagesign/ConfigLoader.java b/src/main/java/wacky/storagesign/ConfigLoader.java index aa36839..950a712 100644 --- a/src/main/java/wacky/storagesign/ConfigLoader.java +++ b/src/main/java/wacky/storagesign/ConfigLoader.java @@ -141,4 +141,13 @@ public static boolean getNoBud() { public static boolean getFallingBlockItemSs() { return fileConfig.getBoolean("falling-block-itemSS"); } + + /** + * banner-debugの値を取得する. + * + * @return boolean + */ + public static boolean getBannerDebug() { + return fileConfig.getBoolean("banner-debug"); + } } diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index e7a1812..bd0bf86 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -69,7 +69,7 @@ public class StorageSignCore extends JavaPlugin implements Listener { public Logger logger; private boolean _fallingBlockSS; - private static final String ominousBannerComponent = "minecraft:white_banner[minecraft:item_name='{\"color\":\"gold\",\"translate\":\"block.minecraft.ominous_banner\"}',minecraft:hide_additional_tooltip={},minecraft:banner_patterns=[{color: \"cyan\", pattern: \"minecraft:rhombus\"}, {color: \"light_gray\", pattern: \"minecraft:stripe_bottom\"}, {color: \"gray\", pattern: \"minecraft:stripe_center\"}, {color: \"light_gray\", pattern: \"minecraft:border\"}, {color: \"black\", pattern: \"minecraft:stripe_middle\"}, {color: \"light_gray\", pattern: \"minecraft:half_horizontal\"}, {color: \"light_gray\", pattern: \"minecraft:circle\"}, {color: \"black\", pattern: \"minecraft:border\"}]]"; + private static final String ominousBannerComponent = "minecraft:white_banner[minecraft:banner_patterns=[{color:\"cyan\",pattern:\"minecraft:rhombus\"},{color:\"light_gray\",pattern:\"minecraft:stripe_bottom\"},{color:\"gray\",pattern:\"minecraft:stripe_center\"},{color:\"light_gray\",pattern:\"minecraft:border\"},{color:\"black\",pattern:\"minecraft:stripe_middle\"},{color:\"light_gray\",pattern:\"minecraft:half_horizontal\"},{color:\"light_gray\",pattern:\"minecraft:circle\"},{color:\"black\",pattern:\"minecraft:border\"}],minecraft:item_name={translate:\"block.minecraft.ominous_banner\"},minecraft:rarity=\"uncommon\",minecraft:tooltip_display={hidden_components:[\"minecraft:banner_patterns\"]}]"; @Override public void onEnable() { @@ -123,8 +123,11 @@ public void onEnable() { } _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); - ItemStack stack = Bukkit.getItemFactory().createItemStack(ominousBannerComponent); - ominousBannerMeta = (BannerMeta) stack.getItemMeta(); + // バナーデバッグが入ってる場合は、アイテムスタックを設定しない + if(!ConfigLoader.getBannerDebug()) { + ItemStack stack = Bukkit.getItemFactory().createItemStack(ominousBannerComponent); + ominousBannerMeta = (BannerMeta) stack.getItemMeta(); + } logger.debug("★onEnable:End"); } @@ -158,6 +161,12 @@ public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); Block block; + // デバッグオプション入ってる場合は、バナーのItemMetaを取得する + if(ConfigLoader.getBannerDebug()){ + ItemStack banItem = event.getItem(); + logger.trace("bannerMeta:" + banItem.getItemMeta().getAsString()); + } + logger.trace("event.useInteractedBlock() == Result.DENY :" + (event.useInteractedBlock() == Result.DENY)); logger.trace("event.getAction() == Action.RIGHT_CLICK_AIR:" + (event.getAction() diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 118ade0..a7c6f28 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -15,3 +15,4 @@ max-stack-size: 16 sneak-divide-limit: 34560 no-bud: false falling-block-itemSS: false +banner-debug: false \ No newline at end of file From 8a68d2ebe03c0dcd17f483495155c22072c07376 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 1 Jun 2025 21:03:17 +0900 Subject: [PATCH 74/82] =?UTF-8?q?1.21.5=E8=BF=BD=E5=8A=A0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20Paper=E3=81=A7=E5=8B=95=E4=BD=9C=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=8F=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=E8=A7=A3=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 +++++- .../wacky/storagesign/StorageSignCore.java | 40 +++++++++---------- .../client/paper/PaperSSEvent.java | 38 ++++++++++++++++++ .../client/spigot/SpigotSSEvent.java | 37 +++++++++++++++++ .../common/StorageSignEventCompoment.java | 13 ++++++ 5 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 src/main/java/wacky/storagesign/client/paper/PaperSSEvent.java create mode 100644 src/main/java/wacky/storagesign/client/spigot/SpigotSSEvent.java create mode 100644 src/main/java/wacky/storagesign/common/StorageSignEventCompoment.java diff --git a/pom.xml b/pom.xml index caf61ef..f08a7ae 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.8.0 + 1.7.1 jar StorageSign @@ -10,6 +10,10 @@ spigotmc https://hub.spigotmc.org/nexus/content/repositories/snapshots + + papermc + https://repo.papermc.io/repository/maven-public/ + @@ -94,6 +98,12 @@ spigot-api 1.21.5-R0.1-SNAPSHOT + + io.papermc.paper + paper-api + 1.21.5-R0.1-SNAPSHOT + provided + org.junit.jupiter junit-jupiter diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index bd0bf86..5d59730 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -59,6 +59,8 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; +import wacky.storagesign.client.paper.PaperSSEvent; +import wacky.storagesign.client.spigot.SpigotSSEvent; import wacky.storagesign.signdefinition.SignDefinition; public class StorageSignCore extends JavaPlugin implements Listener { @@ -114,8 +116,24 @@ public void onEnable() { } logger.trace("setEvent"); + boolean isPaper = false; + try { + Class.forName("io.papermc.paper.event.player.PlayerOpenSignEvent"); + isPaper = true; + logger.info("ServerType:Paper"); + } catch (ClassNotFoundException e) { + // Spigotの場合確定で起きるので、無視する + logger.info("ServerType:Spigot"); + } getServer().getPluginManager().registerEvents(this, this); + // Paper専用ハンドラの設定 + if(isPaper) { + getServer().getPluginManager().registerEvents(new PaperSSEvent(), this); + } else { + getServer().getPluginManager().registerEvents(new SpigotSSEvent(), this); + } + logger.trace("no-bud:" + ConfigLoader.getNoBud()); if (ConfigLoader.getNoBud()) { logger.trace("no-bud is True."); @@ -622,28 +640,6 @@ public void onBlockPlace(BlockPlaceEvent event) { logger.debug("★onBlockPlace: End"); } - @EventHandler - public void onPlayerSignOpen(PlayerSignOpenEvent event){ - logger.debug("★onPlayerSignOpen:Start"); - - logger.trace("event.isCancelled(): " + event.isCancelled()); - if (event.isCancelled()) { - logger.debug("★this Event is Cancelled!"); - return; - } - - Block block = event.getSign().getBlock(); - boolean isStorageSign = StorageSign.isStorageSign(block, logger); - logger.trace("isStorageSign: " + isStorageSign); - if (isStorageSign) { - logger.debug("StorageSignEdit Cancel."); - event.setCancelled(true); - } - - logger.debug("★onPlayerSignOpen:End"); - } - - @EventHandler public void onItemMove(InventoryMoveItemEvent event) { logger.debug("★onItemMove: Start"); diff --git a/src/main/java/wacky/storagesign/client/paper/PaperSSEvent.java b/src/main/java/wacky/storagesign/client/paper/PaperSSEvent.java new file mode 100644 index 0000000..e597026 --- /dev/null +++ b/src/main/java/wacky/storagesign/client/paper/PaperSSEvent.java @@ -0,0 +1,38 @@ +package wacky.storagesign.client.paper; + +import com.github.teruteru128.logger.Logger; +import io.papermc.paper.event.player.PlayerOpenSignEvent; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerSignOpenEvent; +import wacky.storagesign.StorageSign; +import wacky.storagesign.common.StorageSignEventCompoment; + +public class PaperSSEvent implements Listener { + private Logger logger; + public void init(Logger logger){ + this.logger = logger; + } + + @EventHandler + public void onPlayerOpenSign(PlayerOpenSignEvent event){ + logger.debug("★onPlayerOpenSign:Start"); + + logger.trace("event.isCancelled(): " + event.isCancelled()); + if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); + return; + } + + Block block = event.getSign().getBlock(); + boolean isStorageSign = StorageSignEventCompoment.isStorageSign(block, logger); + logger.trace("isStorageSign: " + isStorageSign); + if (isStorageSign) { + logger.debug("StorageSignEdit Cancel."); + event.setCancelled(true); + } + + logger.debug("★onPlayerOpenSign:End"); + } +} diff --git a/src/main/java/wacky/storagesign/client/spigot/SpigotSSEvent.java b/src/main/java/wacky/storagesign/client/spigot/SpigotSSEvent.java new file mode 100644 index 0000000..b97eaa7 --- /dev/null +++ b/src/main/java/wacky/storagesign/client/spigot/SpigotSSEvent.java @@ -0,0 +1,37 @@ +package wacky.storagesign.client.spigot; + +import com.github.teruteru128.logger.Logger; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerSignOpenEvent; +import wacky.storagesign.StorageSign; +import wacky.storagesign.common.StorageSignEventCompoment; + +public class SpigotSSEvent implements Listener { + private Logger logger; + public void init(Logger logger){ + this.logger = logger; + } + + @EventHandler + public void onPlayerSignOpen(PlayerSignOpenEvent event){ + logger.debug("★onPlayerSignOpen:Start"); + + logger.trace("event.isCancelled(): " + event.isCancelled()); + if (event.isCancelled()) { + logger.debug("★this Event is Cancelled!"); + return; + } + + Block block = event.getSign().getBlock(); + boolean isStorageSign = StorageSignEventCompoment.isStorageSign(block, logger); + if (isStorageSign) { + logger.debug("StorageSignEdit Cancel."); + event.setCancelled(true); + } + + logger.debug("★onPlayerSignOpen:End"); + } + +} diff --git a/src/main/java/wacky/storagesign/common/StorageSignEventCompoment.java b/src/main/java/wacky/storagesign/common/StorageSignEventCompoment.java new file mode 100644 index 0000000..8c000f4 --- /dev/null +++ b/src/main/java/wacky/storagesign/common/StorageSignEventCompoment.java @@ -0,0 +1,13 @@ +package wacky.storagesign.common; + +import com.github.teruteru128.logger.Logger; +import org.bukkit.block.Block; +import wacky.storagesign.StorageSign; + +public class StorageSignEventCompoment { + public static boolean isStorageSign(Block block, Logger logger) { + boolean isStorageSign = StorageSign.isStorageSign(block, logger); + logger.trace("isStorageSign: " + isStorageSign); + return isStorageSign; + } +} From b6e4862c06dd7e7c38140f54614a4ac9f59c0ccd Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sun, 1 Jun 2025 22:03:32 +0900 Subject: [PATCH 75/82] =?UTF-8?q?1.21.5=E8=BF=BD=E5=8A=A0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=201.21.4=E3=83=96=E3=83=A9=E3=83=B3=E3=83=81=E3=81=AB?= =?UTF-8?q?=E5=85=A5=E3=82=8C=E3=81=A6=E3=81=9F=E6=A9=9F=E8=83=BD=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/wacky/storagesign/StorageSignCore.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 5d59730..a91a45e 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -57,6 +57,7 @@ import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.inventory.meta.OminousBottleMeta; import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.inventory.recipe.CraftingBookCategory; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.potion.PotionType; import wacky.storagesign.client.paper.PaperSSEvent; @@ -111,6 +112,11 @@ public void onEnable() { } else { storageSignRecipe.setIngredient('H', Material.CHEST); } + + // レシピのグループを設定する + storageSignRecipe.setCategory(CraftingBookCategory.MISC); + storageSignRecipe.setGroup("StorageSign"); + getServer().addRecipe(storageSignRecipe); logger.trace(mat + "StorageSign Recipe added."); } From 258c4db31713296702e4c335cba4ba8e03f4a0c5 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 11 Jul 2025 12:49:35 +0900 Subject: [PATCH 76/82] =?UTF-8?q?1.21.5=E8=BF=BD=E5=8A=A0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=201.21.4=E3=81=AE=E6=94=B9=E4=BF=AE=E3=81=AE=E5=8F=8D?= =?UTF-8?q?=E6=98=A0=EF=BC=88=E5=90=8D=E5=89=8D=E4=BB=98=E3=81=8D=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E3=83=AB=E3=82=AB=E3=83=BC=E3=83=9C=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=B9=E5=AF=BE=E5=BF=9C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/wacky/storagesign/StorageSign.java | 15 +++++- .../signdefinition/ShulkerDefinition.java | 47 +++++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/main/java/wacky/storagesign/signdefinition/ShulkerDefinition.java diff --git a/pom.xml b/pom.xml index f08a7ae..62431d4 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.7.1 + 1.7.1.1 jar StorageSign diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index a7007d3..abecbee 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -33,10 +33,12 @@ import org.apache.logging.log4j.LogManager; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.ShulkerBox; import org.bukkit.block.Sign; import org.bukkit.block.sign.Side; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BlockStateMeta; import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.FireworkMeta; @@ -44,6 +46,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionType; import org.bukkit.util.NumberConversions; +import wacky.storagesign.signdefinition.ShulkerDefinition; import wacky.storagesign.signdefinition.SignDefinition; import wacky.storagesign.signdefinition.SignMatStringDefinition; @@ -51,7 +54,7 @@ * StrageSignの実体クラスです. */ public class StorageSign { - + /** ItemStackのデフォルト個数 */ private static final int DEFAULT_ITEM_AMOUNT = 1; @@ -726,6 +729,14 @@ public boolean isSimilar(ItemStack item) { "cSign.isEmpty() == isign.isEmpty(): " + (contentSign.isEmpty() == itemSign.isEmpty())); return contentSign.isEmpty() == itemSign.isEmpty(); } + } else if (this.mat == item.getType() && ShulkerDefinition.shulker_materials.contains(this.mat)) { + // シュルカーボックスの場合は、中身を確認する + BlockStateMeta meta = (BlockStateMeta) item.getItemMeta(); + ShulkerBox shulker = (ShulkerBox) meta.getBlockState(); + if(shulker.getInventory().isEmpty()){ + // 中身が空なら、ItemStackをリセット + item = new ItemStack(item.getType()); + } } // それ以外のItemはisSimilarで判定 @@ -917,4 +928,4 @@ public static boolean isStorageSign(Block block, Logger logger) { logger.debug(" This Block isn't StorageSign."); return false; } -} +} \ No newline at end of file diff --git a/src/main/java/wacky/storagesign/signdefinition/ShulkerDefinition.java b/src/main/java/wacky/storagesign/signdefinition/ShulkerDefinition.java new file mode 100644 index 0000000..b1b9f5e --- /dev/null +++ b/src/main/java/wacky/storagesign/signdefinition/ShulkerDefinition.java @@ -0,0 +1,47 @@ +package wacky.storagesign.signdefinition; + +import static org.bukkit.Material.ACACIA_SIGN; +import static org.bukkit.Material.BAMBOO_SIGN; +import static org.bukkit.Material.BIRCH_SIGN; +import static org.bukkit.Material.BLACK_SHULKER_BOX; +import static org.bukkit.Material.BLUE_SHULKER_BOX; +import static org.bukkit.Material.BROWN_SHULKER_BOX; +import static org.bukkit.Material.CHERRY_SIGN; +import static org.bukkit.Material.CRIMSON_SIGN; +import static org.bukkit.Material.CYAN_SHULKER_BOX; +import static org.bukkit.Material.DARK_OAK_SIGN; +import static org.bukkit.Material.GRAY_SHULKER_BOX; +import static org.bukkit.Material.GREEN_SHULKER_BOX; +import static org.bukkit.Material.JUNGLE_SIGN; +import static org.bukkit.Material.LIGHT_BLUE_SHULKER_BOX; +import static org.bukkit.Material.LIGHT_GRAY_SHULKER_BOX; +import static org.bukkit.Material.LIME_SHULKER_BOX; +import static org.bukkit.Material.MAGENTA_SHULKER_BOX; +import static org.bukkit.Material.MANGROVE_SIGN; +import static org.bukkit.Material.OAK_SIGN; +import static org.bukkit.Material.ORANGE_SHULKER_BOX; +import static org.bukkit.Material.PALE_OAK_SIGN; +import static org.bukkit.Material.PINK_SHULKER_BOX; +import static org.bukkit.Material.PURPLE_SHULKER_BOX; +import static org.bukkit.Material.RED_SHULKER_BOX; +import static org.bukkit.Material.SHULKER_BOX; +import static org.bukkit.Material.SPRUCE_SIGN; +import static org.bukkit.Material.WARPED_SIGN; +import static org.bukkit.Material.WHITE_SHULKER_BOX; +import static org.bukkit.Material.YELLOW_SHULKER_BOX; + +import java.util.Collections; +import java.util.EnumSet; +import java.util.Set; +import org.bukkit.Material; + +public class ShulkerDefinition { + + /** + * 看板と扱われるアイテム一覧. + * 看板種類が追加されたら追加する. + */ + public static final Set shulker_materials = Collections.unmodifiableSet( + EnumSet.of(SHULKER_BOX, WHITE_SHULKER_BOX, ORANGE_SHULKER_BOX, MAGENTA_SHULKER_BOX, LIGHT_BLUE_SHULKER_BOX, YELLOW_SHULKER_BOX, LIME_SHULKER_BOX, PINK_SHULKER_BOX, GRAY_SHULKER_BOX, LIGHT_GRAY_SHULKER_BOX, CYAN_SHULKER_BOX, PURPLE_SHULKER_BOX, BLUE_SHULKER_BOX, BROWN_SHULKER_BOX, GREEN_SHULKER_BOX, RED_SHULKER_BOX, BLACK_SHULKER_BOX)); + +} \ No newline at end of file From 8a63ab5dc5fe2e582980a203e3ebacaff935a114 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 15 Jul 2025 21:13:03 +0900 Subject: [PATCH 77/82] =?UTF-8?q?1.21.5=E8=BF=BD=E5=8A=A0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20NBT=E3=82=BF=E3=82=B0=E3=81=AE=E9=99=A4=E5=8E=BB?= =?UTF-8?q?=EF=BC=88FarmNBT=E5=88=86=E9=9B=A2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../wacky/storagesign/StorageSignCore.java | 13 +- .../config/StorageSignNBTConfig.java | 124 ++++++++++++++++++ src/main/resources/plugin.yml | 4 +- 4 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 src/main/java/wacky/storagesign/config/StorageSignNBTConfig.java diff --git a/pom.xml b/pom.xml index 62431d4..2444797 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.7.1.1 + 1.8.0 jar StorageSign diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index a91a45e..491f281 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -3,6 +3,7 @@ import com.github.teruteru128.logger.Logger; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -62,6 +63,7 @@ import org.bukkit.potion.PotionType; import wacky.storagesign.client.paper.PaperSSEvent; import wacky.storagesign.client.spigot.SpigotSSEvent; +import wacky.storagesign.config.StorageSignNBTConfig; import wacky.storagesign.signdefinition.SignDefinition; public class StorageSignCore extends JavaPlugin implements Listener { @@ -72,8 +74,6 @@ public class StorageSignCore extends JavaPlugin implements Listener { public Logger logger; private boolean _fallingBlockSS; - private static final String ominousBannerComponent = "minecraft:white_banner[minecraft:banner_patterns=[{color:\"cyan\",pattern:\"minecraft:rhombus\"},{color:\"light_gray\",pattern:\"minecraft:stripe_bottom\"},{color:\"gray\",pattern:\"minecraft:stripe_center\"},{color:\"light_gray\",pattern:\"minecraft:border\"},{color:\"black\",pattern:\"minecraft:stripe_middle\"},{color:\"light_gray\",pattern:\"minecraft:half_horizontal\"},{color:\"light_gray\",pattern:\"minecraft:circle\"},{color:\"black\",pattern:\"minecraft:border\"}],minecraft:item_name={translate:\"block.minecraft.ominous_banner\"},minecraft:rarity=\"uncommon\",minecraft:tooltip_display={hidden_components:[\"minecraft:banner_patterns\"]}]"; - @Override public void onEnable() { // ConfigLoader初期化 @@ -147,9 +147,16 @@ public void onEnable() { } _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); + // storageSignNBT.configのセットアップ + StorageSignNBTConfig ssConfigClass = new StorageSignNBTConfig(this); + ssConfigClass.init(); + + String version = Bukkit.getBukkitVersion().split("-")[0]; + String nbt = ssConfigClass.getOminousBannerNBT(version); + // バナーデバッグが入ってる場合は、アイテムスタックを設定しない if(!ConfigLoader.getBannerDebug()) { - ItemStack stack = Bukkit.getItemFactory().createItemStack(ominousBannerComponent); + ItemStack stack = Bukkit.getItemFactory().createItemStack(nbt); ominousBannerMeta = (BannerMeta) stack.getItemMeta(); } diff --git a/src/main/java/wacky/storagesign/config/StorageSignNBTConfig.java b/src/main/java/wacky/storagesign/config/StorageSignNBTConfig.java new file mode 100644 index 0000000..c07feab --- /dev/null +++ b/src/main/java/wacky/storagesign/config/StorageSignNBTConfig.java @@ -0,0 +1,124 @@ +package wacky.storagesign.config; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.logging.Level; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.Plugin; + +/** + * key.config用セットアップクラス. + */ +public class StorageSignNBTConfig { + + private static final String PLUGIN_PATH = "plugins/StorageSign"; + private FileConfiguration config = null; + private File configFile; + private String file; + private Plugin plugin; + + + /** + * Pluginだけのコンストラクタ. + */ + public StorageSignNBTConfig(Plugin plugin) { + this(plugin, "storageSignNBT.yml"); + } + + /** + * コンストラクタ. + */ + private StorageSignNBTConfig(Plugin plugin, String fileName) { + this.plugin = plugin; + this.file = fileName; + + // プラグインのパスを受け取って、コンフィグ作成 + FileConfiguration config = plugin.getConfig(); + String path = PLUGIN_PATH; + + configFile = new File(path, file); + } + + /** + * デフォルトのConfigファイルの保存. + */ + public void saveDefaultConfig() { + if (!configFile.exists()) { + saveConfig(); + } + } + + /** + * Configファイルの再読み込み. + */ + public void reloadConfig() { + config = YamlConfiguration.loadConfiguration(configFile); + + final InputStream defConfigStream = plugin.getResource(file); + if (defConfigStream == null) { + return; + } + + config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, StandardCharsets.UTF_8))); + } + + /** + * Configファイル取得. + */ + public FileConfiguration getConfig() { + if (config == null) { + reloadConfig(); + } + return config; + } + public void saveConfig() { + if (config == null) { + return; + } + try { + getConfig().save(configFile); + } catch (IOException ex) { + plugin.getLogger().log(Level.SEVERE, "Could not save config to " + configFile, ex); + } + } + + public void init(){ + config = this.getConfig(); + config.options().copyDefaults(true); + // 特性上、何度も上書き処理を走らせたくないため、上書き制御付きのdefaultConfigを呼ぶ + // このファイル自体は子のプラグインでは利用せず、StorageSignでのみ使用 + this.saveDefaultConfig(); + } + + public String getOminousBannerNBT(String version){ + List> l = (List>) config.getMapList("ominusBunner"); + List> list = (List>) (List) l; + + return extractNbtForVersion(l, version).orElse(""); + } + + private static Optional extractNbtForVersion(List> rawList, String version) { + for (Map rawMap : rawList) { + // 安全なキー・値のチェック + if (rawMap.size() != 1) continue; + + Map.Entry entry = rawMap.entrySet().iterator().next(); + + if (!(entry.getKey() instanceof String key) || !(entry.getValue() instanceof String value)) continue; + + if (version.equals(key)) { + return Optional.of(value); + } + } + return Optional.empty(); + } + +} \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7089001..e125219 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,8 +3,8 @@ main: wacky.storagesign.StorageSignCore version: ${version} description: StorageSign Plugin for Spigot. You can 2billion items storeing to wooden sign. author: wackyls6 -api-version: 1.21.0 -depend: [Logger] +api-version: 1.21.4 +depend: [Logger, FarmNBT] softdepend: [WorldGuard] website: https://github.com/wackyls6/StorageSign permissions: From 20b5ef69bf35ef852b7a2b068c15a5aa58f7a196 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Sat, 19 Jul 2025 19:19:37 +0900 Subject: [PATCH 78/82] =?UTF-8?q?1.21.5=E3=83=90=E3=82=B0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E7=9C=8B=E6=9D=BF=E8=A8=AD=E7=BD=AE=E6=99=82?= =?UTF-8?q?=E3=81=AB=E8=AC=8E=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=8C?= =?UTF-8?q?=E5=87=BA=E3=82=8B=E7=8F=BE=E8=B1=A1=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/wacky/storagesign/StorageSignCore.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 2444797..c7633ed 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.8.0 + 1.8.1 jar StorageSign diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index 491f281..fa9eef8 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -135,9 +135,13 @@ public void onEnable() { // Paper専用ハンドラの設定 if(isPaper) { - getServer().getPluginManager().registerEvents(new PaperSSEvent(), this); + PaperSSEvent event = new PaperSSEvent(); + event.init(logger); + getServer().getPluginManager().registerEvents(event, this); } else { - getServer().getPluginManager().registerEvents(new SpigotSSEvent(), this); + SpigotSSEvent event = new SpigotSSEvent(); + event.init(logger); + getServer().getPluginManager().registerEvents(event, this); } logger.trace("no-bud:" + ConfigLoader.getNoBud()); From 9e9da32c99885bb3ad27d8c273c723c4f691d187 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Wed, 30 Jul 2025 17:12:56 +0900 Subject: [PATCH 79/82] =?UTF-8?q?1.21.5=E3=83=90=E3=82=B0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20auto-import=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=81=8C?= =?UTF-8?q?=E5=8F=8D=E6=98=A0=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/wacky/storagesign/ConfigLoader.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c7633ed..bdea4fc 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.8.1 + 1.8.2 jar StorageSign diff --git a/src/main/java/wacky/storagesign/ConfigLoader.java b/src/main/java/wacky/storagesign/ConfigLoader.java index 950a712..ae9a193 100644 --- a/src/main/java/wacky/storagesign/ConfigLoader.java +++ b/src/main/java/wacky/storagesign/ConfigLoader.java @@ -67,7 +67,7 @@ public static boolean getManualExport() { * @return boolean */ public static boolean getAutoImport() { - return fileConfig.getBoolean("auto-export"); + return fileConfig.getBoolean("auto-import"); } /** From 626a9fdbd5cb67eda3d62f54d1f9f9d3aec5d0bb Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Fri, 29 Aug 2025 22:08:19 +0900 Subject: [PATCH 80/82] =?UTF-8?q?1.21.4=E3=83=90=E3=82=B0=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E9=A3=9B=E7=BF=94Lv1=E3=81=AE=E8=8A=B1=E7=81=AB?= =?UTF-8?q?=E3=81=8C=E5=85=A5=E3=82=89=E3=81=AA=E3=81=84=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=8C=E3=81=82=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/wacky/storagesign/StorageSign.java | 5 ++++- src/main/java/wacky/storagesign/StorageSignCore.java | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index bdea4fc..945c2c2 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.8.2 + 1.8.3 jar StorageSign diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index abecbee..3c6ee42 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -616,7 +616,10 @@ public ItemStack getContents() { logger.debug("FIREWORK_ROCKET"); ItemStack item = new ItemStack(this.mat, DEFAULT_ITEM_AMOUNT); FireworkMeta fireworkMeta = (FireworkMeta) item.getItemMeta(); - Objects.requireNonNull(fireworkMeta).setPower(this.damage); + // 21.4より飛翔1はダメージ設定要らなくなった + if(1 < this.damage) { + Objects.requireNonNull(fireworkMeta).setPower(this.damage); + } item.setItemMeta(fireworkMeta); return item; diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index fa9eef8..dcfda5d 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -334,7 +334,12 @@ public void onPlayerInteract(PlayerInteractEvent event) { logger.debug("main hand has FireRocket."); storageSign.setMaterial(mat); FireworkMeta fireworkMeta = (FireworkMeta) itemMainHand.getItemMeta(); - storageSign.setDamage((short) fireworkMeta.getPower()); + short power = (short) fireworkMeta.getPower(); + // 21.4より飛翔1はダメージ設定要らなくなった。 + // 過去のものだとdamage1と0が混在してるので、強制的にダメージを設定しないようにする。 + if(1 < power){ + storageSign.setDamage(power); + } } else if (mat == Material.WHITE_BANNER) { logger.debug("main hand has WhiteBanner."); storageSign.setMaterial(mat); From a4481bf724fb548fbe8e9129f7993b21d7b2c85d Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Tue, 9 Dec 2025 22:03:53 +0900 Subject: [PATCH 81/82] =?UTF-8?q?2.0.0Paper=E5=AF=BE=E5=BF=9C=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E3=83=BB=E6=90=AC=E5=87=BA=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=81=AEPaper=E5=AF=BE=E5=BF=9C=20=E3=83=BB1.21=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=83=9D=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E3=81=AESS=E5=AF=BE=E5=BF=9C=20=E3=83=BB=E3=83=9B?= =?UTF-8?q?=E3=83=83=E3=83=91=E3=83=BC=E6=90=AC=E5=87=BA=E6=95=B0=E3=81=AE?= =?UTF-8?q?=E6=95=B0=E3=81=8C1=E4=BB=A5=E5=A4=96=E3=81=AE=E6=99=82?= =?UTF-8?q?=E3=81=AB=E3=81=86=E3=81=BE=E3=81=8F=E5=87=BA=E5=8A=9B=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +- .../java/wacky/storagesign/StorageSign.java | 14 + .../wacky/storagesign/StorageSignCore.java | 303 +++++++++--------- .../storagesign/runnnable/ExportSign.java | 260 +++++++++++++++ 4 files changed, 429 insertions(+), 154 deletions(-) create mode 100644 src/main/java/wacky/storagesign/runnnable/ExportSign.java diff --git a/pom.xml b/pom.xml index 945c2c2..3f38ce5 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 wacky StorageSign - 1.8.3 + 2.0.0 jar StorageSign @@ -96,12 +96,12 @@ org.spigotmc spigot-api - 1.21.5-R0.1-SNAPSHOT + 1.21.4-R0.1-SNAPSHOT io.papermc.paper paper-api - 1.21.5-R0.1-SNAPSHOT + 1.21.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 3c6ee42..649e509 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -87,6 +87,10 @@ public class StorageSign { ); private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( StorageSign.class); + /** + * 看板自体の種類. + */ + protected Sign sign; /** * 看板のアイテム素材. @@ -199,6 +203,7 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); this.isEmpty = (this.mat == null || this.mat == AIR); + this.sign = sign; if (this.mat == OMINOUS_BOTTLE) { logger.debug("OMINOUS_BOTTLE"); @@ -249,6 +254,15 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { logger.debug("StorageSign(Material signmat):end"); } + /** + * 基底となるSign情報を取得. + * + * @return Sign 作製元のSign. + */ + public Sign getBaseSign(){ + return this.sign; + } + /** * 空のStorageSignを作成して、ItemStackとして取得します. * diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index dcfda5d..dce9e77 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -3,9 +3,7 @@ import com.github.teruteru128.logger.Logger; import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.logging.Level; import org.apache.logging.log4j.LogManager; @@ -20,6 +18,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.block.DoubleChest; +import org.bukkit.block.Furnace; import org.bukkit.block.Sign; import org.bukkit.block.data.type.WallSign; import org.bukkit.block.sign.Side; @@ -41,11 +40,11 @@ import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.event.inventory.FurnaceBurnEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerSignOpenEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; @@ -56,7 +55,6 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.FireworkMeta; -import org.bukkit.inventory.meta.OminousBottleMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.recipe.CraftingBookCategory; import org.bukkit.plugin.java.JavaPlugin; @@ -64,6 +62,7 @@ import wacky.storagesign.client.paper.PaperSSEvent; import wacky.storagesign.client.spigot.SpigotSSEvent; import wacky.storagesign.config.StorageSignNBTConfig; +import wacky.storagesign.runnnable.ExportSign; import wacky.storagesign.signdefinition.SignDefinition; public class StorageSignCore extends JavaPlugin implements Listener { @@ -107,11 +106,11 @@ public void onEnable() { storageSignRecipe.setIngredient('C', Material.CHEST); storageSignRecipe.setIngredient('S', mat); - if (ConfigLoader.getHardRecipe()) { - storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); - } else { - storageSignRecipe.setIngredient('H', Material.CHEST); - } + if (ConfigLoader.getHardRecipe()) { + storageSignRecipe.setIngredient('H', Material.ENDER_CHEST); + } else { + storageSignRecipe.setIngredient('H', Material.CHEST); + } // レシピのグループを設定する storageSignRecipe.setCategory(CraftingBookCategory.MISC); @@ -145,10 +144,10 @@ public void onEnable() { } logger.trace("no-bud:" + ConfigLoader.getNoBud()); - if (ConfigLoader.getNoBud()) { + if (ConfigLoader.getNoBud()) { logger.trace("no-bud is True."); - new SignPhysicsEvent(this, logger); - } + new SignPhysicsEvent(this, logger); + } _fallingBlockSS = ConfigLoader.getFallingBlockItemSs(); // storageSignNBT.configのセットアップ @@ -393,24 +392,24 @@ public void onPlayerInteract(PlayerInteractEvent event) { //空看板収納 logger.debug("Empty Sign store."); logger.trace("player.isSneaking()" + player.isSneaking()); - if (player.isSneaking()) { + if (player.isSneaking()) { logger.debug("Player is Sneaking."); - storageSign.addAmount(itemMainHand.getAmount()); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); - } else { + storageSign.addAmount(itemMainHand.getAmount()); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); + } else { logger.debug("store all Empty Sign.SearchPlayer Inventory."); // アイテム内でサインを探す - for (int i = 0; i < player.getInventory().getSize(); i++) { - ItemStack item = player.getInventory().getItem(i); + for (int i = 0; i < player.getInventory().getSize(); i++) { + ItemStack item = player.getInventory().getItem(i); boolean isSimilar = storageSign.isSimilar(item); logger.trace("storageSign.isSimilar(item)" + isSimilar); - if (isSimilar) { + if (isSimilar) { logger.debug("find Empty Sign."); storageSign.addAmount(item.getAmount()); player.getInventory().clear(i); - } - } - } + } + } + } } else if (itemSign.isEmpty() && storageSign.getAmount() > itemMainHand.getAmount() && ConfigLoader.getManualExport()) { //中身分割機能 @@ -428,23 +427,23 @@ public void onPlayerInteract(PlayerInteractEvent event) { } logger.trace("limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)" + (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1))); - if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { + if (limit > 0 && storageSign.getAmount() > limit * (itemSign.getStackSize() + 1)) { logger.debug("Item Export EmptySign divide-limit."); - itemSign.setAmount(limit); - } else { + itemSign.setAmount(limit); + } else { logger.debug("Item Export EmptySign Equality divide."); - itemSign.setAmount(storageSign.getAmount() / (itemSign.getStackSize() + 1)); - } + itemSign.setAmount(storageSign.getAmount() / (itemSign.getStackSize() + 1)); + } player.getInventory().setItemInMainHand(itemSign.getStorageSign()); //余りは看板に引き受けてもらう storageSign.setAmount(storageSign.getAmount() - (itemSign.getStackSize() * itemSign.getAmount())); } logger.debug("Update StorageSign."); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } sign.update(); logger.debug("★Item move to User StorageSign: End"); return; @@ -460,41 +459,41 @@ public void onPlayerInteract(PlayerInteractEvent event) { logger.debug("StorageSign Import."); logger.trace("!config.getBoolean(\"manual-import\"): " + !ConfigLoader.getManualImport()); - if (!ConfigLoader.getManualImport()) { + if (!ConfigLoader.getManualImport()) { logger.debug("★option:manual-import is False!"); - return; - } + return; + } logger.trace("player.isSneaking():" + player.isSneaking()); - if (player.isSneaking()) { + if (player.isSneaking()) { logger.debug("player is Sneaking.Push 1 Item."); - storageSign.addAmount(itemMainHand.getAmount()); - player.getInventory().clear(player.getInventory().getHeldItemSlot()); + storageSign.addAmount(itemMainHand.getAmount()); + player.getInventory().clear(player.getInventory().getHeldItemSlot()); logger.trace("isDye(itemMainHand):" + isDye(itemMainHand)); logger.trace("isSac(itemMainHand):" + isSac(itemMainHand)); - if (isDye(itemMainHand)) { + if (isDye(itemMainHand)) { logger.debug("mainHandItem is Dye."); - sign.getSide(Side.FRONT).setColor(getDyeColor(itemMainHand)); //同色用 - } - if (isSac(itemMainHand)) { + sign.getSide(Side.FRONT).setColor(getDyeColor(itemMainHand)); //同色用 + } + if (isSac(itemMainHand)) { logger.debug("mainHandItem is Sac."); - sign.getSide(Side.FRONT).setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 - } - } else { + sign.getSide(Side.FRONT).setGlowingText(isGlowSac(itemMainHand)); //イカスミ用 + } + } else { logger.debug("push Stack Item."); - for (int i = 0; i < player.getInventory().getSize(); i++) { - ItemStack item = player.getInventory().getItem(i); + for (int i = 0; i < player.getInventory().getSize(); i++) { + ItemStack item = player.getInventory().getItem(i); boolean itemSimilar = storageSign.isSimilar(item); logger.trace(" item: " + item); logger.trace(" storageSign.isSimilar(item): " + itemSimilar); - if (itemSimilar) { + if (itemSimilar) { logger.debug(" same Item Found.Push Item to StorageSign."); - storageSign.addAmount(item.getAmount()); - player.getInventory().clear(i); - } - } + storageSign.addAmount(item.getAmount()); + player.getInventory().clear(i); + } + } logger.debug("push Stack Item.End."); - } + } player.updateInventory(); } else if (ConfigLoader.getManualExport())/*放出*/ { @@ -523,25 +522,25 @@ public void onPlayerInteract(PlayerInteractEvent event) { return; } else if (storageSign.isEmpty()) { logger.debug("★StorageSign is Empty."); - return; - } + return; + } ItemStack item = storageSign.getContents(); int max = item.getMaxStackSize(); logger.trace("player.isSneaking(): " + player.isSneaking()); logger.trace("storageSign.getAmount() > max: " + (storageSign.getAmount() > max)); - if (player.isSneaking()) { + if (player.isSneaking()) { logger.debug("Player is Sneaking.Get 1 Item."); - storageSign.addAmount(-1); - } else if (storageSign.getAmount() > max) { + storageSign.addAmount(-1); + } else if (storageSign.getAmount() > max) { logger.debug("Sign Items bigger than 1Stack.Get 1Stack Items."); - item.setAmount(max); - storageSign.addAmount(-max); - } else { + item.setAmount(max); + storageSign.addAmount(-max); + } else { logger.debug("Get 1Stack Items."); - item.setAmount(storageSign.getAmount()); - storageSign.setAmount(0); - } + item.setAmount(storageSign.getAmount()); + storageSign.setAmount(0); + } logger.debug("drop Item."); Location loc = player.getLocation(); @@ -550,10 +549,10 @@ public void onPlayerInteract(PlayerInteractEvent event) { } logger.debug("SetSignText."); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } logger.debug("update Sign."); sign.update(); @@ -567,10 +566,10 @@ public void onSignChange(SignChangeEvent event) { logger.debug("★onSignChangeEvent:Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); - if (event.isCancelled()) { + if (event.isCancelled()) { logger.debug("★this Event is Cancelled!"); - return; - } + return; + } Sign sign = (Sign) event.getBlock().getState(); logger.trace("sign.getSide(Side.FRONT).getLine(0):" + sign.getSide(Side.FRONT).getLine(0)); @@ -602,7 +601,7 @@ public void onBlockBreak(BlockBreakEvent event) { logger.debug("★onBlockBreak:Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); - if (event.isCancelled()) { + if (event.isCancelled()) { logger.debug("★this Event is Cancelled!"); return; } @@ -627,10 +626,10 @@ public void onBlockPlace(BlockPlaceEvent event) { boolean handItemIsSS = StorageSign.isStorageSign(event.getItemInHand(), logger); logger.trace("event.isCancelled(): " + event.isCancelled()); logger.trace("!handItemIsSS: " + !handItemIsSS); - if (event.isCancelled() || !handItemIsSS) { + if (event.isCancelled() || !handItemIsSS) { logger.debug("★this Event is Cancelled!"); - return; - } + return; + } Player player = event.getPlayer(); logger.trace("!player.hasPermission(\"storagesign.place\"): " + !player.hasPermission("storagesign.place")); if (!player.hasPermission("storagesign.place")) { @@ -643,10 +642,10 @@ public void onBlockPlace(BlockPlaceEvent event) { logger.debug("StorageSign Placed in World."); StorageSign storageSign = new StorageSign(event.getItemInHand(), logger); Sign sign = (Sign) event.getBlock().getState(); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } logger.trace("storageSign.getSmat() == Material.DARK_OAK_SIGN: " + (storageSign.getSmat() == Material.DARK_OAK_SIGN)); if (storageSign.getSmat() == Material.DARK_OAK_SIGN) { @@ -666,14 +665,14 @@ public void onBlockPlace(BlockPlaceEvent event) { public void onItemMove(InventoryMoveItemEvent event) { logger.debug("★onItemMove: Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); - if (event.isCancelled()) { + if (event.isCancelled()) { logger.debug("★this Event is Cancelled!"); - return; - } + return; + } logger.debug("ItemMoveEvent check"); BlockState[] blockInventory = new BlockState[2]; - Boolean flag = false; + Boolean moveFlg = false; Sign sign = null; StorageSign storageSign = null; ItemStack item = event.getItem(); @@ -707,10 +706,10 @@ public void onItemMove(InventoryMoveItemEvent event) { for (int j = 0; j < 2; j++) { logger.trace("j: " + j); logger.trace("blockInventory[j]: " + blockInventory[j]); - if (blockInventory[j] == null) { + if (blockInventory[j] == null) { logger.debug("This Inventory is NULL."); - break; - } + break; + } logger.debug("BlockFaceCheck Start."); for (int i = 0; i < 5; i++) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, @@ -741,7 +740,7 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { logger.debug("This item is StorageSign.break."); - flag = true; + moveFlg = true; break importLoop; } } else if (i != 0 && relIsWallSign @@ -751,17 +750,17 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { logger.debug("This item is StorageSign.break."); - flag = true; + moveFlg = true; break importLoop; } } } } //搬入先が見つかった(搬入するとは言ってない) - if (flag) { + if (moveFlg) { logger.debug("Import Sign."); - importSign(sign, storageSign, item, event.getDestination()); - } + importSign(sign, storageSign, item, event.getDestination()); + } } //搬出用にリセット @@ -769,7 +768,7 @@ public void onItemMove(InventoryMoveItemEvent event) { if (ConfigLoader.getAutoExport()) { blockInventory[0] = null; blockInventory[1] = null; - flag = false; + moveFlg = false; logger.trace("event.getSource(): " + event.getSource()); logger.trace("event.getSource().getLocation(): " + event.getSource().getLocation()); logger.trace("event.getSource().getHolder(): " + event.getSource().getHolder()); @@ -778,9 +777,8 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.debug("This Event is Temp Inventory."); } else if (event.getSource().getHolder() instanceof Minecart){ logger.debug("This Event is Minecart."); - } else if (event.getSource().getHolder() instanceof DoubleChest) { + } else if (event.getSource().getHolder() instanceof DoubleChest lc) { logger.debug("This Event is DoubleChest."); - DoubleChest lc = (DoubleChest) event.getSource().getHolder(); blockInventory[0] = (BlockState) lc.getLeftSide(); blockInventory[1] = (BlockState) lc.getRightSide(); } else if (!(event.getSource().getHolder() instanceof BlockState)){ @@ -792,17 +790,18 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("blockInventory[0]: " + blockInventory[0]); } + Block block = null; exportLoop: for (int j = 0; j < 2; j++) { logger.trace("j: " + j); logger.trace("blockInventory[j]: " + blockInventory[j]); - if (blockInventory[j] == null) { - break; - } + if (blockInventory[j] == null) { + break; + } for (int i = 0; i < 5; i++) { BlockFace[] face = {BlockFace.UP, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST}; - Block block = blockInventory[j].getBlock().getRelative(face[i]); + block = blockInventory[j].getBlock().getRelative(face[i]); boolean relIsSignPost = SignDefinition.sign_materials.contains(block.getType()); boolean relIsStorageSign = StorageSign.isStorageSign(block, logger); boolean relIsWallSign = SignDefinition.wall_sign_materials.contains(block.getType()); @@ -823,7 +822,7 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { logger.debug("This item is StorageSign.break."); - flag = true; + moveFlg = true; break exportLoop; } } else if (i != 0 && relIsWallSign @@ -833,16 +832,17 @@ public void onItemMove(InventoryMoveItemEvent event) { logger.trace("storageSign.isSimilar(item): " + storageSign.isSimilar(item)); if (storageSign.isSimilar(item)) { logger.debug("This item is StorageSign.break."); - flag = true; + moveFlg = true; break exportLoop; } } } } - if (flag) { + if (moveFlg) { logger.debug("Export Sign."); - exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); - } + new ExportSign(sign, storageSign, item.clone(), event.getSource(), event.getDestination(), event, block, logger).runTask(this); +// exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); + } } logger.debug("★onItemMove:End."); } @@ -856,10 +856,10 @@ private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inve inv.removeItem(item); storageSign.addAmount(item.getAmount()); } - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { logger.trace(" set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } + sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); + } logger.debug("update Sign."); sign.update(); } @@ -867,6 +867,7 @@ private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inve //搬出先ブロックに枠指定があると事故る private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv, Inventory dest) { + dest = inv; logger.debug("exportSign:Start."); logger.trace("item: " + item); logger.trace("!inv.containsAtLeast(item, item.getMaxStackSize(): " + !inv.containsAtLeast(item, item.getMaxStackSize())); @@ -905,20 +906,20 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); logger.trace("contents[3]: " + contents[3]); - if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) { + if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) { logger.debug("This item import at up."); - if (contents[3] != null && !item.isSimilar(contents[3])) { + if (contents[3] != null && !item.isSimilar(contents[3])) { //他のアイテムが詰まってる logger.debug("This item is clog."); - return; - } else { + return; + } else { logger.debug("This item Export."); - break; - } - } else { + break; + } + } else { logger.debug("This item import not."); - return; - } + return; + } case BLAZE_POWDER: //横or上 @@ -930,29 +931,29 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 logger.debug("This item import at up."); logger.trace("contents[3]: " + contents[3]); - if (contents[3] != null && !item.isSimilar(contents[3])) { + if (contents[3] != null && !item.isSimilar(contents[3])) { //他のアイテムが詰まってる logger.debug("This item is clog."); - return; - } else { + return; + } else { logger.debug("This item import not."); - break; - } + break; + } } else if (inv.getLocation().getBlockY() == dest.getLocation().getBlockY()) {//横 logger.debug("This item import at beside."); logger.trace("contents[4]: " + contents[4]); - if (contents[4] != null && contents[4].getAmount() == 64) { + if (contents[4] != null && contents[4].getAmount() == 64) { //パウダー詰まり logger.debug("This item is clog."); - return; - } else { + return; + } else { logger.debug("This item Export."); - break; - } - } else { + break; + } + } else { logger.debug("This item import not."); - return; - } + return; + } case POTION: case SPLASH_POTION: @@ -962,22 +963,22 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); logger.trace("inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY())); - if (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()) { + if (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()) { logger.debug("This item import at beside or down."); logger.trace("contents[0]: " + contents[0]); logger.trace("contents[1]: " + contents[1]); logger.trace("contents[2]: " + contents[2]); - if (contents[0] != null && contents[1] != null && contents[2] != null) { + if (contents[0] != null && contents[1] != null && contents[2] != null) { logger.debug("This item is clog."); - return; - } else { + return; + } else { logger.debug("This item Export."); - break; - } - } else { + break; + } + } else { logger.debug("This item import not."); - return; - } + return; + } default://ロスト回避 logger.debug("This Item not support BREW Item."); return; @@ -992,20 +993,20 @@ private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inve if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 logger.debug("This item import at up."); logger.trace("contents[0]: " + contents[0]); - if (contents[0] != null && !item.isSimilar(contents[0])) { + if (contents[0] != null && !item.isSimilar(contents[0])) { //他のアイテムが詰まってる logger.debug("This item is clog."); - return; - } + return; + } } else { //横から(下から) logger.debug("This item import at beside or down."); logger.trace("contents[1]: " + contents[1]); - if (!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) { + if (!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) { //燃料以外 or 他のアイテムが詰まってる logger.debug("This item is clog or not Fuel."); - return; - } + return; + } } } @@ -1062,10 +1063,10 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに logger.debug("★onInventoryPickup:Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); logger.trace("!config.getBoolean(\"auto-import\"): " + !ConfigLoader.getAutoImport()); - if (event.isCancelled() || !ConfigLoader.getAutoImport()) { + if (event.isCancelled() || !ConfigLoader.getAutoImport()) { logger.debug("★eventCancelled or not set permission.auto-import."); - return; - } + return; + } InventoryHolder holder = event.getInventory().getHolder(); logger.trace("holder: " + holder); @@ -1115,10 +1116,10 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに } } } - if (flag) { + if (flag) { logger.debug("Import Item."); - importSign(sign, storageSign, event.getItem().getItemStack(), event.getInventory()); - } + importSign(sign, storageSign, event.getItem().getItemStack(), event.getInventory()); + } } logger.debug("★onInventoryPickup:End"); } @@ -1127,10 +1128,10 @@ public void onInventoryPickup(InventoryPickupItemEvent event) {//ホッパーに public void onPlayerPickupItem(EntityPickupItemEvent event) { logger.debug("★onPlayerPickupItem:Start"); logger.trace("event.isCancelled(): " + event.isCancelled()); - if (event.isCancelled()) { + if (event.isCancelled()) { logger.debug("★Event Cancelled."); - return; - } + return; + } logger.trace("event.getEntityType(): " + event.getEntityType()); logger.trace("config.getBoolean(\"autocollect\"): " + ConfigLoader.getAutoCollect()); @@ -1142,10 +1143,10 @@ public void onPlayerPickupItem(EntityPickupItemEvent event) { logger.trace("!player.hasPermission(\"storagesign.autocollect\"): " + !player.hasPermission("storagesign.autocollect")); //ここでは、エラーを出さずに無視する - if (!player.hasPermission("storagesign.autocollect")) { + if (!player.hasPermission("storagesign.autocollect")) { logger.debug("★This user hasn't Permission. storagesign.autocollect."); - return; - } + return; + } boolean mainHandhasSS = StorageSign.isStorageSign(playerInv.getItemInMainHand(), logger); boolean offHandhasSS = StorageSign.isStorageSign(playerInv.getItemInOffHand(), logger); diff --git a/src/main/java/wacky/storagesign/runnnable/ExportSign.java b/src/main/java/wacky/storagesign/runnnable/ExportSign.java new file mode 100644 index 0000000..ef4fa84 --- /dev/null +++ b/src/main/java/wacky/storagesign/runnnable/ExportSign.java @@ -0,0 +1,260 @@ +package wacky.storagesign.runnnable; + +import com.github.teruteru128.logger.Logger; +import java.util.EnumSet; +import java.util.Set; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; +import org.bukkit.event.inventory.InventoryMoveItemEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitRunnable; +import wacky.storagesign.StorageSign; + +public class ExportSign extends BukkitRunnable { + + + // 醸造台の搬入定義 + private static final int SLOT_BREWING_BOTTLE_1 = 0; + private static final int SLOT_BREWING_BOTTLE_2 = 1; + private static final int SLOT_BREWING_BOTTLE_3 = 2; + private static final int SLOT_BREWING_INGREDIENT = 3; + private static final int SLOT_BREWING_FUEL = 4; + + // 醸造台の上部スロットに入るアイテム群 + private static final Set BREWING_INGREDIENTS = EnumSet.of( + Material.NETHER_WART, Material.SUGAR, Material.REDSTONE, Material.GLOWSTONE_DUST, + Material.GUNPOWDER, Material.RABBIT_FOOT, Material.GLISTERING_MELON_SLICE, + Material.GOLDEN_CARROT, Material.MAGMA_CREAM, Material.GHAST_TEAR, + Material.SPIDER_EYE, Material.FERMENTED_SPIDER_EYE, Material.DRAGON_BREATH, + Material.PUFFERFISH, Material.TURTLE_HELMET, Material.PHANTOM_MEMBRANE + ); + + // かまどのスロット定義 + private static final int SLOT_FURNACE_INPUT = 0; + private static final int SLOT_FURNACE_FUEL = 1; + private Logger _logger; + private InventoryMoveItemEvent _event; + private StorageSign _ss; + private Sign _sign; + private ItemStack _moveItem; + private Inventory _inventory; + private Inventory _destInventory; + private Block _block; + + public ExportSign(Sign sign, StorageSign storageSign, ItemStack moveItemStack, Inventory sourceInventory, Inventory destInventory, InventoryMoveItemEvent event, Block block, Logger logger){ + _logger = logger; + _logger.debug("★exportSign:Start."); + _logger.trace("moveItem: " + moveItemStack); + _logger.trace("storageSign.getAmount(): " + storageSign.getAmount()); + _logger.trace("moveItem.getAmount(): " + moveItemStack.getAmount()); + _logger.trace("sourceInventory.getLocation(): " + sourceInventory.getLocation()); + _sign = sign; + _ss = storageSign; + _moveItem = moveItemStack; + _inventory = sourceInventory; + _destInventory = destInventory; + _event = event; + _block = block; + _logger.debug("★exportSign:End."); + } + /** + * Runs this operation. + */ + @Override + public void run() { + _destInventory = _event.getSource(); + _sign = (Sign) _block.getState(); + _ss = new StorageSign(_sign, _block.getType(), _logger);; + + _logger.debug("exportSign:Start."); + _logger.trace("item: " + _moveItem); + _logger.trace("!inv.containsAtLeast(item, item.getMaxStackSize(): " + !_inventory.containsAtLeast(_moveItem, _moveItem.getMaxStackSize())); + _logger.trace("storageSign.getAmount(): " + _ss.getAmount()); + _logger.trace("item.getAmount(): " + _moveItem.getAmount()); + if (!_inventory.containsAtLeast(_moveItem, _moveItem.getMaxStackSize()) + && _ss.getAmount() >= _moveItem.getAmount()) { + int stacks = 0; + int amount = 0; + ItemStack[] contents = _destInventory.getContents(); + + _logger.trace("dest.getType(): " + _destInventory.getType()); + _logger.trace("item.getType(): " + _moveItem.getType()); + if (_destInventory.getType() == InventoryType.BREWING) { + switch (_moveItem.getType()) { + case NETHER_WART://上 + case SUGAR: + case REDSTONE: + case GLOWSTONE_DUST: + case GUNPOWDER: + case RABBIT_FOOT: + case GLISTERING_MELON_SLICE: + case GOLDEN_CARROT: + case MAGMA_CREAM: + case GHAST_TEAR: + case SPIDER_EYE: + case FERMENTED_SPIDER_EYE: + case DRAGON_BREATH: + case PUFFERFISH: + case TURTLE_HELMET: + case PHANTOM_MEMBRANE: + case BREEZE_ROD: + case SLIME_BLOCK: + case COBWEB: + case STONE: + //上から搬入 + _logger.debug("This item is PHANTOM_MEMBRANE."); + _logger.trace("inv.getLocation().getBlockY()" + _inventory.getLocation().getBlockY()); + _logger.trace("dest.getLocation().getBlockY()" + _destInventory.getLocation().getBlockY()); + _logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY())); + _logger.trace("contents[3]: " + contents[3]); + if (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY()) { + _logger.debug("This item import at up."); + if (contents[3] != null && !_moveItem.isSimilar(contents[3])) { + //他のアイテムが詰まってる + _logger.debug("This item is clog."); + return; + } else { + _logger.debug("This item Export."); + break; + } + } else { + _logger.debug("This item import not."); + return; + } + + case BLAZE_POWDER: + //横or上 + _logger.debug("This item is BLAZE_POWDER."); + _logger.trace("inv.getLocation().getBlockY()" + _inventory.getLocation().getBlockY()); + _logger.trace("dest.getLocation().getBlockY()" + _destInventory.getLocation().getBlockY()); + _logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY())); + _logger.trace("inv.getLocation().getBlockY() == dest.getLocation().getBlockY(): " + (_inventory.getLocation().getBlockY() == _destInventory.getLocation().getBlockY())); + if (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY()) {//上から搬入 + _logger.debug("This item import at up."); + _logger.trace("contents[3]: " + contents[3]); + if (contents[3] != null && !_moveItem.isSimilar(contents[3])) { + //他のアイテムが詰まってる + _logger.debug("This item is clog."); + return; + } else { + _logger.debug("This item import not."); + break; + } + } else if (_inventory.getLocation().getBlockY() == _destInventory.getLocation().getBlockY()) {//横 + _logger.debug("This item import at beside."); + _logger.trace("contents[4]: " + contents[4]); + if (contents[4] != null && contents[4].getAmount() == 64) { + //パウダー詰まり + _logger.debug("This item is clog."); + return; + } else { + _logger.debug("This item Export."); + break; + } + } else { + _logger.debug("This item import not."); + return; + } + + case POTION: + case SPLASH_POTION: + case LINGERING_POTION: + //横or下 + _logger.debug("This item is POTIONS."); + _logger.trace("inv.getLocation().getBlockY()" + _inventory.getLocation().getBlockY()); + _logger.trace("dest.getLocation().getBlockY()" + _destInventory.getLocation().getBlockY()); + _logger.trace("inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()" + (_inventory.getLocation().getBlockY() <= _destInventory.getLocation().getBlockY())); + if (_inventory.getLocation().getBlockY() <= _destInventory.getLocation().getBlockY()) { + _logger.debug("This item import at beside or down."); + _logger.trace("contents[0]: " + contents[0]); + _logger.trace("contents[1]: " + contents[1]); + _logger.trace("contents[2]: " + contents[2]); + if (contents[0] != null && contents[1] != null && contents[2] != null) { + _logger.debug("This item is clog."); + return; + } else { + _logger.debug("This item Export."); + break; + } + } else { + _logger.debug("This item import not."); + return; + } + default://ロスト回避 + _logger.debug("This Item not support BREW Item."); + return; + } + } else if (_destInventory.getType() == InventoryType.FURNACE + || _destInventory.getType() == InventoryType.BLAST_FURNACE + || _destInventory.getType() == InventoryType.SMOKER) { + _logger.debug("This Type is Furnace Series."); + _logger.trace("inv.getLocation().getBlockY()" + _inventory.getLocation().getBlockY()); + _logger.trace("dest.getLocation().getBlockY()" + _destInventory.getLocation().getBlockY()); + _logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY(): " + (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY())); + if (_inventory.getLocation().getBlockY() > _destInventory.getLocation().getBlockY()) {//上から搬入 + _logger.debug("This item import at up."); + _logger.trace("contents[0]: " + contents[0]); + if (contents[0] != null && !_moveItem.isSimilar(contents[0])) { + //他のアイテムが詰まってる + _logger.debug("This item is clog."); + return; + } + } else { + //横から(下から) + _logger.debug("This item import at beside or down."); + _logger.trace("contents[1]: " + contents[1]); + if (!_moveItem.getType().isFuel() || contents[1] != null && !_moveItem.isSimilar(contents[1])) { + //燃料以外 or 他のアイテムが詰まってる + _logger.debug("This item is clog or not Fuel."); + return; + } + } + } + + _logger.debug("Export Item"); + //PANPANによるロスト回避 + for (int i = 0; i < contents.length; i++) { + _logger.trace("i: " + i); + _logger.trace("contents[i]: " + contents[i]); + if (_moveItem.isSimilar(contents[i])) { + stacks++; + amount += contents[i].getAmount(); + _logger.trace(" stacks: " + stacks); + _logger.trace(" amount: " + amount); + } + } + _logger.trace("amount == stacks * item.getMaxStackSize(): " + (amount + == stacks * _moveItem.getMaxStackSize())); + _logger.trace("dest.firstEmpty() == -1: " + (_destInventory.firstEmpty() == -1)); + if (amount == stacks * _moveItem.getMaxStackSize() && _destInventory.firstEmpty() == -1) { + _logger.debug("Item less than Stack.not Export."); + return; + } + + _logger.debug("Export Item to Inventory."); + ItemStack cItem = _moveItem.clone(); + // 合計スタック数-存在数で、転送されたアイテム数分アイテムを補充する + // stacksが0なら、最大値 + int addAmount = 0; + if(stacks == 0) { + addAmount = cItem.getMaxStackSize(); + } else { + addAmount = cItem.getMaxStackSize() * stacks - amount; + } + cItem.setAmount(addAmount); + _inventory.addItem(cItem); + _ss.addAmount(-cItem.getAmount()); + } + for (int i = 0; i < 4; i++) { + _logger.trace("set Line i:" + i + ". Text: " + _ss.getSigntext(i)); + _sign.getSide(Side.FRONT).setLine(i, _ss.getSigntext(i)); + } + _sign.update(); + _logger.debug("ExportSign:End"); + } +} From b93590d4cc4c2828c890fa4d2ce13bbe7aeb3c05 Mon Sep 17 00:00:00 2001 From: snowpegeon Date: Thu, 18 Dec 2025 20:58:56 +0900 Subject: [PATCH 82/82] =?UTF-8?q?2.0.0Paper=E5=AF=BE=E5=BF=9C=E6=94=B9?= =?UTF-8?q?=E4=BF=AE=20=E3=83=BB=E3=82=BD=E3=83=BC=E3=82=B9=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E6=95=B4=E7=90=86=E3=81=A8=E9=80=A3=E6=89=93?= =?UTF-8?q?=E6=99=82=E3=81=AE=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/wacky/storagesign/StorageSign.java | 14 -- .../wacky/storagesign/StorageSignCore.java | 182 +----------------- .../storagesign/runnnable/ExportSign.java | 43 +---- 3 files changed, 10 insertions(+), 229 deletions(-) diff --git a/src/main/java/wacky/storagesign/StorageSign.java b/src/main/java/wacky/storagesign/StorageSign.java index 649e509..3c6ee42 100644 --- a/src/main/java/wacky/storagesign/StorageSign.java +++ b/src/main/java/wacky/storagesign/StorageSign.java @@ -87,10 +87,6 @@ public class StorageSign { ); private static final org.apache.logging.log4j.Logger log = LogManager.getLogger( StorageSign.class); - /** - * 看板自体の種類. - */ - protected Sign sign; /** * 看板のアイテム素材. @@ -203,7 +199,6 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { String[] line2 = sign.getSide(Side.FRONT).getLine(1).trim().split(":"); this.mat = getMaterial(line2[0]); this.isEmpty = (this.mat == null || this.mat == AIR); - this.sign = sign; if (this.mat == OMINOUS_BOTTLE) { logger.debug("OMINOUS_BOTTLE"); @@ -254,15 +249,6 @@ public StorageSign(Sign sign, Material signmat, Logger logger) { logger.debug("StorageSign(Material signmat):end"); } - /** - * 基底となるSign情報を取得. - * - * @return Sign 作製元のSign. - */ - public Sign getBaseSign(){ - return this.sign; - } - /** * 空のStorageSignを作成して、ItemStackとして取得します. * diff --git a/src/main/java/wacky/storagesign/StorageSignCore.java b/src/main/java/wacky/storagesign/StorageSignCore.java index dce9e77..67078ab 100644 --- a/src/main/java/wacky/storagesign/StorageSignCore.java +++ b/src/main/java/wacky/storagesign/StorageSignCore.java @@ -840,8 +840,7 @@ public void onItemMove(InventoryMoveItemEvent event) { } if (moveFlg) { logger.debug("Export Sign."); - new ExportSign(sign, storageSign, item.clone(), event.getSource(), event.getDestination(), event, block, logger).runTask(this); -// exportSign(sign, storageSign, item, event.getSource(), event.getDestination()); + new ExportSign(item.clone(), event.getSource(), event.getDestination(), event, block, logger).runTask(this); } } logger.debug("★onItemMove:End."); @@ -864,185 +863,6 @@ private void importSign(Sign sign, StorageSign storageSign, ItemStack item, Inve sign.update(); } - //搬出先ブロックに枠指定があると事故る - private void exportSign(Sign sign, StorageSign storageSign, ItemStack item, Inventory inv, - Inventory dest) { - dest = inv; - logger.debug("exportSign:Start."); - logger.trace("item: " + item); - logger.trace("!inv.containsAtLeast(item, item.getMaxStackSize(): " + !inv.containsAtLeast(item, item.getMaxStackSize())); - logger.trace("storageSign.getAmount(): " + storageSign.getAmount()); - logger.trace("item.getAmount(): " + item.getAmount()); - if (!inv.containsAtLeast(item, item.getMaxStackSize()) - && storageSign.getAmount() >= item.getAmount()) { - int stacks = 0; - int amount = 0; - ItemStack[] contents = dest.getContents(); - - logger.trace("dest.getType(): " + dest.getType()); - logger.trace("item.getType(): " + item.getType()); - // TODO 1.21でアイテム追加。 - if (dest.getType() == InventoryType.BREWING) { - switch (item.getType()) { - case NETHER_WART://上 - case SUGAR: - case REDSTONE: - case GLOWSTONE_DUST: - case GUNPOWDER: - case RABBIT_FOOT: - case GLISTERING_MELON_SLICE: - case GOLDEN_CARROT: - case MAGMA_CREAM: - case GHAST_TEAR: - case SPIDER_EYE: - case FERMENTED_SPIDER_EYE: - case DRAGON_BREATH: - case PUFFERFISH: - case TURTLE_HELMET: - case PHANTOM_MEMBRANE: - //上から搬入 - logger.debug("This item is PHANTOM_MEMBRANE."); - logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); - logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); - logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); - logger.trace("contents[3]: " + contents[3]); - if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) { - logger.debug("This item import at up."); - if (contents[3] != null && !item.isSimilar(contents[3])) { - //他のアイテムが詰まってる - logger.debug("This item is clog."); - return; - } else { - logger.debug("This item Export."); - break; - } - } else { - logger.debug("This item import not."); - return; - } - - case BLAZE_POWDER: - //横or上 - logger.debug("This item is BLAZE_POWDER."); - logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); - logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); - logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); - logger.trace("inv.getLocation().getBlockY() == dest.getLocation().getBlockY(): " + (inv.getLocation().getBlockY() == dest.getLocation().getBlockY())); - if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 - logger.debug("This item import at up."); - logger.trace("contents[3]: " + contents[3]); - if (contents[3] != null && !item.isSimilar(contents[3])) { - //他のアイテムが詰まってる - logger.debug("This item is clog."); - return; - } else { - logger.debug("This item import not."); - break; - } - } else if (inv.getLocation().getBlockY() == dest.getLocation().getBlockY()) {//横 - logger.debug("This item import at beside."); - logger.trace("contents[4]: " + contents[4]); - if (contents[4] != null && contents[4].getAmount() == 64) { - //パウダー詰まり - logger.debug("This item is clog."); - return; - } else { - logger.debug("This item Export."); - break; - } - } else { - logger.debug("This item import not."); - return; - } - - case POTION: - case SPLASH_POTION: - case LINGERING_POTION: - //横or下 - logger.debug("This item is POTIONS."); - logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); - logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); - logger.trace("inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()" + (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY())); - if (inv.getLocation().getBlockY() <= dest.getLocation().getBlockY()) { - logger.debug("This item import at beside or down."); - logger.trace("contents[0]: " + contents[0]); - logger.trace("contents[1]: " + contents[1]); - logger.trace("contents[2]: " + contents[2]); - if (contents[0] != null && contents[1] != null && contents[2] != null) { - logger.debug("This item is clog."); - return; - } else { - logger.debug("This item Export."); - break; - } - } else { - logger.debug("This item import not."); - return; - } - default://ロスト回避 - logger.debug("This Item not support BREW Item."); - return; - } - } else if (dest.getType() == InventoryType.FURNACE - || dest.getType() == InventoryType.BLAST_FURNACE - || dest.getType() == InventoryType.SMOKER) { - logger.debug("This Type is Furnace Series."); - logger.trace("inv.getLocation().getBlockY()" + inv.getLocation().getBlockY()); - logger.trace("dest.getLocation().getBlockY()" + dest.getLocation().getBlockY()); - logger.trace("inv.getLocation().getBlockY() > dest.getLocation().getBlockY(): " + (inv.getLocation().getBlockY() > dest.getLocation().getBlockY())); - if (inv.getLocation().getBlockY() > dest.getLocation().getBlockY()) {//上から搬入 - logger.debug("This item import at up."); - logger.trace("contents[0]: " + contents[0]); - if (contents[0] != null && !item.isSimilar(contents[0])) { - //他のアイテムが詰まってる - logger.debug("This item is clog."); - return; - } - } else { - //横から(下から) - logger.debug("This item import at beside or down."); - logger.trace("contents[1]: " + contents[1]); - if (!item.getType().isFuel() || contents[1] != null && !item.isSimilar(contents[1])) { - //燃料以外 or 他のアイテムが詰まってる - logger.debug("This item is clog or not Fuel."); - return; - } - } - } - - logger.debug("Export Item"); - //PANPANによるロスト回避 - for (int i = 0; i < contents.length; i++) { - logger.trace("i: " + i); - logger.trace("contents[i]: " + contents[i]); - if (item.isSimilar(contents[i])) { - stacks++; - amount += contents[i].getAmount(); - logger.trace(" stacks: " + stacks); - logger.trace(" amount: " + amount); - } - } - logger.trace("amount == stacks * item.getMaxStackSize(): " + (amount - == stacks * item.getMaxStackSize())); - logger.trace("dest.firstEmpty() == -1: " + (dest.firstEmpty() == -1)); - if (amount == stacks * item.getMaxStackSize() && dest.firstEmpty() == -1) { - logger.debug("Item less than Stack.not Export."); - return; - } - - logger.debug("Export Item to Inventory."); - ItemStack cItem = item.clone(); - inv.addItem(cItem); - storageSign.addAmount(-cItem.getAmount()); - } - for (int i = 0; i < 4; i++) { - logger.trace("set Line i:" + i + ". Text: " + storageSign.getSigntext(i)); - sign.getSide(Side.FRONT).setLine(i, storageSign.getSigntext(i)); - } - sign.update(); - logger.debug("ExportSign:End"); - } - @EventHandler public void onPlayerCraft(CraftItemEvent event) { logger.debug("★onPlayerCraft:Start"); diff --git a/src/main/java/wacky/storagesign/runnnable/ExportSign.java b/src/main/java/wacky/storagesign/runnnable/ExportSign.java index ef4fa84..b7ca1bc 100644 --- a/src/main/java/wacky/storagesign/runnnable/ExportSign.java +++ b/src/main/java/wacky/storagesign/runnnable/ExportSign.java @@ -17,44 +17,19 @@ public class ExportSign extends BukkitRunnable { - - // 醸造台の搬入定義 - private static final int SLOT_BREWING_BOTTLE_1 = 0; - private static final int SLOT_BREWING_BOTTLE_2 = 1; - private static final int SLOT_BREWING_BOTTLE_3 = 2; - private static final int SLOT_BREWING_INGREDIENT = 3; - private static final int SLOT_BREWING_FUEL = 4; - - // 醸造台の上部スロットに入るアイテム群 - private static final Set BREWING_INGREDIENTS = EnumSet.of( - Material.NETHER_WART, Material.SUGAR, Material.REDSTONE, Material.GLOWSTONE_DUST, - Material.GUNPOWDER, Material.RABBIT_FOOT, Material.GLISTERING_MELON_SLICE, - Material.GOLDEN_CARROT, Material.MAGMA_CREAM, Material.GHAST_TEAR, - Material.SPIDER_EYE, Material.FERMENTED_SPIDER_EYE, Material.DRAGON_BREATH, - Material.PUFFERFISH, Material.TURTLE_HELMET, Material.PHANTOM_MEMBRANE - ); - - // かまどのスロット定義 - private static final int SLOT_FURNACE_INPUT = 0; - private static final int SLOT_FURNACE_FUEL = 1; private Logger _logger; private InventoryMoveItemEvent _event; - private StorageSign _ss; - private Sign _sign; private ItemStack _moveItem; private Inventory _inventory; private Inventory _destInventory; private Block _block; - public ExportSign(Sign sign, StorageSign storageSign, ItemStack moveItemStack, Inventory sourceInventory, Inventory destInventory, InventoryMoveItemEvent event, Block block, Logger logger){ + public ExportSign(ItemStack moveItemStack, Inventory sourceInventory, Inventory destInventory, InventoryMoveItemEvent event, Block block, Logger logger){ _logger = logger; _logger.debug("★exportSign:Start."); _logger.trace("moveItem: " + moveItemStack); - _logger.trace("storageSign.getAmount(): " + storageSign.getAmount()); _logger.trace("moveItem.getAmount(): " + moveItemStack.getAmount()); _logger.trace("sourceInventory.getLocation(): " + sourceInventory.getLocation()); - _sign = sign; - _ss = storageSign; _moveItem = moveItemStack; _inventory = sourceInventory; _destInventory = destInventory; @@ -68,16 +43,16 @@ public ExportSign(Sign sign, StorageSign storageSign, ItemStack moveItemStack, I @Override public void run() { _destInventory = _event.getSource(); - _sign = (Sign) _block.getState(); - _ss = new StorageSign(_sign, _block.getType(), _logger);; + Sign sign = (Sign) _block.getState(); + StorageSign ss = new StorageSign(sign, _block.getType(), _logger);; _logger.debug("exportSign:Start."); _logger.trace("item: " + _moveItem); _logger.trace("!inv.containsAtLeast(item, item.getMaxStackSize(): " + !_inventory.containsAtLeast(_moveItem, _moveItem.getMaxStackSize())); - _logger.trace("storageSign.getAmount(): " + _ss.getAmount()); + _logger.trace("storageSign.getAmount(): " + ss.getAmount()); _logger.trace("item.getAmount(): " + _moveItem.getAmount()); if (!_inventory.containsAtLeast(_moveItem, _moveItem.getMaxStackSize()) - && _ss.getAmount() >= _moveItem.getAmount()) { + && ss.getAmount() >= _moveItem.getAmount()) { int stacks = 0; int amount = 0; ItemStack[] contents = _destInventory.getContents(); @@ -248,13 +223,13 @@ public void run() { } cItem.setAmount(addAmount); _inventory.addItem(cItem); - _ss.addAmount(-cItem.getAmount()); + ss.addAmount(-cItem.getAmount()); } for (int i = 0; i < 4; i++) { - _logger.trace("set Line i:" + i + ". Text: " + _ss.getSigntext(i)); - _sign.getSide(Side.FRONT).setLine(i, _ss.getSigntext(i)); + _logger.trace("set Line i:" + i + ". Text: " + ss.getSigntext(i)); + sign.getSide(Side.FRONT).setLine(i, ss.getSigntext(i)); } - _sign.update(); + sign.update(); _logger.debug("ExportSign:End"); } }