From 624211fe0b5b85e76d6b23fa33f1905ccd75541e Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 13 Dec 2018 19:06:17 +0100 Subject: [PATCH 01/10] Fixes 5 bugs. Fixes SD-683 Fixes SD-810 Fixes SD-757 Added Mooshroom replant Fixes SD-809 --- .../treefall/NoAnimationTreeDestroyer.java | 71 +++++++++++++++++-- .../ultimatetimber/treefall/TreeChecker.java | 7 +- .../treefall/TreeFallEvent.java | 3 +- .../ultimatetimber/treefall/TreeReplant.java | 6 ++ .../ultimatetimber/treefall/TreeSounds.java | 14 +++- 5 files changed, 90 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java index 03520d0..cc84a9b 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java @@ -1,6 +1,8 @@ package com.songoda.ultimatetimber.treefall; import com.songoda.ultimatetimber.utils.LeafToSaplingConverter; +import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; @@ -13,7 +15,13 @@ public class NoAnimationTreeDestroyer { /* Only ever triggers when people have tree falling animations off in the config */ - public static void destroyTree(HashSet blocks, boolean hasBonusLoot, boolean hasSilkTouch) { + public static void destroyTree(HashSet blocks, boolean hasBonusLoot, boolean hasSilkTouch, Block minedLog) { + + Block mainLog = getMainLog(minedLog.getLocation()); + + Material oldMaterial = mainLog.getType(); + Byte oldData = mainLog.getData(); + Location mainLogLocation = mainLog.getLocation().clone(); for (Block block : blocks) { @@ -22,10 +30,12 @@ public class NoAnimationTreeDestroyer { if (material.equals(Material.AIR)) continue; if (material.equals(Material.VINE)) continue; + ItemStack toDrop = getItem(material); + if (hasSilkTouch) { if (hasBonusLoot) - block.getWorld().dropItem(block.getLocation(), new ItemStack(block.getType(), 1)); - block.getWorld().dropItem(block.getLocation(), new ItemStack(block.getType(), 1)); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); CustomLoot.doCustomItemDrop(block.getLocation()); block.setType(Material.AIR); continue; @@ -40,9 +50,9 @@ public class NoAnimationTreeDestroyer { if (ThreadLocalRandom.current().nextDouble() < 0.05) { if (hasBonusLoot) { - block.getWorld().dropItem(block.getLocation(), new ItemStack(material, 1)); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); } - block.getWorld().dropItem(block.getLocation(), new ItemStack(material, 1)); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); block.setType(Material.AIR); CustomLoot.doCustomItemDrop(block.getLocation()); continue; @@ -55,13 +65,60 @@ public class NoAnimationTreeDestroyer { } if (hasBonusLoot) - block.getWorld().dropItem(block.getLocation(), new ItemStack(material, 1)); - block.getWorld().dropItem(block.getLocation(), new ItemStack(material, 1)); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); + block.getWorld().dropItem(block.getLocation(), toDrop.clone()); + + block.setType(Material.AIR); CustomLoot.doCustomItemDrop(block.getLocation()); } + if(mainLogLocation.getBlock().getType() == Material.AIR) { + TreeReplant.replaceOriginalBlock(mainLogLocation.getBlock()); + } + + } + + static Block getMainLog(Location loc){ + + int maxHeight = 7; + + Location clonedLocation = loc.getBlock().getLocation(); + Block toReturn = null; + + Location check1 = clonedLocation.clone(); + + if(check1.add(0,-1,0).getBlock().getType() != loc.getBlock().getType()){ + return clonedLocation.getBlock(); + } + + for(int i = 0; i < maxHeight;i++){ + + if(clonedLocation.add(0,-1,0).getBlock().getType() == loc.getBlock().getType()){ + + Location secondClone = clonedLocation.clone(); + + if(secondClone.add(0,-1,0).getBlock().getType() != loc.getBlock().getType()){ + toReturn = clonedLocation.getBlock(); + } + + } + + } + return toReturn; + + } + + static ItemStack getItem(Material material){ + + if(material == Material.BROWN_MUSHROOM_BLOCK){ + return new ItemStack(Material.BROWN_MUSHROOM, 1); + } else if(material == Material.RED_MUSHROOM_BLOCK){ + return new ItemStack(Material.RED_MUSHROOM, 1); + } + return new ItemStack(material, 1); + } } diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java index dbc0496..e3486ba 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java @@ -24,12 +24,15 @@ public class TreeChecker { boolean containsLeaves = false; - for (Block localBlock : blocks) + for (Block localBlock : blocks) { if (TreeChecker.validTreeMaterials.contains(localBlock.getType())) { containsLeaves = true; break; + } else if(TreeChecker.validMaterials.contains(localBlock.getType())){ + containsLeaves = true; + break; } - + } if (!containsLeaves) return null; diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java index c0c22ed..60d010f 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java @@ -2,6 +2,7 @@ package com.songoda.ultimatetimber.treefall; import com.songoda.ultimatetimber.UltimateTimber; import com.songoda.ultimatetimber.configurations.DefaultConfig; +import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.enchantments.Enchantment; @@ -52,7 +53,7 @@ public class TreeFallEvent implements Listener { treeFallAnimation.startAnimation(event.getBlock(), blocks, event.getPlayer()); } else { NoAnimationTreeDestroyer.destroyTree(blocks, event.getPlayer().hasPermission("ultimatetimber.bonusloot"), - event.getPlayer().getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH)); + event.getPlayer().getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH), event.getBlock()); } } diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java index 1e3e269..14c8ba3 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java @@ -68,6 +68,12 @@ public class TreeReplant { case STRIPPED_SPRUCE_LOG: block.setType(Material.SPRUCE_SAPLING); return; + case BROWN_MUSHROOM_BLOCK: + block.setType(Material.BROWN_MUSHROOM); + return; + case RED_MUSHROOM_BLOCK: + block.setType(Material.RED_MUSHROOM); + return; default: block.setType(Material.AIR); } diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeSounds.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeSounds.java index 3d46139..a196795 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeSounds.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeSounds.java @@ -1,5 +1,6 @@ package com.songoda.ultimatetimber.treefall; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Sound; import org.bukkit.entity.FallingBlock; @@ -8,11 +9,22 @@ public class TreeSounds { public static void tipOverNoise(Location location) { - location.getWorld().playSound(location, Sound.BLOCK_CHEST_OPEN, 3F, 0.1F); + if(Bukkit.getServer().getClass().getPackage().toString().contains("8")){ + location.getWorld().playSound(location, Sound.valueOf("CHEST_OPEN"), 3f,0.1f); + } else { + + location.getWorld().playSound(location, Sound.BLOCK_CHEST_OPEN, 3F, 0.1F); + } } public static void fallNoise(FallingBlock fallingBlock) { + + if(Bukkit.getServer().getClass().getPackage().toString().contains("8")){ + fallingBlock.getWorld().playSound(fallingBlock.getLocation(), Sound.valueOf("ANVIL_LAND"), 3F, 0.1F); + return; + } + if (fallingBlock.getTicksLived() < 20) fallingBlock.getWorld().playSound(fallingBlock.getLocation(), Sound.BLOCK_ANVIL_FALL, 3F, 0.1F); else From 17cb5b6b766690ef3186bd13c10359fb0d71ffa7 Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 14 Dec 2018 16:38:09 +0200 Subject: [PATCH 02/10] Update TreeFallAnimation.java Makes the animation in the middle of block. --- .../com/songoda/ultimatetimber/treefall/TreeFallAnimation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java index 6903051..d070c1e 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java @@ -128,7 +128,7 @@ public class TreeFallAnimation implements Listener { for (Block block : blocks) { - FallingBlock fallingBlock = block.getWorld().spawnFallingBlock(block.getLocation(), block.getBlockData()); + FallingBlock fallingBlock = block.getWorld().spawnFallingBlock(block.getLocation().clone().add(0.5,0,0.5), block.getBlockData()); fallingBlock.setDropItem(false); registerFallingBlock(fallingBlock); From e485388b3d329be97170c38ba2857d3746d55be9 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 15 Dec 2018 12:53:26 +0200 Subject: [PATCH 03/10] TreeCheck & NoAnimationTreeDestroye update Increased accuracy of TreeCheck Fixed that when animation is disabled, it doesn't replant. --- .gitignore | 1 + .../songoda/ultimatetimber/treefall/TreeChecker.java | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index aa5a461..471d272 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,4 @@ target/classes/config\.yml \.idea/libraries/Maven__org_yaml_snakeyaml_1_18\.xml target/classes/com/songoda/ultimatetimber/utils/VersionChecker\.class +target/UltimateTimber-maven-version-number.jar diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java index e3486ba..69f7376 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java @@ -57,7 +57,7 @@ public class TreeChecker { offset determines the search radius around the main trunk maxheight sets the maximum height the plugin will crawl through to find a tree */ - int offset = 5; + int offset = 8; int maxHeight = 31; /* @@ -108,11 +108,11 @@ public class TreeChecker { int radMin, radMax; if (i > 5) { - radMin = -2; - radMax = 3; + radMin = -3; //-2 + radMax = 4; //3 } else { - radMin = -1; - radMax = 2; + radMin = -2; //-1 + radMax = 3; //2 } for (int x = radMin; x < radMax; x++) From 5af145615b2a3c18ec80e578ee13d714524a5b47 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 15 Dec 2018 12:53:31 +0200 Subject: [PATCH 04/10] Update NoAnimationTreeDestroyer.java --- .../ultimatetimber/treefall/NoAnimationTreeDestroyer.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java index cc84a9b..b53726d 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java @@ -19,12 +19,12 @@ public class NoAnimationTreeDestroyer { Block mainLog = getMainLog(minedLog.getLocation()); - Material oldMaterial = mainLog.getType(); - Byte oldData = mainLog.getData(); Location mainLogLocation = mainLog.getLocation().clone(); for (Block block : blocks) { + TreeReplant.replaceOriginalBlock(block); + Material material = LeafToSaplingConverter.convertLeaves(block.getType()); if (material.equals(Material.AIR)) continue; @@ -74,9 +74,6 @@ public class NoAnimationTreeDestroyer { } - if(mainLogLocation.getBlock().getType() == Material.AIR) { - TreeReplant.replaceOriginalBlock(mainLogLocation.getBlock()); - } } From 9495d15d678e7d223b7241579c8a9caaede9d81f Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 15 Dec 2018 13:32:50 +0200 Subject: [PATCH 05/10] TreeChecker update Made so Mushrooms replant, Increased accuracy of TreeChecker --- .../treefall/NoAnimationTreeDestroyer.java | 18 ++++- .../ultimatetimber/treefall/TreeChecker.java | 8 +-- .../ultimatetimber/treefall/TreeReplant.java | 66 +++++++++++++++++- .../treefall/TreeReplant$3.class | Bin 0 -> 1727 bytes .../compile/java-compile/createdFiles.lst | 2 + .../compile/java-compile/inputFiles.lst | 18 +++++ 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 target/classes/com/songoda/ultimatetimber/treefall/TreeReplant$3.class create mode 100644 target/maven-status/maven-compiler-plugin/compile/java-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/java-compile/inputFiles.lst diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java index b53726d..7ce3eb7 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java @@ -6,9 +6,11 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; +import sun.reflect.generics.tree.Tree; import java.util.HashSet; import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; public class NoAnimationTreeDestroyer { @@ -17,13 +19,23 @@ public class NoAnimationTreeDestroyer { */ public static void destroyTree(HashSet blocks, boolean hasBonusLoot, boolean hasSilkTouch, Block minedLog) { - Block mainLog = getMainLog(minedLog.getLocation()); + Material leavesType = null; - Location mainLogLocation = mainLog.getLocation().clone(); + if(!blocks.stream().filter(b -> b.getType() == Material.BROWN_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()){ + + leavesType = Material.BROWN_MUSHROOM_BLOCK; + + leavesType = Material.RED_MUSHROOM_BLOCK; + } else { + } for (Block block : blocks) { - TreeReplant.replaceOriginalBlock(block); + if(leavesType != null){ + TreeReplant.replaceOriginalBlock(block, leavesType); + } else{ + TreeReplant.replaceOriginalBlock(block); + } Material material = LeafToSaplingConverter.convertLeaves(block.getType()); diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java index 69f7376..4adeb9d 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java @@ -57,7 +57,7 @@ public class TreeChecker { offset determines the search radius around the main trunk maxheight sets the maximum height the plugin will crawl through to find a tree */ - int offset = 8; + int offset = 5; int maxHeight = 31; /* @@ -141,11 +141,11 @@ public class TreeChecker { int radMin, radMax; if (i > 5) { + radMin = -4; + radMax = 5; + } else { radMin = -3; radMax = 4; - } else { - radMin = -2; - radMax = 3; } diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java index 14c8ba3..127d3d1 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java @@ -28,7 +28,7 @@ public class TreeReplant { } if (!block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.DIRT) && - !block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.COARSE_DIRT)) { + !block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.COARSE_DIRT) && !block.getLocation().clone().subtract(new Vector(0,1,0)).getBlock().getType().equals(Material.PODZOL)) { block.setType(Material.AIR); return; } @@ -82,6 +82,70 @@ public class TreeReplant { } + public static void replaceOriginalBlock(Block block, Material leavesType) { + + boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK); + + if (!UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.REPLANT_SAPLING)) { + block.setType(Material.AIR); + return; + } + + if (!block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.DIRT) && + !block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.COARSE_DIRT) && !block.getLocation().clone().subtract(new Vector(0,1,0)).getBlock().getType().equals(Material.PODZOL)) { + block.setType(Material.AIR); + return; + } + + Material material = block.getType(); + + if (isTimeout) { + timeout.add(block.getLocation()); + Bukkit.getScheduler().scheduleSyncDelayedTask(UltimateTimber.getInstance(), () -> timeout.remove(block.getLocation()), 20 * 5); + } + + new BukkitRunnable() { + @Override + public void run() { + switch (material) { + case ACACIA_LOG: + case STRIPPED_ACACIA_LOG: + block.setType(Material.ACACIA_SAPLING); + return; + case BIRCH_LOG: + case STRIPPED_BIRCH_LOG: + block.setType(Material.BIRCH_SAPLING); + return; + case DARK_OAK_LOG: + case STRIPPED_DARK_OAK_LOG: + block.setType(Material.DARK_OAK_SAPLING); + return; + case JUNGLE_LOG: + case STRIPPED_JUNGLE_LOG: + block.setType(Material.JUNGLE_SAPLING); + return; + case OAK_LOG: + case STRIPPED_OAK_LOG: + block.setType(Material.OAK_SAPLING); + return; + case SPRUCE_LOG: + case STRIPPED_SPRUCE_LOG: + block.setType(Material.SPRUCE_SAPLING); + return; + default: + if(leavesType == Material.BROWN_MUSHROOM_BLOCK){ + block.setType(Material.BROWN_MUSHROOM); + } else if(leavesType == Material.RED_MUSHROOM_BLOCK){ + block.setType(Material.RED_MUSHROOM); + } else{ + block.setType(Material.AIR); + } + } + } + }.runTaskLater(UltimateTimber.getInstance(), 1); + + } + public static void leafFallReplant(FallingBlock fallingBlock) { Material material; diff --git a/target/classes/com/songoda/ultimatetimber/treefall/TreeReplant$3.class b/target/classes/com/songoda/ultimatetimber/treefall/TreeReplant$3.class new file mode 100644 index 0000000000000000000000000000000000000000..959ec039f1e49023fe98579580d43b55c5171c30 GIT binary patch literal 1727 zcmb`HU2ofD6vzKhlh%pntX`6_ZonukK+8+Lt=)Lp7)#x>&6<}Ir!7z*xQ^F)b?xFf z;}!`%01|uvq#rF3qcB=M%A&j;QTixAVFD_K=*o{2f7Z}+r3#2YPz884$6@kRm z^twRO4BM{2c*P6cT6b^DjhgnBPnm2bbZmd!rpDy`WX6hZXP1WPIW0~=wZd-XxQiY) z(wmX%Hr##R4&s>`_D!35E(MMscD!J_>c%@^Tfu^Yl7>YrX}A~nX;?;C!!@i3oZ==1 zHQqLAq1APE7CqN*m!c?)G*q~(%BV5wj8(=9j0VGEG#P7*b;btcMaD~vml>OkR~WA{ zUIXpSIVapRI$^LKwr!*9$KD?89Fca!h-p>VZQnPBmRFb+(8@vJMy79fI&OznFQ;GM zy5Typfbk!D70A)y83%`F$io}EY5QFsV`6H0vvQY`OLP)NvuKu!txA1K;P}53DPh$1 z0=^G){HCc=qWp>7)ojj#l}jjUR>#qHmLb)UcI(fTdI@} zisVqkS!K|PKImkSQmxg-n)#3R!`b|NqrOpVRoATLM!jBb%~$FsU8QV;mh|^z=5URr z;(E!V^Xspuuj6v^{Y>U?rhQj?Gduk9a2h?=C+U}eiv9_NKEd~z-;l!nI8E^ZVB`%X z=nbOu1;m}N)Y};Ols}2jkxbS Date: Sat, 15 Dec 2018 13:37:50 +0200 Subject: [PATCH 06/10] Update NoAnimationTreeDestroyer.java --- .../ultimatetimber/treefall/NoAnimationTreeDestroyer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java index 7ce3eb7..c4315b6 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/NoAnimationTreeDestroyer.java @@ -25,6 +25,7 @@ public class NoAnimationTreeDestroyer { leavesType = Material.BROWN_MUSHROOM_BLOCK; + } else if(!blocks.stream().filter(b -> b.getType() == Material.RED_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()){ leavesType = Material.RED_MUSHROOM_BLOCK; } else { } From e2593d34225d43ecb64c243eca7bbd1d4181ff10 Mon Sep 17 00:00:00 2001 From: Brian Date: Sun, 16 Dec 2018 15:20:59 +0200 Subject: [PATCH 07/10] reload command permission check --- .../ultimatetimber/commands/ReloadCommand.java | 12 ++++++++++++ .../ultimatetimber/treefall/TreeFallEvent.java | 1 + 2 files changed, 13 insertions(+) diff --git a/src/main/java/com/songoda/ultimatetimber/commands/ReloadCommand.java b/src/main/java/com/songoda/ultimatetimber/commands/ReloadCommand.java index ac4a8dd..bd586de 100644 --- a/src/main/java/com/songoda/ultimatetimber/commands/ReloadCommand.java +++ b/src/main/java/com/songoda/ultimatetimber/commands/ReloadCommand.java @@ -3,11 +3,23 @@ package com.songoda.ultimatetimber.commands; import com.songoda.ultimatetimber.UltimateTimber; import com.songoda.ultimatetimber.treefall.CustomLoot; import com.songoda.ultimatetimber.utils.Methods; +import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; public class ReloadCommand { public static void reloadConfig(CommandSender commandSender) { + + if(commandSender instanceof Player){ + + if(!commandSender.hasPermission("ut.reload")){ + commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission!")); + return; + } + + } + UltimateTimber plugin = UltimateTimber.getInstance(); plugin.reloadConfig(); CustomLoot.initializeCustomItems(); diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java index 60d010f..164a078 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java @@ -32,6 +32,7 @@ public class TreeFallEvent implements Listener { TreeChecker treeChecker = new TreeChecker(); HashSet blocks = treeChecker.validTreeHandler(event.getBlock()); + Bukkit.broadcastMessage(blocks.toString()); /* Previous list will be null if no valid tree is found From 14753fab8661276ecb3fd1521b5fc47d88dbc373 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 17 Dec 2018 15:53:20 +0200 Subject: [PATCH 08/10] Bug fixes --- .../ultimatetimber/treefall/TreeChecker.java | 16 ++++++++-------- .../treefall/TreeFallAnimation.java | 3 ++- .../ultimatetimber/treefall/TreeFallEvent.java | 3 ++- .../ultimatetimber/treefall/TreeLoot.java | 1 + .../ultimatetimber/treefall/TreeReplant.java | 1 + 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java index 4adeb9d..f195319 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java @@ -108,11 +108,11 @@ public class TreeChecker { int radMin, radMax; if (i > 5) { - radMin = -3; //-2 - radMax = 4; //3 + radMin = -2; + radMax = 3; } else { - radMin = -2; //-1 - radMax = 3; //2 + radMin = -1; + radMax = 2; } for (int x = radMin; x < radMax; x++) @@ -141,11 +141,11 @@ public class TreeChecker { int radMin, radMax; if (i > 5) { - radMin = -4; - radMax = 5; + radMin = -5; + radMax = 7; } else { - radMin = -3; - radMax = 4; + radMin = -4; + radMax = 6; } diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java index d070c1e..2957ef6 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallAnimation.java @@ -131,6 +131,7 @@ public class TreeFallAnimation implements Listener { FallingBlock fallingBlock = block.getWorld().spawnFallingBlock(block.getLocation().clone().add(0.5,0,0.5), block.getBlockData()); fallingBlock.setDropItem(false); + registerFallingBlock(fallingBlock); /* @@ -138,7 +139,7 @@ public class TreeFallAnimation implements Listener { */ if (block.getType().equals(Material.AIR)) continue; - /* + /* Remove original block */ TreeReplant.replaceOriginalBlock(block); diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java index 164a078..787d8ee 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java @@ -27,8 +27,9 @@ public class TreeFallEvent implements Listener { if (event.getBlock() != null && event.getBlock().getType().name().contains("SAPLING") && fileConfiguration.getBoolean(DefaultConfig.TIMEOUT_BREAK) && TreeReplant.isTimeout(event.getBlock())) event.setCancelled(true); - if (!EventFilter.eventIsValid(event)) return; + if(fileConfiguration.getBoolean(DefaultConfig.SNEAK_ONLY) && !event.getPlayer().isSneaking()) return; + TreeChecker treeChecker = new TreeChecker(); HashSet blocks = treeChecker.validTreeHandler(event.getBlock()); diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeLoot.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeLoot.java index a6746f5..88ead78 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeLoot.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeLoot.java @@ -4,6 +4,7 @@ import com.songoda.ultimatetimber.utils.LeafToSaplingConverter; import org.bukkit.Material; import org.bukkit.entity.FallingBlock; import org.bukkit.inventory.ItemStack; +import org.bukkit.material.MaterialData; import java.util.concurrent.ThreadLocalRandom; diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java index 127d3d1..d22a11e 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeReplant.java @@ -20,6 +20,7 @@ public class TreeReplant { public static void replaceOriginalBlock(Block block) { + boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK); if (!UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.REPLANT_SAPLING)) { From 4813fc90327db01b968ad029476a3a45c5b81650 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 17 Dec 2018 16:10:43 +0200 Subject: [PATCH 09/10] Bug Fixes --- .../treefall/TreeFallEvent.java | 2 -- ...mateTimber-Legacy-maven-version-number.jar | Bin 0 -> 37634 bytes .../treefall/TreeReplant$3.class | Bin 1727 -> 1727 bytes 3 files changed, 2 deletions(-) create mode 100644 target/UltimateTimber-Legacy-maven-version-number.jar diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java index 787d8ee..75db0ad 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeFallEvent.java @@ -33,8 +33,6 @@ public class TreeFallEvent implements Listener { TreeChecker treeChecker = new TreeChecker(); HashSet blocks = treeChecker.validTreeHandler(event.getBlock()); - Bukkit.broadcastMessage(blocks.toString()); - /* Previous list will be null if no valid tree is found */ diff --git a/target/UltimateTimber-Legacy-maven-version-number.jar b/target/UltimateTimber-Legacy-maven-version-number.jar new file mode 100644 index 0000000000000000000000000000000000000000..0e048ae9b77b436738fc9b45d4f1584cf106c9cd GIT binary patch literal 37634 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 Date: Mon, 17 Dec 2018 17:22:07 +0200 Subject: [PATCH 10/10] Bug Fixes --- .../ultimatetimber/treefall/CustomLoot.java | 2 ++ .../ultimatetimber/treefall/TreeChecker.java | 8 ++++---- target/UltimateTimber-Legacy.jar | Bin 0 -> 37762 bytes 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 target/UltimateTimber-Legacy.jar diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/CustomLoot.java b/src/main/java/com/songoda/ultimatetimber/treefall/CustomLoot.java index eac35b5..acf5bdc 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/CustomLoot.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/CustomLoot.java @@ -31,6 +31,8 @@ public class CustomLoot { public static void initializeCustomItems() { + itemMap.clear(); + FileConfiguration fileConfiguration = UltimateTimber.getInstance().getConfig(); List arrayList = (List) fileConfiguration.getList(DefaultConfig.CUSTOM_LOOT_LIST); diff --git a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java index f195319..f0a56c1 100644 --- a/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java +++ b/src/main/java/com/songoda/ultimatetimber/treefall/TreeChecker.java @@ -57,7 +57,7 @@ public class TreeChecker { offset determines the search radius around the main trunk maxheight sets the maximum height the plugin will crawl through to find a tree */ - int offset = 5; + int offset = 7; int maxHeight = 31; /* @@ -141,11 +141,11 @@ public class TreeChecker { int radMin, radMax; if (i > 5) { - radMin = -5; - radMax = 7; - } else { radMin = -4; radMax = 6; + } else { + radMin = -3; + radMax = 5; } diff --git a/target/UltimateTimber-Legacy.jar b/target/UltimateTimber-Legacy.jar new file mode 100644 index 0000000000000000000000000000000000000000..dd9eec9617ddaa93d12026016468549af8794104 GIT binary patch literal 37762 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