mirror of
https://github.com/JamesPeters98/ChestsPlusPlus.git
synced 2025-02-04 06:31:38 +01:00
Fixed Hopper-amount bug
Virtual Hoppers were not respecting the hopper-amount variable spigot sets.
This commit is contained in:
parent
007fb3817f
commit
6dc864760d
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>com.jamesdpeters.chests</groupId>
|
||||
<artifactId>ChestsPlusPlus</artifactId>
|
||||
<version>1.15 v1.4</version>
|
||||
<version>1.15 v1.4.1-DEV</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.jamesdpeters.minecraft.chests;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.commands.RemoteChestCommand;
|
||||
import com.jamesdpeters.minecraft.chests.crafting.Crafting;
|
||||
import com.jamesdpeters.minecraft.chests.listeners.ChestLinkListener;
|
||||
import com.jamesdpeters.minecraft.chests.listeners.HopperListener;
|
||||
import com.jamesdpeters.minecraft.chests.listeners.InventoryListener;
|
||||
@ -11,12 +12,14 @@ import com.jamesdpeters.minecraft.chests.misc.Settings;
|
||||
import com.jamesdpeters.minecraft.chests.misc.Stats;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.LinkedChest;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.SpigotConfig;
|
||||
import com.jamesdpeters.minecraft.chests.versionchecker.UpdateCheck;
|
||||
import com.jamesdpeters.minecraft.chests.maventemplates.BuildConstants;
|
||||
import fr.minuskube.inv.InventoryManager;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
@ -27,6 +30,7 @@ import org.bukkit.plugin.java.annotation.plugin.ApiVersion;
|
||||
import org.bukkit.plugin.java.annotation.plugin.Description;
|
||||
import org.bukkit.plugin.java.annotation.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.annotation.plugin.author.Author;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
|
||||
@Plugin(name = "ChestsPlusPlus", version = BuildConstants.VERSION)
|
||||
@ -68,6 +72,7 @@ public class ChestsPlusPlus extends JavaPlugin {
|
||||
getServer().getPluginManager().registerEvents(new HopperListener(),this);
|
||||
getServer().getPluginManager().registerEvents(new WorldListener(),this);
|
||||
|
||||
SpigotConfig.load(this);
|
||||
new Config();
|
||||
|
||||
INVENTORY_MANAGER = new InventoryManager(this);
|
||||
|
@ -5,7 +5,10 @@ import com.jamesdpeters.minecraft.chests.filters.HopperFilter;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.Config;
|
||||
import com.jamesdpeters.minecraft.chests.misc.Utils;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.SpigotConfig;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Rotation;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Hopper;
|
||||
@ -36,14 +39,16 @@ public class HopperListener implements Listener {
|
||||
public void fromHopper(InventoryMoveItemEvent event){
|
||||
//FROM HOPPER
|
||||
if (event.getInitiator().getHolder() instanceof Hopper) {
|
||||
InventoryStorage storage = Config.getInventoryStorage(event.getDestination().getLocation());
|
||||
Location location = event.getDestination().getLocation();
|
||||
InventoryStorage storage = Config.getInventoryStorage(location);
|
||||
if (storage != null) {
|
||||
if(!event.isCancelled()) {
|
||||
event.setCancelled(true);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Utils.moveToOtherInventory(event.getSource(), 1, storage.getInventory());
|
||||
int hopperAmount = SpigotConfig.getWorldSettings(location.getWorld().getName()).getHopperAmount();
|
||||
Utils.moveToOtherInventory(event.getSource(), hopperAmount, storage.getInventory());
|
||||
event.getDestination().getHolder().getInventory().clear();
|
||||
storage.sort();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
|
||||
import com.jamesdpeters.minecraft.chests.filters.HopperFilter;
|
||||
import com.jamesdpeters.minecraft.chests.misc.Utils;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
|
||||
import com.jamesdpeters.minecraft.chests.serialize.SpigotConfig;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Hopper;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
@ -36,7 +37,8 @@ public class VirtualChestToHopper extends BukkitRunnable {
|
||||
if(below.getBlock().isBlockIndirectlyPowered()|| below.getBlock().isBlockPowered()){
|
||||
continue;
|
||||
}
|
||||
Utils.moveToOtherInventory(storage.getInventory(), 1, hopper.getInventory(), HopperFilter.getHopperFilters(below.getBlock()));
|
||||
int hopperAmount = SpigotConfig.getWorldSettings(location.getWorld().getName()).getHopperAmount();
|
||||
Utils.moveToOtherInventory(storage.getInventory(), hopperAmount , hopper.getInventory(), HopperFilter.getHopperFilters(below.getBlock()));
|
||||
storage.sort();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,42 @@
|
||||
package com.jamesdpeters.minecraft.chests.serialize;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class SpigotConfig {
|
||||
|
||||
private static HashMap<String,WorldSettings> worlds;
|
||||
private static WorldSettings default_;
|
||||
|
||||
public static void load(JavaPlugin plugin){
|
||||
worlds = new HashMap<>();
|
||||
try {
|
||||
//Check if we're using the Spigot API.
|
||||
Class.forName("org.spigotmc.SpigotConfig");
|
||||
ConfigurationSection worldSettings = plugin.getServer().spigot().getConfig().getConfigurationSection("world-settings");
|
||||
if(worldSettings != null) {
|
||||
worldSettings.getValues(false).forEach((worldName, o) -> {
|
||||
ConfigurationSection worldSetting = worldSettings.getConfigurationSection(worldName);
|
||||
if (!worldName.equals("default") && worldSetting != null)
|
||||
worlds.put(worldName, new WorldSettings(worldSetting));
|
||||
});
|
||||
ConfigurationSection section = worldSettings.getConfigurationSection("default");
|
||||
if(section != null) default_ = new WorldSettings(section);
|
||||
}
|
||||
if(default_ == null) default_ = new WorldSettings();
|
||||
} catch (ClassNotFoundException e){
|
||||
//Not using the Spigot API so fallback to defaults
|
||||
default_ = new WorldSettings();
|
||||
}
|
||||
}
|
||||
|
||||
public static WorldSettings getDefault(){ return default_; }
|
||||
|
||||
public static WorldSettings getWorldSettings(String worldName){
|
||||
return worlds.getOrDefault(worldName,default_);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.jamesdpeters.minecraft.chests.serialize;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
public class WorldSettings{
|
||||
|
||||
//Values
|
||||
private int ticksPerHopperTransfer, hopperAmount;
|
||||
|
||||
public WorldSettings(ConfigurationSection settings){
|
||||
ticksPerHopperTransfer = settings.getInt("ticks-per.hopper-transfer");
|
||||
hopperAmount = settings.getInt("hopper-amount");
|
||||
}
|
||||
|
||||
//Default class used as a fallback if Spigot isn't being used etc.
|
||||
public WorldSettings(){
|
||||
ticksPerHopperTransfer = 8;
|
||||
hopperAmount = 1;
|
||||
}
|
||||
|
||||
public int getTicksPerHopperTransfer(){
|
||||
return ticksPerHopperTransfer;
|
||||
}
|
||||
public int getHopperAmount() { return hopperAmount; }
|
||||
}
|
Loading…
Reference in New Issue
Block a user