This commit is contained in:
Brianna O'Keefe 2018-12-19 12:58:05 -05:00
parent 2ff0745a32
commit 08d304444e
14 changed files with 153 additions and 169 deletions

View File

@ -24,12 +24,14 @@ PS: MagmaGuy was here
public class UltimateTimber extends JavaPlugin { public class UltimateTimber extends JavaPlugin {
private static CommandSender console = Bukkit.getConsoleSender(); private static CommandSender console = Bukkit.getConsoleSender();
private final String prefix = "&8[&6UltimateTimber&8]";
private static UltimateTimber INSTANCE; private static UltimateTimber INSTANCE;
private final String prefix = "&8[&6UltimateTimber&8]";
private List<World> validWorlds = new ArrayList<>(); private List<World> validWorlds = new ArrayList<>();
public static UltimateTimber getInstance() {
return INSTANCE;
}
@Override @Override
public void onEnable() { public void onEnable() {
@ -76,10 +78,6 @@ public class UltimateTimber extends JavaPlugin {
validWorlds.clear(); validWorlds.clear();
} }
public static UltimateTimber getInstance() {
return INSTANCE;
}
public List<World> getValidWorlds() { public List<World> getValidWorlds() {
return Collections.unmodifiableList(validWorlds); return Collections.unmodifiableList(validWorlds);
} }
@ -87,6 +85,7 @@ public class UltimateTimber extends JavaPlugin {
public String getPrefix() { public String getPrefix() {
return prefix; return prefix;
} }
private boolean checkVersion() { private boolean checkVersion() {
int workingVersion = 13; int workingVersion = 13;
int currentVersion = Integer.parseInt(Bukkit.getServer().getClass() int currentVersion = Integer.parseInt(Bukkit.getServer().getClass()

View File

@ -7,13 +7,13 @@ import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class ReloadCommand { class ReloadCommand {
public static void reloadConfig(CommandSender commandSender) { static void reloadConfig(CommandSender commandSender) {
if(commandSender instanceof Player){ if (commandSender instanceof Player) {
if(!commandSender.hasPermission("ut.reload")){ if (!commandSender.hasPermission("ut.reload")) {
commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission!")); commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission!"));
return; return;
} }

View File

@ -8,15 +8,14 @@ import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
public class AxeDurability { class AxeDurability {
/* /*
This class handles all durability damage dealt to the axe used to chop down the tree, only takes into account This class handles all durability damage dealt to the axe used to chop down the tree, only takes into account
wood blocks chopped down wood blocks chopped down
*/ */
public static void adjustAxeDamage(HashSet<Block> blocks, Player player) { static void adjustAxeDamage(HashSet<Block> blocks, Player player) {
ItemStack item = player.getInventory().getItemInMainHand(); ItemStack item = player.getInventory().getItemInMainHand();
if (!(item.getType().equals(Material.DIAMOND_AXE) || if (!(item.getType().equals(Material.DIAMOND_AXE) ||
@ -44,7 +43,8 @@ public class AxeDurability {
item.setItemMeta((ItemMeta) damageableMeta); item.setItemMeta((ItemMeta) damageableMeta);
if (item.getDurability() >= item.getType().getMaxDurability()) player.setItemInHand(new ItemStack(Material.AIR)); if (item.getDurability() >= item.getType().getMaxDurability())
player.setItemInHand(new ItemStack(Material.AIR));
} }
} }

View File

@ -23,7 +23,7 @@ public class CustomLoot {
*/ */
private static HashMap<ItemStack, Double> itemMap = new HashMap<>(); private static HashMap<ItemStack, Double> itemMap = new HashMap<>();
public static void doCustomItemDrop(Location location) { static void doCustomItemDrop(Location location) {
for (ItemStack itemStack : itemMap.keySet()) for (ItemStack itemStack : itemMap.keySet())
if ((ThreadLocalRandom.current().nextDouble()) < itemMap.get(itemStack) / 100) if ((ThreadLocalRandom.current().nextDouble()) < itemMap.get(itemStack) / 100)
location.getWorld().dropItem(location, itemStack); location.getWorld().dropItem(location, itemStack);

View File

@ -7,23 +7,21 @@ import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
public class EventFilter { class EventFilter {
/* /*
Incorporate all checks that would disqualify this event from happening Incorporate all checks that would disqualify this event from happening
Mostly config settings, also permissions Mostly config settings, also permissions
*/ */
public static boolean eventIsValid(BlockBreakEvent event) { static boolean eventIsValid(BlockBreakEvent event) {
UltimateTimber plugin = UltimateTimber.getInstance(); UltimateTimber plugin = UltimateTimber.getInstance();
/* /*
General catchers General catchers
*/ */
if (event.isCancelled()) return false; if (event.isCancelled()
|| !plugin.getValidWorlds().contains(event.getPlayer().getWorld())
if (!plugin.getValidWorlds().contains(event.getPlayer().getWorld())) return false; || !TreeChecker.validMaterials.contains(event.getBlock().getType())) return false;
if (!TreeChecker.validMaterials.contains(event.getBlock().getType())) return false;
FileConfiguration fileConfiguration = UltimateTimber.getInstance().getConfig(); FileConfiguration fileConfiguration = UltimateTimber.getInstance().getConfig();
@ -42,10 +40,10 @@ public class EventFilter {
event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.WOODEN_AXE))) event.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.WOODEN_AXE)))
return false; return false;
if (fileConfiguration.getBoolean(DefaultConfig.SNEAK_ONLY) && if (fileConfiguration.getBoolean(DefaultConfig.SNEAK_ONLY) &&
!event.getPlayer().isSneaking()) !event.getPlayer().isSneaking())
return false; return false;
return !fileConfiguration.getBoolean(DefaultConfig.PERMISSIONS_ONLY) || return !fileConfiguration.getBoolean(DefaultConfig.PERMISSIONS_ONLY) ||
event.getPlayer().hasPermission("ultimatetimber.chop"); event.getPlayer().hasPermission("ultimatetimber.chop");

View File

@ -1,31 +1,28 @@
package com.songoda.ultimatetimber.treefall; package com.songoda.ultimatetimber.treefall;
import com.songoda.ultimatetimber.utils.LeafToSaplingConverter; import com.songoda.ultimatetimber.utils.LeafToSaplingConverter;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import sun.reflect.generics.tree.Tree;
import java.util.HashSet; import java.util.HashSet;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class NoAnimationTreeDestroyer { class NoAnimationTreeDestroyer {
/* /*
Only ever triggers when people have tree falling animations off in the config Only ever triggers when people have tree falling animations off in the config
*/ */
public static void destroyTree(HashSet<Block> blocks, boolean hasBonusLoot, boolean hasSilkTouch) { static void destroyTree(HashSet<Block> blocks, boolean hasBonusLoot, boolean hasSilkTouch) {
Material leavesType = null; Material leavesType = null;
if(!blocks.stream().filter(b -> b.getType() == Material.BROWN_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()){ if (!blocks.stream().filter(b -> b.getType() == Material.BROWN_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()) {
leavesType = Material.BROWN_MUSHROOM_BLOCK; leavesType = Material.BROWN_MUSHROOM_BLOCK;
} else if(!blocks.stream().filter(b -> b.getType() == Material.RED_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()){ } else if (!blocks.stream().filter(b -> b.getType() == Material.RED_MUSHROOM_BLOCK).collect(Collectors.toList()).isEmpty()) {
leavesType = Material.RED_MUSHROOM_BLOCK; leavesType = Material.RED_MUSHROOM_BLOCK;
} }
@ -33,8 +30,7 @@ public class NoAnimationTreeDestroyer {
Material material = LeafToSaplingConverter.convertLeaves(block.getType()); Material material = LeafToSaplingConverter.convertLeaves(block.getType());
if (material.equals(Material.AIR)) continue; if (material.equals(Material.AIR) || material.equals(Material.VINE)) continue;
if (material.equals(Material.VINE)) continue;
ItemStack toDrop = getItem(material); ItemStack toDrop = getItem(material);
@ -78,9 +74,9 @@ public class NoAnimationTreeDestroyer {
block.setType(Material.AIR); block.setType(Material.AIR);
CustomLoot.doCustomItemDrop(block.getLocation()); CustomLoot.doCustomItemDrop(block.getLocation());
if(leavesType != null){ if (leavesType != null) {
TreeReplant.replaceOriginalBlock(block, leavesType); TreeReplant.replaceOriginalBlock(block, leavesType);
} else{ } else {
TreeReplant.replaceOriginalBlock(block); TreeReplant.replaceOriginalBlock(block);
} }
@ -89,11 +85,11 @@ public class NoAnimationTreeDestroyer {
} }
static ItemStack getItem(Material material){ static ItemStack getItem(Material material) {
if(material == Material.BROWN_MUSHROOM_BLOCK){ if (material == Material.BROWN_MUSHROOM_BLOCK) {
return new ItemStack(Material.BROWN_MUSHROOM, 1); return new ItemStack(Material.BROWN_MUSHROOM, 1);
} else if(material == Material.RED_MUSHROOM_BLOCK){ } else if (material == Material.RED_MUSHROOM_BLOCK) {
return new ItemStack(Material.RED_MUSHROOM, 1); return new ItemStack(Material.RED_MUSHROOM, 1);
} }
return new ItemStack(material, 1); return new ItemStack(material, 1);

View File

@ -8,14 +8,87 @@ import org.bukkit.util.Vector;
import java.util.*; import java.util.*;
public class TreeChecker { class TreeChecker {
/*
Used to check if a tree is a tree
*/
static List<Material> validMaterials = new ArrayList<>(Arrays.asList(
Material.ACACIA_LOG,
Material.STRIPPED_ACACIA_LOG,
Material.BIRCH_LOG,
Material.STRIPPED_BIRCH_LOG,
Material.DARK_OAK_LOG,
Material.STRIPPED_DARK_OAK_LOG,
Material.JUNGLE_LOG,
Material.STRIPPED_JUNGLE_LOG,
Material.OAK_LOG,
Material.STRIPPED_OAK_LOG,
Material.SPRUCE_LOG,
Material.STRIPPED_SPRUCE_LOG,
Material.MUSHROOM_STEM
));
/*
Used to limit the blocks that constitute a tree
*/
private static List<Material> validTreeMaterials = new ArrayList<>(Arrays.asList(
Material.ACACIA_LEAVES,
Material.BIRCH_LEAVES,
Material.DARK_OAK_LEAVES,
Material.JUNGLE_LEAVES,
Material.OAK_LEAVES,
Material.SPRUCE_LEAVES,
Material.COCOA_BEANS,
Material.BROWN_MUSHROOM_BLOCK,
Material.RED_MUSHROOM_BLOCK
));
/*
A list of materials found in a forest, allows the plugin to work in dense woods
*/
private static List<Material> forestMaterials = new ArrayList<>(Arrays.asList(
Material.AIR,
Material.CAVE_AIR,
Material.VOID_AIR,
Material.VINE,
Material.ROSE_BUSH,
Material.ORANGE_TULIP,
Material.PINK_TULIP,
Material.RED_TULIP,
Material.POPPY,
Material.WHITE_TULIP,
Material.OXEYE_DAISY,
Material.AZURE_BLUET,
Material.BLUE_ORCHID,
Material.ALLIUM,
Material.DANDELION,
Material.DANDELION_YELLOW,
Material.LILAC,
Material.PEONY,
Material.TALL_GRASS,
Material.FERN,
Material.LARGE_FERN,
Material.DEAD_BUSH,
Material.BROWN_MUSHROOM,
Material.RED_MUSHROOM,
Material.GRASS,
Material.SPRUCE_SAPLING,
Material.OAK_SAPLING,
Material.JUNGLE_SAPLING,
Material.ACACIA_SAPLING,
Material.BIRCH_SAPLING,
Material.DARK_OAK_SAPLING,
Material.DIRT,
Material.COARSE_DIRT,
Material.GRASS_BLOCK,
Material.SNOW,
Material.SNOW_BLOCK
));
/* /*
This stores all the blocks returned later on This stores all the blocks returned later on
*/ */
private HashSet<Block> allBlocks = new HashSet<>(); private HashSet<Block> allBlocks = new HashSet<>();
public HashSet<Block> validTreeHandler(Block block) { HashSet<Block> validTreeHandler(Block block) {
HashSet<Block> blocks = parseTree(block); HashSet<Block> blocks = parseTree(block);
@ -28,7 +101,7 @@ public class TreeChecker {
if (TreeChecker.validTreeMaterials.contains(localBlock.getType())) { if (TreeChecker.validTreeMaterials.contains(localBlock.getType())) {
containsLeaves = true; containsLeaves = true;
break; break;
} else if(TreeChecker.validMaterials.contains(localBlock.getType())){ } else if (TreeChecker.validMaterials.contains(localBlock.getType())) {
containsLeaves = true; containsLeaves = true;
break; break;
} }
@ -46,7 +119,7 @@ public class TreeChecker {
* @param block block the player originally destroys * @param block block the player originally destroys
* @return returns null if the tree isn't valid or all blocks in the tree if it isn't * @return returns null if the tree isn't valid or all blocks in the tree if it isn't
*/ */
public HashSet<Block> parseTree(Block block) { private HashSet<Block> parseTree(Block block) {
/* /*
Check if material is parsed by this plugin Check if material is parsed by this plugin
@ -203,80 +276,4 @@ public class TreeChecker {
} }
/*
Used to check if a tree is a tree
*/
public static List<Material> validMaterials = new ArrayList<>(Arrays.asList(
Material.ACACIA_LOG,
Material.STRIPPED_ACACIA_LOG,
Material.BIRCH_LOG,
Material.STRIPPED_BIRCH_LOG,
Material.DARK_OAK_LOG,
Material.STRIPPED_DARK_OAK_LOG,
Material.JUNGLE_LOG,
Material.STRIPPED_JUNGLE_LOG,
Material.OAK_LOG,
Material.STRIPPED_OAK_LOG,
Material.SPRUCE_LOG,
Material.STRIPPED_SPRUCE_LOG,
Material.MUSHROOM_STEM
));
/*
Used to limit the blocks that constitute a tree
*/
public static List<Material> validTreeMaterials = new ArrayList<>(Arrays.asList(
Material.ACACIA_LEAVES,
Material.BIRCH_LEAVES,
Material.DARK_OAK_LEAVES,
Material.JUNGLE_LEAVES,
Material.OAK_LEAVES,
Material.SPRUCE_LEAVES,
Material.COCOA_BEANS,
Material.BROWN_MUSHROOM_BLOCK,
Material.RED_MUSHROOM_BLOCK
));
/*
A list of materials found in a forest, allows the plugin to work in dense woods
*/
private static List<Material> forestMaterials = new ArrayList<>(Arrays.asList(
Material.AIR,
Material.CAVE_AIR,
Material.VOID_AIR,
Material.VINE,
Material.ROSE_BUSH,
Material.ORANGE_TULIP,
Material.PINK_TULIP,
Material.RED_TULIP,
Material.POPPY,
Material.WHITE_TULIP,
Material.OXEYE_DAISY,
Material.AZURE_BLUET,
Material.BLUE_ORCHID,
Material.ALLIUM,
Material.DANDELION,
Material.DANDELION_YELLOW,
Material.LILAC,
Material.PEONY,
Material.TALL_GRASS,
Material.FERN,
Material.LARGE_FERN,
Material.DEAD_BUSH,
Material.BROWN_MUSHROOM,
Material.RED_MUSHROOM,
Material.GRASS,
Material.SPRUCE_SAPLING,
Material.OAK_SAPLING,
Material.JUNGLE_SAPLING,
Material.ACACIA_SAPLING,
Material.BIRCH_SAPLING,
Material.DARK_OAK_SAPLING,
Material.DIRT,
Material.COARSE_DIRT,
Material.GRASS_BLOCK,
Material.SNOW,
Material.SNOW_BLOCK
));
} }

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock; import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
public class TreeEntityDamage { class TreeEntityDamage {
public static void runDamage(FallingBlock fallingBlock) { static void runDamage(FallingBlock fallingBlock) {
for (Entity entity : fallingBlock.getNearbyEntities(0.5, 0.5, 0.5)) { for (Entity entity : fallingBlock.getNearbyEntities(0.5, 0.5, 0.5)) {

View File

@ -17,16 +17,28 @@ import org.bukkit.util.Vector;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
public class TreeFallAnimation implements Listener { public class TreeFallAnimation implements Listener {
/*
Register all instances of falling trees.
*/
private static ArrayList<TreeFallAnimation> treeFallAnimationInstances = new ArrayList<>();
/* /*
This field gets updated based on player permissions, doubles loot from trees This field gets updated based on player permissions, doubles loot from trees
*/ */
private boolean hasBonusLoot; private boolean hasBonusLoot;
/*
If a player's tool has the silk touch enchantment, it changes the loot table
*/
private boolean hasSilkTouch;
/*
This field stores every falling block in this instance of the animation
This list is also used to identify if a falling block is a part of an animation
*/
private ArrayList<FallingBlock> fallingBlocks = new ArrayList<>();
public boolean hasBonusLoot() { private boolean hasBonusLoot() {
return this.hasBonusLoot; return this.hasBonusLoot;
} }
@ -34,12 +46,7 @@ public class TreeFallAnimation implements Listener {
this.hasBonusLoot = bool; this.hasBonusLoot = bool;
} }
/* private boolean hasSilkTouch() {
If a player's tool has the silk touch enchantment, it changes the loot table
*/
private boolean hasSilkTouch;
public boolean hasSilkTouch() {
return this.hasSilkTouch; return this.hasSilkTouch;
} }
@ -47,13 +54,7 @@ public class TreeFallAnimation implements Listener {
this.hasSilkTouch = bool; this.hasSilkTouch = bool;
} }
/* private boolean isFallingTreeBlock(FallingBlock fallingBlock) {
This field stores every falling block in this instance of the animation
This list is also used to identify if a falling block is a part of an animation
*/
private ArrayList<FallingBlock> fallingBlocks = new ArrayList<>();
public boolean isFallingTreeBlock(FallingBlock fallingBlock) {
return this.fallingBlocks.contains(fallingBlock); return this.fallingBlocks.contains(fallingBlock);
} }
@ -69,19 +70,14 @@ public class TreeFallAnimation implements Listener {
return this.fallingBlocks; return this.fallingBlocks;
} }
/* private boolean isInTreeFallInstance(FallingBlock fallingBlock) {
Register all instances of falling trees.
*/
public static ArrayList<TreeFallAnimation> treeFallAnimationInstances = new ArrayList<>();
public boolean isInTreeFallInstance(FallingBlock fallingBlock) {
for (TreeFallAnimation treeFallAnimation : treeFallAnimationInstances) for (TreeFallAnimation treeFallAnimation : treeFallAnimationInstances)
if (treeFallAnimation.isFallingTreeBlock(fallingBlock)) if (treeFallAnimation.isFallingTreeBlock(fallingBlock))
return true; return true;
return false; return false;
} }
public TreeFallAnimation getTreeFallAnimation(FallingBlock fallingBlock) { private TreeFallAnimation getTreeFallAnimation(FallingBlock fallingBlock) {
for (TreeFallAnimation treeFallAnimation : treeFallAnimationInstances) for (TreeFallAnimation treeFallAnimation : treeFallAnimationInstances)
if (treeFallAnimation.isFallingTreeBlock(fallingBlock)) if (treeFallAnimation.isFallingTreeBlock(fallingBlock))
return treeFallAnimation; return treeFallAnimation;
@ -102,7 +98,7 @@ public class TreeFallAnimation implements Listener {
Initially, the tree will start slowly toppling over. Initially, the tree will start slowly toppling over.
After a short while, it goes over the tipping point and the fall accelerates. After a short while, it goes over the tipping point and the fall accelerates.
*/ */
public void startAnimation(Block originalBlock, HashSet<Block> blocks, Player player) { void startAnimation(Block originalBlock, HashSet<Block> blocks, Player player) {
/* /*
This vector makes sure that the entire tree falls in the same direction from the same reference point This vector makes sure that the entire tree falls in the same direction from the same reference point
*/ */
@ -128,7 +124,7 @@ public class TreeFallAnimation implements Listener {
for (Block block : blocks) { for (Block block : blocks) {
FallingBlock fallingBlock = block.getWorld().spawnFallingBlock(block.getLocation().clone().add(0.5,0,0.5), block.getBlockData()); FallingBlock fallingBlock = block.getWorld().spawnFallingBlock(block.getLocation().clone().add(0.5, 0, 0.5), block.getBlockData());
fallingBlock.setDropItem(false); fallingBlock.setDropItem(false);

View File

@ -2,7 +2,6 @@ package com.songoda.ultimatetimber.treefall;
import com.songoda.ultimatetimber.UltimateTimber; import com.songoda.ultimatetimber.UltimateTimber;
import com.songoda.ultimatetimber.configurations.DefaultConfig; import com.songoda.ultimatetimber.configurations.DefaultConfig;
import org.bukkit.Bukkit;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
@ -26,9 +25,9 @@ public class TreeFallEvent implements Listener {
if (event.getBlock() != null && event.getBlock().getType().name().contains("SAPLING") && if (event.getBlock() != null && event.getBlock().getType().name().contains("SAPLING") &&
fileConfiguration.getBoolean(DefaultConfig.TIMEOUT_BREAK) && TreeReplant.isTimeout(event.getBlock())) fileConfiguration.getBoolean(DefaultConfig.TIMEOUT_BREAK) && TreeReplant.isTimeout(event.getBlock()))
event.setCancelled(true); event.setCancelled(true);
if (!EventFilter.eventIsValid(event)) return; if (!EventFilter.eventIsValid(event)) return;
if(fileConfiguration.getBoolean(DefaultConfig.SNEAK_ONLY) && !event.getPlayer().isSneaking()) return; if (fileConfiguration.getBoolean(DefaultConfig.SNEAK_ONLY) && !event.getPlayer().isSneaking()) return;
TreeChecker treeChecker = new TreeChecker(); TreeChecker treeChecker = new TreeChecker();
HashSet<Block> blocks = treeChecker.validTreeHandler(event.getBlock()); HashSet<Block> blocks = treeChecker.validTreeHandler(event.getBlock());

View File

@ -4,13 +4,12 @@ import com.songoda.ultimatetimber.utils.LeafToSaplingConverter;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.FallingBlock; import org.bukkit.entity.FallingBlock;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
public class TreeLoot { class TreeLoot {
public static void convertFallingBlock(FallingBlock fallingBlock, boolean hasBonusLoot, boolean hasSilkTouch) { static void convertFallingBlock(FallingBlock fallingBlock, boolean hasBonusLoot, boolean hasSilkTouch) {
Material material = LeafToSaplingConverter.convertLeaves(fallingBlock.getBlockData().getMaterial()); Material material = LeafToSaplingConverter.convertLeaves(fallingBlock.getBlockData().getMaterial());

View File

@ -14,11 +14,11 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
public class TreeReplant { class TreeReplant {
private static List<Location> timeout = new ArrayList<>(); private static List<Location> timeout = new ArrayList<>();
public static void replaceOriginalBlock(Block block) { static void replaceOriginalBlock(Block block) {
boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK); boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK);
@ -29,7 +29,7 @@ public class TreeReplant {
} }
if (!block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.DIRT) && 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.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); block.setType(Material.AIR);
return; return;
} }
@ -83,7 +83,7 @@ public class TreeReplant {
} }
public static void replaceOriginalBlock(Block block, Material leavesType) { static void replaceOriginalBlock(Block block, Material leavesType) {
boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK); boolean isTimeout = UltimateTimber.getInstance().getConfig().getBoolean(DefaultConfig.TIMEOUT_BREAK);
@ -93,7 +93,7 @@ public class TreeReplant {
} }
if (!block.getLocation().clone().subtract(new Vector(0, 1, 0)).getBlock().getType().equals(Material.DIRT) && 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.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); block.setType(Material.AIR);
return; return;
} }
@ -134,11 +134,11 @@ public class TreeReplant {
block.setType(Material.SPRUCE_SAPLING); block.setType(Material.SPRUCE_SAPLING);
return; return;
default: default:
if(leavesType == Material.BROWN_MUSHROOM_BLOCK){ if (leavesType == Material.BROWN_MUSHROOM_BLOCK) {
block.setType(Material.BROWN_MUSHROOM); block.setType(Material.BROWN_MUSHROOM);
} else if(leavesType == Material.RED_MUSHROOM_BLOCK){ } else if (leavesType == Material.RED_MUSHROOM_BLOCK) {
block.setType(Material.RED_MUSHROOM); block.setType(Material.RED_MUSHROOM);
} else{ } else {
block.setType(Material.AIR); block.setType(Material.AIR);
} }
} }
@ -147,7 +147,7 @@ public class TreeReplant {
} }
public static void leafFallReplant(FallingBlock fallingBlock) { static void leafFallReplant(FallingBlock fallingBlock) {
Material material; Material material;
@ -191,7 +191,7 @@ public class TreeReplant {
} }
public static boolean isTimeout(Block block) { static boolean isTimeout(Block block) {
return timeout.contains(block.getLocation()); return timeout.contains(block.getLocation());
} }

View File

@ -5,12 +5,12 @@ import org.bukkit.Location;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.FallingBlock; import org.bukkit.entity.FallingBlock;
public class TreeSounds { class TreeSounds {
public static void tipOverNoise(Location location) { static void tipOverNoise(Location location) {
if(Bukkit.getServer().getClass().getPackage().toString().contains("8")){ if (Bukkit.getServer().getClass().getPackage().toString().contains("8")) {
location.getWorld().playSound(location, Sound.valueOf("CHEST_OPEN"), 3f,0.1f); location.getWorld().playSound(location, Sound.valueOf("CHEST_OPEN"), 3f, 0.1f);
} else { } else {
location.getWorld().playSound(location, Sound.BLOCK_CHEST_OPEN, 3F, 0.1F); location.getWorld().playSound(location, Sound.BLOCK_CHEST_OPEN, 3F, 0.1F);
@ -18,10 +18,10 @@ public class TreeSounds {
} }
public static void fallNoise(FallingBlock fallingBlock) { static void fallNoise(FallingBlock fallingBlock) {
if(Bukkit.getServer().getClass().getPackage().toString().contains("8")){ if (Bukkit.getServer().getClass().getPackage().toString().contains("8")) {
fallingBlock.getWorld().playSound(fallingBlock.getLocation(), Sound.valueOf("ANVIL_LAND"), 3F, 0.1F); fallingBlock.getWorld().playSound(fallingBlock.getLocation(), Sound.valueOf("ANVIL_LAND"), 3F, 0.1F);
return; return;
} }

View File

@ -10,7 +10,7 @@ public class Methods {
return formatText(text, false); return formatText(text, false);
} }
public static String formatText(String text, boolean cap) { private static String formatText(String text, boolean cap) {
if (text == null || text.equals("")) if (text == null || text.equals(""))
return ""; return "";
if (cap) if (cap)