Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,15 @@ Eliminate complicated hopper setups with this little plugin. Filter items throug

HopperFilter has been designed from the ground up to be as performant as possible. Any pull requests improving performance are welcome.

# Extra Feature
- Regex Syntax support with "r:{regex}"
<br> e.g. r:^(diamond|emerald|iron_ingot|gold_ingot|netherite_ingot|netherite_scrap|lapis_lazuli|quartz|amethyst_shard|copper_ingot)$
<br> This filters for diamond, emeralds etc.
<br> To write regex you can use [Regex101](https://regex101.com)
- Config file /plugins/HopperFilter/config.yml
- Edit move rate for all hopper types (via config)
- Now move item from every slot in the inventory if it matches

## Credits
Thanks to LiveOverflow for the inspiration for this plugin in [this](https://youtu.be/Gi2PPBCEHuM?t=224) video.
<br> Contributor: [Kiko](https://github.com/Kiko-Dev-Tech) (Extra Features)
29 changes: 23 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,35 @@

<groupId>net.earthmc</groupId>
<artifactId>HopperFilter</artifactId>
<version>0.3.7</version>
<version>0.4.3</version>
<packaging>jar</packaging>

<name>HopperFilter</name>

<description>Name hoppers. Filter items.</description>
<description>Name hoppers. Filter items. Now with Regex Filter!</description>
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>https://earthmc.net</url>

<developers>
<developer>
<id>jwkerr</id>
<name>Fruitloopins</name>
<url>https://github.com/jwkerr</url>
<roles>
<role>creator</role>
</roles>
</developer>
<developer>
<id>kiko</id>
<name>Kiko</name>
<url>https://github.com/Kiko-Dev-Tech</url>
<roles>
<role>contributor(Regex Filer, rate config and optimization)</role>
</roles>
</developer>
</developers>
<build>
<plugins>
<plugin>
Expand Down
22 changes: 20 additions & 2 deletions src/main/java/net/earthmc/hopperfilter/HopperFilter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.earthmc.hopperfilter;

import net.earthmc.hopperfilter.command.HopperFilterCommand;
import net.earthmc.hopperfilter.listener.HopperRenameListener;
import net.earthmc.hopperfilter.listener.InventoryActionListener;
import org.bukkit.event.Listener;
Expand All @@ -8,17 +9,34 @@
public final class HopperFilter extends JavaPlugin {

private static HopperFilter instance;

public int itemsPerTransfer = 1;
@Override
public void onEnable() {
instance = this;

registerListeners(
new HopperRenameListener(),
new InventoryActionListener()
new InventoryActionListener(this)
);
saveDefaultConfig(); // Copies config.yml to plugin folder if not present
reloadConfig(); // Loads or reloads config from disk
loadSettings();

//add Reload Command for config
this.getCommand("hopperfilter").setExecutor(new HopperFilterCommand(this));
int itemsPerTransfer = getConfig().getInt("transfer.items-per-transfer", 1);
getLogger().info("Transfer rate set to: " + itemsPerTransfer + " items per 8 ticks.");
}

public void loadSettings() {
itemsPerTransfer = getConfig().getInt("transfer.items-per-transfer", 1);
}

public int getItemsPerTransfer() {
return itemsPerTransfer;
}


private void registerListeners(Listener... listeners) {
for (Listener listener : listeners) {
getServer().getPluginManager().registerEvents(listener, this);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package net.earthmc.hopperfilter.command;

import net.earthmc.hopperfilter.HopperFilter;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class HopperFilterCommand implements CommandExecutor {

private final HopperFilter plugin;

public HopperFilterCommand(HopperFilter plugin) {
this.plugin = plugin;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 1 && args[0].equalsIgnoreCase("reload")) {
if (!sender.hasPermission("hopperfilter.reload")) {
sender.sendMessage(ChatColor.RED + "You don't have permission to do that.");
return true;
}

plugin.reloadConfig(); // Reload config.yml
plugin.loadSettings();
sender.sendMessage(ChatColor.GREEN + "HopperFilter config reloaded.");
return true;
}

sender.sendMessage(ChatColor.YELLOW + "Usage: /" + label + " reload");
return true;
}
}
Loading