CrackShot support

This commit is contained in:
mfnalex 2019-07-15 14:32:38 +02:00
parent 6977deaa99
commit 22eb9fe7d9
7 changed files with 101 additions and 8 deletions

View File

@ -6,7 +6,7 @@
<groupId>de.jeffclan</groupId>
<artifactId>JeffChestSort</artifactId>
<version>6.2</version>
<version>6.3</version>
<packaging>jar</packaging>
<name>JeffChestSort</name>
@ -92,6 +92,13 @@
<version>1.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.shampaggon.crackshot</groupId>
<artifactId>CSUtility</artifactId>
<version>0.98.9</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/CrackShot.jar</systemPath>
</dependency>
</dependencies>
<description>Automatically sorts your chests!</description>

View File

@ -13,6 +13,7 @@ import org.bukkit.Bukkit;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import de.jeffclan.hooks.CrackShotHook;
import de.jeffclan.utils.CategoryLinePair;
import de.jeffclan.utils.TypeMatchPositionPair;
@ -30,6 +31,7 @@ public class JeffChestSortOrganizer {
*/
JeffChestSortPlugin plugin;
CrackShotHook crackShotHook;
// All available colors in the game. We will strip this from the item names and
// keep the color in a separate variable
@ -95,6 +97,8 @@ public class JeffChestSortOrganizer {
}
}
}
crackShotHook = new CrackShotHook(plugin);
}
@ -276,10 +280,23 @@ public class JeffChestSortOrganizer {
String[] typeAndColor = getTypeAndColor(item.getType().name());
String typeName = typeAndColor[0];
String color = typeAndColor[1];
CategoryLinePair categoryLinePair = getCategoryLinePair(item.getType().name());
String hookChangedName = item.getType().name();
// CrackShot Support Start
if(plugin.hookCrackShot) {
if(crackShotHook.getCrackShotWeaponName(item)!=null) {
typeName = plugin.getConfig().getString("hook-crackshot-prefix") + "_" + crackShotHook.getCrackShotWeaponName(item);
color="";
hookChangedName = typeName;
}
}
// CrackShot Support End
CategoryLinePair categoryLinePair = getCategoryLinePair(hookChangedName);
String categoryName = categoryLinePair.getCategoryName();
String categorySticky = categoryName;
String lineNumber = getCategoryLinePair(item.getType().name()).getFormattedPosition();
String lineNumber = getCategoryLinePair(hookChangedName).getFormattedPosition();
if(stickyCategoryNames.contains(categoryName)) {
categorySticky = categoryName+"~"+lineNumber;
}

View File

@ -47,6 +47,7 @@ import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import de.jeffclan.utils.Utils;
@ -61,10 +62,13 @@ public class JeffChestSortPlugin extends JavaPlugin {
JeffChestSortListener listener;
String sortingMethod;
ArrayList<String> disabledWorlds;
int currentConfigVersion = 15;
int currentConfigVersion = 16;
boolean usingMatchingConfig = true;
boolean debug = false;
boolean verbose = true;
public boolean hookCrackShot = false;
private long updateCheckInterval = 86400; // in seconds. We check on startup and every 24 hours (if you never
// restart your server)
@ -140,6 +144,10 @@ public class JeffChestSortPlugin extends JavaPlugin {
getConfig().addDefault("hotkeys.shift-click", true);
getConfig().addDefault("hotkeys.double-click", true);
getConfig().addDefault("hotkeys.shift-right-click", true);
getConfig().addDefault("hook-crackshot", true);
getConfig().addDefault("hook-crackshot-prefix", "crackshot_weapon");
getConfig().addDefault("verbose", true); // Prints some information in onEnable()
}
@ -205,6 +213,12 @@ public class JeffChestSortPlugin extends JavaPlugin {
// Create the config file, including checks for old config versions, and load
// the default values for unset options
createConfig();
if(getConfig().getBoolean("hook-crackshot")) {
if(Bukkit.getPluginManager().getPlugin("CrackShot") instanceof Plugin) {
hookCrackShot=true;
}
}
debug = getConfig().getBoolean("debug");

View File

@ -0,0 +1,33 @@
package de.jeffclan.hooks;
import org.bukkit.inventory.ItemStack;
import com.shampaggon.crackshot.CSUtility;
import de.jeffclan.JeffChestSort.JeffChestSortPlugin;
public class CrackShotHook {
JeffChestSortPlugin plugin;
CSUtility crackShotUtility = null;
public CrackShotHook(JeffChestSortPlugin plugin) {
this.plugin=plugin;
if(plugin.hookCrackShot) {
crackShotUtility = new CSUtility();
plugin.getLogger().info("Succesfully hooked into CrackShot");
}
}
// Will return when not a weapon
public String getCrackShotWeaponName(ItemStack item) {
if(crackShotUtility == null || plugin.hookCrackShot==false) {
return null;
}
// Will be null if not a weapon
return crackShotUtility.getWeaponTitle(item);
}
}

View File

@ -13,6 +13,8 @@
# in your sorting-method
sticky=true
crackshot_weapon_*
crossbow
bow
*_sword
trident

View File

@ -106,6 +106,26 @@ verbose: true
disabled-worlds:
##########################
##### Plugin hooks #####
##########################
# ChestSort can hook into other plugins to allow better sorting
# for items belonging to 3rd party plugins.
# You do NOT have to disable the hooks for plugins you don't have
# installed. ChestSort will automatically check if the plugins
# are installed.
##### CrackShot #####
# When CrackShot is installed, all CrackShot weapons will be
# grouped together and sorted by their name
hook-crackshot: true
# You can define a custom name that will be used as prefix
# for all CrackShot weapon names.
# E.g. when you set this to "crackshot_weapon", an AK-47
# will be called "crackshot_weapon_AK-47"
hook-crackshot-prefix: "crackshot_weapon"
##########################
##### Sorting Method #####
##########################
@ -289,4 +309,4 @@ message-error-invalid-options: "&cError: Unknown option %s. Valid options are %s
#########################
# please do not change the following line manually!
config-version: 15
config-version: 16

View File

@ -1,14 +1,14 @@
main: de.jeffclan.JeffChestSort.JeffChestSortPlugin
name: ChestSort
version: 6.2
version: 6.3
api-version: 1.13
description: Allows automatic chest sorting
author: mfnalex
website: https://www.chestsort.de
prefix: ChestSort
database: false
loadbefore:
- InvUnload
loadbefore: [InvUnload]
softdepend: [CrackShot]
commands:
chestsort:
description: Toggle automatic chest sorting