mirror of
https://github.com/songoda/UltimateTimber.git
synced 2025-02-14 02:31:24 +01:00
Merge branch 'development'
This commit is contained in:
commit
7256b314f6
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -25,5 +25,11 @@
|
|||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.songoda</groupId>
|
||||||
|
<artifactId>SongodaCore</artifactId>
|
||||||
|
<version>LATEST</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -1,5 +1,6 @@
|
|||||||
package com.songoda.ultimatetimber.adapter.current;
|
package com.songoda.ultimatetimber.adapter.current;
|
||||||
|
|
||||||
|
import com.songoda.core.compatibility.CompatibleMaterial;
|
||||||
import com.songoda.ultimatetimber.adapter.IBlockData;
|
import com.songoda.ultimatetimber.adapter.IBlockData;
|
||||||
import com.songoda.ultimatetimber.adapter.VersionAdapter;
|
import com.songoda.ultimatetimber.adapter.VersionAdapter;
|
||||||
import com.songoda.ultimatetimber.adapter.VersionAdapterType;
|
import com.songoda.ultimatetimber.adapter.VersionAdapterType;
|
||||||
@ -34,12 +35,16 @@ public class CurrentAdapter implements VersionAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBlockData parseBlockDataFromString(String blockDataString) {
|
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
|
@Override
|
||||||
public ItemStack parseItemStackFromString(String itemStackString) {
|
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
|
@Override
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<relativePath>../../</relativePath>
|
<relativePath>../../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot</artifactId>
|
<artifactId>spigot</artifactId>
|
||||||
<version>1.15</version>
|
<version>1.16.1</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -360,6 +360,48 @@ trees:
|
|||||||
chance: 25
|
chance: 25
|
||||||
entire-tree-loot: []
|
entire-tree-loot: []
|
||||||
required-tools: []
|
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
|
# All soil types that the tree type's saplings can be planted on
|
||||||
global-plantable-soil:
|
global-plantable-soil:
|
||||||
@ -414,3 +456,4 @@ global-required-tools:
|
|||||||
- IRON_AXE
|
- IRON_AXE
|
||||||
- GOLDEN_AXE
|
- GOLDEN_AXE
|
||||||
- DIAMOND_AXE
|
- DIAMOND_AXE
|
||||||
|
- NETHERITE_AXE
|
||||||
|
@ -9,10 +9,10 @@ general:
|
|||||||
|
|
||||||
command:
|
command:
|
||||||
reload:
|
reload:
|
||||||
description: '&8 - &a/ut reload &7 - Reloads the config.'
|
description: 'Reloads the config.'
|
||||||
reloaded: '&7Configuration and locale files have been reloaded.'
|
reloaded: '&7Configuration and locale files have been reloaded.'
|
||||||
toggle:
|
toggle:
|
||||||
description: '&8 - &a/ut toggle &7 - Toggles your chopping mode'
|
description: 'Toggles your chopping mode'
|
||||||
enabled: '&7Chopping Mode: &aEnabled'
|
enabled: '&7Chopping Mode: &aEnabled'
|
||||||
disabled: '&7Chopping Mode: &cDisabled'
|
disabled: '&7Chopping Mode: &cDisabled'
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ main: com.songoda.ultimatetimber.UltimateTimber
|
|||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
softdepend: [mcMMO, Jobs]
|
softdepend: [mcMMO, Jobs]
|
||||||
commands:
|
commands:
|
||||||
ultimatetimber:
|
ut:
|
||||||
description: Reloads the configuration file
|
description: Reloads the configuration file
|
||||||
usage: /ultimatetimber reload
|
usage: /ultimatetimber reload
|
||||||
aliases: [ut]
|
aliases: [ultimatetimber]
|
||||||
permissions:
|
permissions:
|
||||||
ultimatetimber.*:
|
ultimatetimber.*:
|
||||||
description: Inherits all plugin permissions
|
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.VersionAdapter;
|
||||||
import com.songoda.ultimatetimber.adapter.current.CurrentAdapter;
|
import com.songoda.ultimatetimber.adapter.current.CurrentAdapter;
|
||||||
import com.songoda.ultimatetimber.adapter.legacy.LegacyAdapter;
|
import com.songoda.ultimatetimber.adapter.legacy.LegacyAdapter;
|
||||||
import com.songoda.ultimatetimber.manager.ChoppingManager;
|
import com.songoda.ultimatetimber.commands.CommandReload;
|
||||||
import com.songoda.ultimatetimber.manager.CommandManager;
|
import com.songoda.ultimatetimber.commands.CommandToggle;
|
||||||
import com.songoda.ultimatetimber.manager.ConfigurationManager;
|
import com.songoda.ultimatetimber.manager.*;
|
||||||
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.utils.NMSUtil;
|
import com.songoda.ultimatetimber.utils.NMSUtil;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -35,9 +27,9 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
|
|
||||||
private VersionAdapter versionAdapter;
|
private VersionAdapter versionAdapter;
|
||||||
private ChoppingManager choppingManager;
|
private ChoppingManager choppingManager;
|
||||||
private CommandManager commandManager;
|
|
||||||
private ConfigurationManager configurationManager;
|
private ConfigurationManager configurationManager;
|
||||||
private HookManager hookManager;
|
private HookManager hookManager;
|
||||||
|
private com.songoda.core.commands.CommandManager commandManager;
|
||||||
private PlacedBlockManager placedBlockManager;
|
private PlacedBlockManager placedBlockManager;
|
||||||
private SaplingManager saplingManager;
|
private SaplingManager saplingManager;
|
||||||
private TreeAnimationManager treeAnimationManager;
|
private TreeAnimationManager treeAnimationManager;
|
||||||
@ -59,10 +51,16 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
// Run Songoda Updater
|
// Run Songoda Updater
|
||||||
SongodaCore.registerPlugin(this, 18, CompatibleMaterial.IRON_AXE);
|
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
|
// Register managers
|
||||||
this.managers = new HashSet<>();
|
this.managers = new HashSet<>();
|
||||||
this.choppingManager = this.registerManager(ChoppingManager.class);
|
this.choppingManager = this.registerManager(ChoppingManager.class);
|
||||||
this.commandManager = this.registerManager(CommandManager.class);
|
|
||||||
this.configurationManager = new ConfigurationManager(this);
|
this.configurationManager = new ConfigurationManager(this);
|
||||||
this.hookManager = this.registerManager(HookManager.class);
|
this.hookManager = this.registerManager(HookManager.class);
|
||||||
this.placedBlockManager = this.registerManager(PlacedBlockManager.class);
|
this.placedBlockManager = this.registerManager(PlacedBlockManager.class);
|
||||||
@ -74,7 +72,7 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
|
|
||||||
// Load version adapter and managers
|
// Load version adapter and managers
|
||||||
this.setupVersionAdapter();
|
this.setupVersionAdapter();
|
||||||
this.reload();
|
this.reloadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -84,7 +82,9 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConfigReload() {
|
public void onConfigReload() {
|
||||||
reload();
|
this.configurationManager.reload();
|
||||||
|
this.managers.forEach(Manager::reload);
|
||||||
|
this.setLocale(getConfig().getString("locale"), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -92,15 +92,6 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
return null;
|
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
|
* Disables most of the plugin
|
||||||
*/
|
*/
|
||||||
@ -124,7 +115,7 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
* Registers a manager
|
* Registers a manager
|
||||||
*
|
*
|
||||||
* @param managerClass The class of the manager to create a new instance of
|
* @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
|
* @return A new instance of the given manager class
|
||||||
*/
|
*/
|
||||||
private <T extends Manager> T registerManager(Class<T> managerClass) {
|
private <T extends Manager> T registerManager(Class<T> managerClass) {
|
||||||
@ -156,15 +147,6 @@ public class UltimateTimber extends SongodaPlugin {
|
|||||||
return this.choppingManager;
|
return this.choppingManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the command manager
|
|
||||||
*
|
|
||||||
* @return The CommandManager instance
|
|
||||||
*/
|
|
||||||
public CommandManager getCommandManager() {
|
|
||||||
return this.commandManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the configuration manager
|
* 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.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class TreeDefinitionManager extends Manager {
|
public class TreeDefinitionManager extends Manager {
|
||||||
|
|
||||||
@ -55,6 +51,7 @@ public class TreeDefinitionManager extends Manager {
|
|||||||
|
|
||||||
// Load tree settings
|
// Load tree settings
|
||||||
ConfigurationSection treeSection = config.getConfigurationSection("trees");
|
ConfigurationSection treeSection = config.getConfigurationSection("trees");
|
||||||
|
top:
|
||||||
for (String key : treeSection.getKeys(false)) {
|
for (String key : treeSection.getKeys(false)) {
|
||||||
ConfigurationSection tree = treeSection.getConfigurationSection(key);
|
ConfigurationSection tree = treeSection.getConfigurationSection(key);
|
||||||
|
|
||||||
@ -72,11 +69,17 @@ public class TreeDefinitionManager extends Manager {
|
|||||||
Set<TreeLoot> entireTreeLoot = new HashSet<>();
|
Set<TreeLoot> entireTreeLoot = new HashSet<>();
|
||||||
Set<ItemStack> requiredTools = new HashSet<>();
|
Set<ItemStack> requiredTools = new HashSet<>();
|
||||||
|
|
||||||
for (String blockDataString : tree.getStringList("logs"))
|
for (String blockDataString : tree.getStringList("logs")) {
|
||||||
logBlockData.add(versionAdapter.parseBlockDataFromString(blockDataString));
|
IBlockData blockData = versionAdapter.parseBlockDataFromString(blockDataString);
|
||||||
|
if (blockData == null || blockData.getMaterial() == null) continue top;
|
||||||
|
logBlockData.add(blockData);
|
||||||
|
}
|
||||||
|
|
||||||
for (String blockDataString : tree.getStringList("leaves"))
|
for (String blockDataString : tree.getStringList("leaves")) {
|
||||||
leafBlockData.add(versionAdapter.parseBlockDataFromString(blockDataString));
|
IBlockData blockData = versionAdapter.parseBlockDataFromString(blockDataString);
|
||||||
|
if (blockData == null || blockData.getMaterial() == null) continue top;
|
||||||
|
leafBlockData.add(blockData);
|
||||||
|
}
|
||||||
|
|
||||||
saplingBlockData = versionAdapter.parseBlockDataFromString(tree.getString("sapling"));
|
saplingBlockData = versionAdapter.parseBlockDataFromString(tree.getString("sapling"));
|
||||||
|
|
||||||
@ -104,8 +107,11 @@ public class TreeDefinitionManager extends Manager {
|
|||||||
for (String lootKey : entireTreeLootSection.getKeys(false))
|
for (String lootKey : entireTreeLootSection.getKeys(false))
|
||||||
entireTreeLoot.add(this.getTreeLootEntry(versionAdapter, TreeBlockType.LEAF, entireTreeLootSection.getConfigurationSection(lootKey)));
|
entireTreeLoot.add(this.getTreeLootEntry(versionAdapter, TreeBlockType.LEAF, entireTreeLootSection.getConfigurationSection(lootKey)));
|
||||||
|
|
||||||
for (String itemStackString : tree.getStringList("required-tools"))
|
for (String itemStackString : tree.getStringList("required-tools")) {
|
||||||
requiredTools.add(versionAdapter.parseItemStackFromString(itemStackString));
|
ItemStack tool = versionAdapter.parseItemStackFromString(itemStackString);
|
||||||
|
if (tool == null) continue top;
|
||||||
|
requiredTools.add(tool);
|
||||||
|
}
|
||||||
|
|
||||||
this.treeDefinitions.add(new TreeDefinition(key, logBlockData, leafBlockData, saplingBlockData, plantableSoilBlockData, maxLogDistanceFromTrunk,
|
this.treeDefinitions.add(new TreeDefinition(key, logBlockData, leafBlockData, saplingBlockData, plantableSoilBlockData, maxLogDistanceFromTrunk,
|
||||||
maxLeafDistanceFromLog, detectLeavesDiagonally, dropOriginalLog, dropOriginalLeaf, logLoot, leafLoot, entireTreeLoot, requiredTools));
|
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)));
|
this.globalEntireTreeLoot.add(this.getTreeLootEntry(versionAdapter, TreeBlockType.LOG, entireTreeSection.getConfigurationSection(lootKey)));
|
||||||
|
|
||||||
// Load global tools
|
// Load global tools
|
||||||
for (String itemStackString : config.getStringList("global-required-tools"))
|
for (String itemStackString : config.getStringList("global-required-tools")) {
|
||||||
this.globalRequiredTools.add(versionAdapter.parseItemStackFromString(itemStackString));
|
ItemStack tool = versionAdapter.parseItemStackFromString(itemStackString);
|
||||||
|
if (tool == null) continue;
|
||||||
|
this.globalRequiredTools.add(tool);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -157,8 +166,8 @@ public class TreeDefinitionManager extends Manager {
|
|||||||
* Narrows a Set of TreeDefinitions down to ones matching the given Block and TreeBlockType
|
* Narrows a Set of TreeDefinitions down to ones matching the given Block and TreeBlockType
|
||||||
*
|
*
|
||||||
* @param possibleTreeDefinitions The possible TreeDefinitions
|
* @param possibleTreeDefinitions The possible TreeDefinitions
|
||||||
* @param block The Block to narrow to
|
* @param block The Block to narrow to
|
||||||
* @param treeBlockType The TreeBlockType of the given Block
|
* @param treeBlockType The TreeBlockType of the given Block
|
||||||
* @return A Set of TreeDefinitions narrowed down
|
* @return A Set of TreeDefinitions narrowed down
|
||||||
*/
|
*/
|
||||||
public Set<TreeDefinition> narrowTreeDefinition(Set<TreeDefinition> possibleTreeDefinitions, Block block, TreeBlockType treeBlockType) {
|
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
|
* 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 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
|
* @return True if the tool is allowed for toppling the given TreeDefinition
|
||||||
*/
|
*/
|
||||||
public boolean isToolValidForTreeDefinition(TreeDefinition treeDefinition, ItemStack tool) {
|
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
|
* Tries to spawn loot for a given TreeBlock with the given TreeDefinition for a given Player
|
||||||
*
|
*
|
||||||
* @param treeDefinition The TreeDefinition to use
|
* @param treeDefinition The TreeDefinition to use
|
||||||
* @param treeBlock The TreeBlock to drop for
|
* @param treeBlock The TreeBlock to drop for
|
||||||
* @param player The Player to drop for
|
* @param player The Player to drop for
|
||||||
* @param isForEntireTree If the loot is for the entire tree
|
* @param isForEntireTree If the loot is for the entire tree
|
||||||
*/
|
*/
|
||||||
public void dropTreeLoot(TreeDefinition treeDefinition, ITreeBlock treeBlock, Player player, boolean hasSilkTouch, boolean isForEntireTree) {
|
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)
|
for (String lootedCommand : lootedCommands)
|
||||||
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
|
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
|
||||||
lootedCommand.replace("%player%", player.getName())
|
lootedCommand.replace("%player%", player.getName())
|
||||||
.replace("%type%", treeDefinition.getKey())
|
.replace("%type%", treeDefinition.getKey())
|
||||||
.replace("%xPos%", treeBlock.getLocation().getBlockX() + "")
|
.replace("%xPos%", treeBlock.getLocation().getBlockX() + "")
|
||||||
.replace("%yPos%", treeBlock.getLocation().getBlockY() + "")
|
.replace("%yPos%", treeBlock.getLocation().getBlockY() + "")
|
||||||
.replace("%zPos%", treeBlock.getLocation().getBlockZ() + ""));
|
.replace("%zPos%", treeBlock.getLocation().getBlockZ() + ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -338,8 +347,8 @@ public class TreeDefinitionManager extends Manager {
|
|||||||
/**
|
/**
|
||||||
* Gets a TreeLoot entry from a ConfigurationSection
|
* Gets a TreeLoot entry from a ConfigurationSection
|
||||||
*
|
*
|
||||||
* @param versionAdapter The VersionAdapter to use
|
* @param versionAdapter The VersionAdapter to use
|
||||||
* @param treeBlockType The TreeBlockType to use
|
* @param treeBlockType The TreeBlockType to use
|
||||||
* @param configurationSection The ConfigurationSection
|
* @param configurationSection The ConfigurationSection
|
||||||
* @return A TreeLoot entry from the section
|
* @return A TreeLoot entry from the section
|
||||||
*/
|
*/
|
||||||
|
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<groupId>com.songoda</groupId>
|
<groupId>com.songoda</groupId>
|
||||||
<artifactId>UltimateTimber</artifactId>
|
<artifactId>UltimateTimber</artifactId>
|
||||||
<version>2.0.7</version>
|
<version>2.0.8</version>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user