mirror of
https://github.com/JEFF-Media-GbR/ChestSort.git
synced 2025-01-20 23:21:26 +01:00
Merge pull request #33 from JEFF-Media-GbR/CrackShotHook
Crack shot hook
This commit is contained in:
commit
4151c3024e
21
README.md
21
README.md
@ -1,22 +1,19 @@
|
||||
# ChestSort
|
||||
1.8 to 1.14 compatible Minecraft-/Spigot-Plugin to allow automatic chest sorting.
|
||||
|
||||
## About
|
||||
Tired of sorting your chests? Let's spend less time on organizing, and more on playing!
|
||||
|
||||
![Screenshot ChestSort](https://static.jeff-media.de/i/chestsortbeforeafter.jpg "Screenshot ChestSort")
|
||||
|
||||
ChestSort will automatically sort every chest after you have closed it. Every player can enable or disable this feature if desired with the simple command `/chestsort`. By default, sorting is disabled. If a player uses a chest for the first time after logging in, they will be shown a text on how to enable automatic chest sorting. Players need the "chestsort.use" permission to use the plugin.
|
||||
|
||||
Sorting will work with chests and shulker boxes.
|
||||
|
||||
Tested Spigot versions: 1.8 to 1.14
|
||||
1.8 to 1.14 compatible Minecraft-/Spigot-Plugin to allow automatic chest and inventory sorting.
|
||||
|
||||
## Download & more information
|
||||
Please see the related topic at spigotmc.org for information regarding the commands, permissions and download links:
|
||||
|
||||
https://www.spigotmc.org/resources/1-13-chestsort.59773/
|
||||
|
||||
## Building .jar file
|
||||
To build the .jar file, you will need maven. Also, the CrackShot library is in no public repository, so please create a directory called `lib` and put the latest CrackShot.jar file inside it. Now you can do `mvn install`
|
||||
|
||||
## Technical stuff
|
||||
ChestSort takes an instance of org.bukkit.inventory.Inventory and copies the contents. The resulting array is sorted by rules defined in the config.yml. This takes far less than one millisecond for a whole chest. So there should be no problems even on big servers, where hundreds of players are using chests at the same time.
|
||||
The plugin should cause no lag at all.
|
||||
|
||||
## Screenshots
|
||||
<p align="center"><img src="https://static.jeff-media.de/chestsort/chestsort-screen1.jpg" alt="Screenshot ChestSort" /></p>
|
||||
|
||||
<p align="center"><img src="https://static.jeff-media.de/chestsort/chestsort-screen2.jpg" alt="Screenshot ChestSort" /></p>
|
||||
|
9
pom.xml
9
pom.xml
@ -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>
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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");
|
||||
|
||||
|
33
src/main/java/de/jeffclan/hooks/CrackShotHook.java
Normal file
33
src/main/java/de/jeffclan/hooks/CrackShotHook.java
Normal 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);
|
||||
}
|
||||
|
||||
}
|
@ -13,6 +13,8 @@
|
||||
# in your sorting-method
|
||||
sticky=true
|
||||
|
||||
crackshot_weapon_*
|
||||
crossbow
|
||||
bow
|
||||
*_sword
|
||||
trident
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user