mirror of
https://github.com/songoda/UltimateTimber.git
synced 2025-02-10 16:51:46 +01:00
Merge branch 'development'
This commit is contained in:
commit
7256b314f6
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -25,5 +25,11 @@
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>SongodaCore</artifactId>
|
||||
<version>LATEST</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -1,5 +1,6 @@
|
||||
package com.songoda.ultimatetimber.adapter.current;
|
||||
|
||||
import com.songoda.core.compatibility.CompatibleMaterial;
|
||||
import com.songoda.ultimatetimber.adapter.IBlockData;
|
||||
import com.songoda.ultimatetimber.adapter.VersionAdapter;
|
||||
import com.songoda.ultimatetimber.adapter.VersionAdapterType;
|
||||
@ -34,12 +35,16 @@ public class CurrentAdapter implements VersionAdapter {
|
||||
|
||||
@Override
|
||||
public IBlockData parseBlockDataFromString(String blockDataString) {
|
||||
return new CurrentBlockData(Material.matchMaterial(blockDataString));
|
||||
Material material = Material.matchMaterial(blockDataString);
|
||||
if (material == null) return null;
|
||||
return new CurrentBlockData(material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack parseItemStackFromString(String itemStackString) {
|
||||
return new ItemStack(Material.matchMaterial(itemStackString));
|
||||
CompatibleMaterial compatibleMaterial = CompatibleMaterial.getMaterial(itemStackString);
|
||||
if (compatibleMaterial == null) return null;
|
||||
return compatibleMaterial.getItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>com.songoda</groupId>
|
||||
<artifactId>UltimateTimber</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<version>2.0.8</version>
|
||||
<relativePath>../../</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.15</version>
|
||||
<version>1.16.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -360,6 +360,48 @@ trees:
|
||||
chance: 25
|
||||
entire-tree-loot: []
|
||||
required-tools: []
|
||||
huge_crimson_fungus:
|
||||
logs:
|
||||
- CRIMSON_STEM
|
||||
- STRIPPED_CRIMSON_STEM
|
||||
- CRIMSON_HYPHAE
|
||||
- STRIPPED_CRIMSON_HYPHAE
|
||||
leaves:
|
||||
- NETHER_WART_BLOCK
|
||||
- SHROOMLIGHT
|
||||
sapling: CRIMSON_FUNGUS
|
||||
plantable-soil:
|
||||
- CRIMSON_NYLIUM
|
||||
max-log-distance-from-trunk: 27
|
||||
max-leaf-distance-from-log: 5
|
||||
search-for-leaves-diagonally: false
|
||||
drop-original-log: true
|
||||
drop-original-leaf: true
|
||||
log-loot: []
|
||||
leaf-loot: []
|
||||
entire-tree-loot: []
|
||||
required-tools: []
|
||||
huge_warpped_fungus:
|
||||
logs:
|
||||
- WARPED_STEM
|
||||
- STRIPPED_WARPED_STEM
|
||||
- WARPED_HYPHAE
|
||||
- STRIPPED_WARPED_HYPHAE
|
||||
leaves:
|
||||
- WARPED_WART_BLOCK
|
||||
- SHROOMLIGHT
|
||||
sapling: CRIMSON_FUNGUS
|
||||
plantable-soil:
|
||||
- WARPED_NYLIUM
|
||||
max-log-distance-from-trunk: 27
|
||||
max-leaf-distance-from-log: 5
|
||||
search-for-leaves-diagonally: false
|
||||
drop-original-log: true
|
||||
drop-original-leaf: true
|
||||
log-loot: []
|
||||
leaf-loot: []
|
||||
entire-tree-loot: []
|
||||
required-tools: []
|
||||
|
||||
# All soil types that the tree type's saplings can be planted on
|
||||
global-plantable-soil:
|
||||
@ -414,3 +456,4 @@ global-required-tools:
|
||||
- IRON_AXE
|
||||
- GOLDEN_AXE
|
||||
- DIAMOND_AXE
|
||||
- NETHERITE_AXE
|
||||
|
@ -9,10 +9,10 @@ general:
|
||||
|
||||
command:
|
||||
reload:
|
||||
description: '&8 - &a/ut reload &7 - Reloads the config.'
|
||||
description: 'Reloads the config.'
|
||||
reloaded: '&7Configuration and locale files have been reloaded.'
|
||||
toggle:
|
||||
description: '&8 - &a/ut toggle &7 - Toggles your chopping mode'
|
||||
description: 'Toggles your chopping mode'
|
||||
enabled: '&7Chopping Mode: &aEnabled'
|
||||
disabled: '&7Chopping Mode: &cDisabled'
|
||||
|
||||
|
@ -5,10 +5,10 @@ main: com.songoda.ultimatetimber.UltimateTimber
|
||||
api-version: 1.13
|
||||
softdepend: [mcMMO, Jobs]
|
||||
commands:
|
||||
ultimatetimber:
|
||||
ut:
|
||||
description: Reloads the configuration file
|
||||
usage: /ultimatetimber reload
|
||||
aliases: [ut]
|
||||
aliases: [ultimatetimber]
|
||||
permissions:
|
||||
ultimatetimber.*:
|
||||
description: Inherits all plugin permissions
|
||||
|
@ -7,17 +7,9 @@ import com.songoda.core.configuration.Config;
|
||||
import com.songoda.ultimatetimber.adapter.VersionAdapter;
|
||||
import com.songoda.ultimatetimber.adapter.current.CurrentAdapter;
|
||||
import com.songoda.ultimatetimber.adapter.legacy.LegacyAdapter;
|
||||
import com.songoda.ultimatetimber.manager.ChoppingManager;
|
||||
import com.songoda.ultimatetimber.manager.CommandManager;
|
||||
import com.songoda.ultimatetimber.manager.ConfigurationManager;
|
||||
import com.songoda.ultimatetimber.manager.HookManager;
|
||||
import com.songoda.ultimatetimber.manager.Manager;
|
||||
import com.songoda.ultimatetimber.manager.PlacedBlockManager;
|
||||
import com.songoda.ultimatetimber.manager.SaplingManager;
|
||||
import com.songoda.ultimatetimber.manager.TreeAnimationManager;
|
||||
import com.songoda.ultimatetimber.manager.TreeDefinitionManager;
|
||||
import com.songoda.ultimatetimber.manager.TreeDetectionManager;
|
||||
import com.songoda.ultimatetimber.manager.TreeFallManager;
|
||||
import com.songoda.ultimatetimber.commands.CommandReload;
|
||||
import com.songoda.ultimatetimber.commands.CommandToggle;
|
||||
import com.songoda.ultimatetimber.manager.*;
|
||||
import com.songoda.ultimatetimber.utils.NMSUtil;
|
||||
|
||||
import java.util.HashSet;
|
||||
@ -35,9 +27,9 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
|
||||
private VersionAdapter versionAdapter;
|
||||
private ChoppingManager choppingManager;
|
||||
private CommandManager commandManager;
|
||||
private ConfigurationManager configurationManager;
|
||||
private HookManager hookManager;
|
||||
private com.songoda.core.commands.CommandManager commandManager;
|
||||
private PlacedBlockManager placedBlockManager;
|
||||
private SaplingManager saplingManager;
|
||||
private TreeAnimationManager treeAnimationManager;
|
||||
@ -59,10 +51,16 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
// Run Songoda Updater
|
||||
SongodaCore.registerPlugin(this, 18, CompatibleMaterial.IRON_AXE);
|
||||
|
||||
// Setup plugin commands
|
||||
this.commandManager = new com.songoda.core.commands.CommandManager(this);
|
||||
this.commandManager.addMainCommand("ut")
|
||||
.addSubCommands(new CommandReload(this),
|
||||
new CommandToggle(this)
|
||||
);
|
||||
|
||||
// Register managers
|
||||
this.managers = new HashSet<>();
|
||||
this.choppingManager = this.registerManager(ChoppingManager.class);
|
||||
this.commandManager = this.registerManager(CommandManager.class);
|
||||
this.configurationManager = new ConfigurationManager(this);
|
||||
this.hookManager = this.registerManager(HookManager.class);
|
||||
this.placedBlockManager = this.registerManager(PlacedBlockManager.class);
|
||||
@ -74,7 +72,7 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
|
||||
// Load version adapter and managers
|
||||
this.setupVersionAdapter();
|
||||
this.reload();
|
||||
this.reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -84,7 +82,9 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
|
||||
@Override
|
||||
public void onConfigReload() {
|
||||
reload();
|
||||
this.configurationManager.reload();
|
||||
this.managers.forEach(Manager::reload);
|
||||
this.setLocale(getConfig().getString("locale"), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -92,15 +92,6 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reloads the plugin's settings
|
||||
*/
|
||||
public void reload() {
|
||||
this.configurationManager.reload();
|
||||
this.managers.forEach(Manager::reload);
|
||||
this.setLocale(getConfig().getString("locale"), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables most of the plugin
|
||||
*/
|
||||
@ -124,7 +115,7 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
* Registers a manager
|
||||
*
|
||||
* @param managerClass The class of the manager to create a new instance of
|
||||
* @param <T> extends Manager
|
||||
* @param <T> extends Manager
|
||||
* @return A new instance of the given manager class
|
||||
*/
|
||||
private <T extends Manager> T registerManager(Class<T> managerClass) {
|
||||
@ -156,15 +147,6 @@ public class UltimateTimber extends SongodaPlugin {
|
||||
return this.choppingManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the command manager
|
||||
*
|
||||
* @return The CommandManager instance
|
||||
*/
|
||||
public CommandManager getCommandManager() {
|
||||
return this.commandManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the configuration manager
|
||||
*
|
||||
|
@ -0,0 +1,45 @@
|
||||
package com.songoda.ultimatetimber.commands;
|
||||
|
||||
import com.songoda.core.commands.AbstractCommand;
|
||||
import com.songoda.ultimatetimber.UltimateTimber;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandReload extends AbstractCommand {
|
||||
|
||||
private final UltimateTimber plugin;
|
||||
|
||||
public CommandReload(UltimateTimber plugin) {
|
||||
super(CommandType.CONSOLE_OK, "reload");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(CommandSender sender, String... args) {
|
||||
plugin.reloadConfig();
|
||||
plugin.getLocale().getMessage("command.reload.reloaded").sendPrefixedMessage(sender);
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "ultimatetimber.reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return plugin.getLocale().getMessage("command.reload.description").getMessage();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.songoda.ultimatetimber.commands;
|
||||
|
||||
import com.songoda.core.commands.AbstractCommand;
|
||||
import com.songoda.ultimatetimber.UltimateTimber;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandToggle extends AbstractCommand {
|
||||
|
||||
private final UltimateTimber plugin;
|
||||
|
||||
public CommandToggle(UltimateTimber plugin) {
|
||||
super(CommandType.CONSOLE_OK, "toggle");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReturnType runCommand(CommandSender sender, String... args) {
|
||||
if (UltimateTimber.getInstance().getChoppingManager().togglePlayer((Player) sender)) {
|
||||
plugin.getLocale().getMessage("command.toggle.enabled").sendPrefixedMessage(sender);
|
||||
} else {
|
||||
plugin.getLocale().getMessage("command.toggle.disabled").sendPrefixedMessage(sender);
|
||||
}
|
||||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "ultimatetimber.toggle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSyntax() {
|
||||
return "toggle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return plugin.getLocale().getMessage("command.toggle.description").getMessage();
|
||||
}
|
||||
|
||||
}
|
@ -1,115 +0,0 @@
|
||||
package com.songoda.ultimatetimber.manager;
|
||||
|
||||
import com.songoda.core.locale.Locale;
|
||||
import com.songoda.ultimatetimber.UltimateTimber;
|
||||
import com.songoda.ultimatetimber.utils.Methods;
|
||||
import org.bukkit.command.*;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CommandManager extends Manager implements CommandExecutor, TabCompleter {
|
||||
|
||||
public CommandManager(UltimateTimber plugin) {
|
||||
super(plugin);
|
||||
|
||||
PluginCommand command = plugin.getCommand("ultimatetimber");
|
||||
if (command != null) {
|
||||
command.setExecutor(this);
|
||||
command.setTabCompleter(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reload() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
|
||||
Locale locale = this.plugin.getLocale();
|
||||
|
||||
if (args.length > 0) {
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (commandSender instanceof Player && this.doesntHavePermission(commandSender, "ultimatetimber.reload", locale))
|
||||
return true;
|
||||
|
||||
UltimateTimber.getInstance().reload();
|
||||
locale.getMessage("command.reload.reloaded").sendPrefixedMessage(commandSender);
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("toggle")) {
|
||||
if (!(commandSender instanceof Player)) {
|
||||
commandSender.sendMessage(Methods.formatText("&cConsole cannot toggle chopping mode!"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (this.doesntHavePermission(commandSender, "ultimatetimber.toggle", locale))
|
||||
return true;
|
||||
|
||||
if (UltimateTimber.getInstance().getChoppingManager().togglePlayer((Player) commandSender)) {
|
||||
locale.getMessage("command.toggle.enabled").sendPrefixedMessage(commandSender);
|
||||
} else {
|
||||
locale.getMessage("command.toggle.disabled").sendPrefixedMessage(commandSender);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
commandSender.sendMessage("");
|
||||
locale.newMessage("&7Version " + plugin.getDescription().getVersion()
|
||||
+ " Created with <3 by &5&l&oSongoda").sendPrefixedMessage(commandSender);
|
||||
locale.getMessage("command.reload.description").sendMessage(commandSender);
|
||||
locale.getMessage("command.toggle.description").sendMessage(commandSender);
|
||||
commandSender.sendMessage("");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
|
||||
List<String> completions = new ArrayList<>();
|
||||
|
||||
if (args.length < 1)
|
||||
return completions;
|
||||
|
||||
Set<String> possibleCompletions = new HashSet<>();
|
||||
|
||||
if (commandSender.hasPermission("ultimatetimber.reload"))
|
||||
possibleCompletions.add("reload");
|
||||
|
||||
if (commandSender.hasPermission("ultimatetimber.toggle") && commandSender instanceof Player)
|
||||
possibleCompletions.add("toggle");
|
||||
|
||||
StringUtil.copyPartialMatches(args[0], possibleCompletions, completions);
|
||||
|
||||
return completions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a player does have a permission
|
||||
* Sends them an error message if they don't
|
||||
*
|
||||
* @param sender The CommandSender to check
|
||||
* @param permission The permission to check for
|
||||
* @param locale The LocaleManager instance
|
||||
* @return True if the player has permission, otherwise false and sends a message
|
||||
*/
|
||||
private boolean doesntHavePermission(CommandSender sender, String permission, Locale locale) {
|
||||
if (!sender.hasPermission(permission)) {
|
||||
locale.getMessage("general.nopermission").sendPrefixedMessage(sender);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -15,11 +15,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public class TreeDefinitionManager extends Manager {
|
||||
|
||||
@ -55,6 +51,7 @@ public class TreeDefinitionManager extends Manager {
|
||||
|
||||
// Load tree settings
|
||||
ConfigurationSection treeSection = config.getConfigurationSection("trees");
|
||||
top:
|
||||
for (String key : treeSection.getKeys(false)) {
|
||||
ConfigurationSection tree = treeSection.getConfigurationSection(key);
|
||||
|
||||
@ -72,11 +69,17 @@ public class TreeDefinitionManager extends Manager {
|
||||
Set<TreeLoot> entireTreeLoot = new HashSet<>();
|
||||
Set<ItemStack> requiredTools = new HashSet<>();
|
||||
|
||||
for (String blockDataString : tree.getStringList("logs"))
|
||||
logBlockData.add(versionAdapter.parseBlockDataFromString(blockDataString));
|
||||
for (String blockDataString : tree.getStringList("logs")) {
|
||||
IBlockData blockData = versionAdapter.parseBlockDataFromString(blockDataString);
|
||||
if (blockData == null || blockData.getMaterial() == null) continue top;
|
||||
logBlockData.add(blockData);
|
||||
}
|
||||
|
||||
for (String blockDataString : tree.getStringList("leaves"))
|
||||
leafBlockData.add(versionAdapter.parseBlockDataFromString(blockDataString));
|
||||
for (String blockDataString : tree.getStringList("leaves")) {
|
||||
IBlockData blockData = versionAdapter.parseBlockDataFromString(blockDataString);
|
||||
if (blockData == null || blockData.getMaterial() == null) continue top;
|
||||
leafBlockData.add(blockData);
|
||||
}
|
||||
|
||||
saplingBlockData = versionAdapter.parseBlockDataFromString(tree.getString("sapling"));
|
||||
|
||||
@ -104,8 +107,11 @@ public class TreeDefinitionManager extends Manager {
|
||||
for (String lootKey : entireTreeLootSection.getKeys(false))
|
||||
entireTreeLoot.add(this.getTreeLootEntry(versionAdapter, TreeBlockType.LEAF, entireTreeLootSection.getConfigurationSection(lootKey)));
|
||||
|
||||
for (String itemStackString : tree.getStringList("required-tools"))
|
||||
requiredTools.add(versionAdapter.parseItemStackFromString(itemStackString));
|
||||
for (String itemStackString : tree.getStringList("required-tools")) {
|
||||
ItemStack tool = versionAdapter.parseItemStackFromString(itemStackString);
|
||||
if (tool == null) continue top;
|
||||
requiredTools.add(tool);
|
||||
}
|
||||
|
||||
this.treeDefinitions.add(new TreeDefinition(key, logBlockData, leafBlockData, saplingBlockData, plantableSoilBlockData, maxLogDistanceFromTrunk,
|
||||
maxLeafDistanceFromLog, detectLeavesDiagonally, dropOriginalLog, dropOriginalLeaf, logLoot, leafLoot, entireTreeLoot, requiredTools));
|
||||
@ -134,8 +140,11 @@ public class TreeDefinitionManager extends Manager {
|
||||
this.globalEntireTreeLoot.add(this.getTreeLootEntry(versionAdapter, TreeBlockType.LOG, entireTreeSection.getConfigurationSection(lootKey)));
|
||||
|
||||
// Load global tools
|
||||
for (String itemStackString : config.getStringList("global-required-tools"))
|
||||
this.globalRequiredTools.add(versionAdapter.parseItemStackFromString(itemStackString));
|
||||
for (String itemStackString : config.getStringList("global-required-tools")) {
|
||||
ItemStack tool = versionAdapter.parseItemStackFromString(itemStackString);
|
||||
if (tool == null) continue;
|
||||
this.globalRequiredTools.add(tool);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -157,8 +166,8 @@ public class TreeDefinitionManager extends Manager {
|
||||
* Narrows a Set of TreeDefinitions down to ones matching the given Block and TreeBlockType
|
||||
*
|
||||
* @param possibleTreeDefinitions The possible TreeDefinitions
|
||||
* @param block The Block to narrow to
|
||||
* @param treeBlockType The TreeBlockType of the given Block
|
||||
* @param block The Block to narrow to
|
||||
* @param treeBlockType The TreeBlockType of the given Block
|
||||
* @return A Set of TreeDefinitions narrowed down
|
||||
*/
|
||||
public Set<TreeDefinition> narrowTreeDefinition(Set<TreeDefinition> possibleTreeDefinitions, Block block, TreeBlockType treeBlockType) {
|
||||
@ -212,7 +221,7 @@ public class TreeDefinitionManager extends Manager {
|
||||
* Checks if a given tool is valid for a given tree definition, also takes into account global tools
|
||||
*
|
||||
* @param treeDefinition The TreeDefinition to use
|
||||
* @param tool The tool to check
|
||||
* @param tool The tool to check
|
||||
* @return True if the tool is allowed for toppling the given TreeDefinition
|
||||
*/
|
||||
public boolean isToolValidForTreeDefinition(TreeDefinition treeDefinition, ItemStack tool) {
|
||||
@ -230,9 +239,9 @@ public class TreeDefinitionManager extends Manager {
|
||||
/**
|
||||
* Tries to spawn loot for a given TreeBlock with the given TreeDefinition for a given Player
|
||||
*
|
||||
* @param treeDefinition The TreeDefinition to use
|
||||
* @param treeBlock The TreeBlock to drop for
|
||||
* @param player The Player to drop for
|
||||
* @param treeDefinition The TreeDefinition to use
|
||||
* @param treeBlock The TreeBlock to drop for
|
||||
* @param player The Player to drop for
|
||||
* @param isForEntireTree If the loot is for the entire tree
|
||||
*/
|
||||
public void dropTreeLoot(TreeDefinition treeDefinition, ITreeBlock treeBlock, Player player, boolean hasSilkTouch, boolean isForEntireTree) {
|
||||
@ -316,10 +325,10 @@ public class TreeDefinitionManager extends Manager {
|
||||
for (String lootedCommand : lootedCommands)
|
||||
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
|
||||
lootedCommand.replace("%player%", player.getName())
|
||||
.replace("%type%", treeDefinition.getKey())
|
||||
.replace("%xPos%", treeBlock.getLocation().getBlockX() + "")
|
||||
.replace("%yPos%", treeBlock.getLocation().getBlockY() + "")
|
||||
.replace("%zPos%", treeBlock.getLocation().getBlockZ() + ""));
|
||||
.replace("%type%", treeDefinition.getKey())
|
||||
.replace("%xPos%", treeBlock.getLocation().getBlockX() + "")
|
||||
.replace("%yPos%", treeBlock.getLocation().getBlockY() + "")
|
||||
.replace("%zPos%", treeBlock.getLocation().getBlockZ() + ""));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -338,8 +347,8 @@ public class TreeDefinitionManager extends Manager {
|
||||
/**
|
||||
* Gets a TreeLoot entry from a ConfigurationSection
|
||||
*
|
||||
* @param versionAdapter The VersionAdapter to use
|
||||
* @param treeBlockType The TreeBlockType to use
|
||||
* @param versionAdapter The VersionAdapter to use
|
||||
* @param treeBlockType The TreeBlockType to use
|
||||
* @param configurationSection The ConfigurationSection
|
||||
* @return A TreeLoot entry from the section
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user