mirror of
https://github.com/DieReicheErethons/Brewery.git
synced 2024-10-01 04:27:34 +02:00
Store the item loaders on the plugin instance
This commit is contained in:
parent
74171f78c9
commit
3fa16414d0
@ -471,11 +471,11 @@ public class BIngredients {
|
|||||||
List<Ingredient> ing = new ArrayList<>(size);
|
List<Ingredient> ing = new ArrayList<>(size);
|
||||||
for (; size > 0; size--) {
|
for (; size > 0; size--) {
|
||||||
ItemLoader itemLoader = new ItemLoader(dataVersion, in, in.readUTF());
|
ItemLoader itemLoader = new ItemLoader(dataVersion, in, in.readUTF());
|
||||||
if (!Ingredient.LOADERS.containsKey(itemLoader.getSaveID())) {
|
if (!P.p.ingredientLoaders.containsKey(itemLoader.getSaveID())) {
|
||||||
P.p.errorLog("Ingredient Loader not found: " + itemLoader.getSaveID());
|
P.p.errorLog("Ingredient Loader not found: " + itemLoader.getSaveID());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Ingredient loaded = Ingredient.LOADERS.get(itemLoader.getSaveID()).apply(itemLoader);
|
Ingredient loaded = P.p.ingredientLoaders.get(itemLoader.getSaveID()).apply(itemLoader);
|
||||||
int amount = in.readShort();
|
int amount = in.readShort();
|
||||||
if (loaded != null) {
|
if (loaded != null) {
|
||||||
loaded.setAmount(amount);
|
loaded.setAmount(amount);
|
||||||
|
@ -9,8 +9,7 @@ import com.dre.brewery.integration.ChestShopListener;
|
|||||||
import com.dre.brewery.integration.IntegrationListener;
|
import com.dre.brewery.integration.IntegrationListener;
|
||||||
import com.dre.brewery.integration.barrel.LogBlockBarrel;
|
import com.dre.brewery.integration.barrel.LogBlockBarrel;
|
||||||
import com.dre.brewery.listeners.*;
|
import com.dre.brewery.listeners.*;
|
||||||
import com.dre.brewery.recipe.BCauldronRecipe;
|
import com.dre.brewery.recipe.*;
|
||||||
import com.dre.brewery.recipe.BRecipe;
|
|
||||||
import com.dre.brewery.utility.BUtil;
|
import com.dre.brewery.utility.BUtil;
|
||||||
import com.dre.brewery.utility.LegacyUtil;
|
import com.dre.brewery.utility.LegacyUtil;
|
||||||
import org.apache.commons.lang.math.NumberUtils;
|
import org.apache.commons.lang.math.NumberUtils;
|
||||||
@ -28,6 +27,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class P extends JavaPlugin {
|
public class P extends JavaPlugin {
|
||||||
public static P p;
|
public static P p;
|
||||||
@ -47,6 +47,9 @@ public class P extends JavaPlugin {
|
|||||||
public WorldListener worldListener;
|
public WorldListener worldListener;
|
||||||
public IntegrationListener integrationListener;
|
public IntegrationListener integrationListener;
|
||||||
|
|
||||||
|
// Registrations
|
||||||
|
public Map<String, Function<ItemLoader, Ingredient>> ingredientLoaders = new HashMap<>();
|
||||||
|
|
||||||
// Language
|
// Language
|
||||||
public String language;
|
public String language;
|
||||||
public LanguageReader languageReader;
|
public LanguageReader languageReader;
|
||||||
@ -95,6 +98,13 @@ public class P extends JavaPlugin {
|
|||||||
getServer().getPluginManager().disablePlugin(this);
|
getServer().getPluginManager().disablePlugin(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Register Item Loaders
|
||||||
|
CustomItem.registerItemLoader(this);
|
||||||
|
SimpleItem.registerItemLoader(this);
|
||||||
|
PluginItem.registerItemLoader(this);
|
||||||
|
|
||||||
|
// Read data files
|
||||||
BData.readData();
|
BData.readData();
|
||||||
|
|
||||||
// Setup Metrics
|
// Setup Metrics
|
||||||
@ -240,6 +250,28 @@ public class P extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For loading ingredients from ItemMeta.
|
||||||
|
* <p>Register a Static function that takes an ItemLoader, containing a DataInputStream.
|
||||||
|
* <p>Using the Stream it constructs a corresponding Ingredient for the chosen SaveID
|
||||||
|
*
|
||||||
|
* @param saveID The SaveID should be a small identifier like "AB"
|
||||||
|
* @param loadFct The Static Function that loads the Item, i.e.
|
||||||
|
* public static AItem loadFrom(ItemLoader loader)
|
||||||
|
*/
|
||||||
|
public void registerForItemLoader(String saveID, Function<ItemLoader, Ingredient> loadFct) {
|
||||||
|
ingredientLoaders.put(saveID, loadFct);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister the ItemLoader
|
||||||
|
*
|
||||||
|
* @param saveID the chosen SaveID
|
||||||
|
*/
|
||||||
|
public void unRegisterItemLoader(String saveID) {
|
||||||
|
ingredientLoaders.remove(saveID);
|
||||||
|
}
|
||||||
|
|
||||||
public static P getInstance() {
|
public static P getInstance() {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -75,11 +75,6 @@ public class BData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register Item Loaders
|
|
||||||
CustomItem.registerItemLoader();
|
|
||||||
SimpleItem.registerItemLoader();
|
|
||||||
PluginItem.registerItemLoader();
|
|
||||||
|
|
||||||
// loading Ingredients into ingMap
|
// loading Ingredients into ingMap
|
||||||
// Only for Legacy Brews
|
// Only for Legacy Brews
|
||||||
Map<String, BIngredients> ingMap = new HashMap<>();
|
Map<String, BIngredients> ingMap = new HashMap<>();
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.dre.brewery.recipe;
|
package com.dre.brewery.recipe;
|
||||||
|
|
||||||
|
import com.dre.brewery.P;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -285,7 +286,7 @@ public class CustomItem extends RecipeItem implements Ingredient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Needs to be called at Server start
|
// Needs to be called at Server start
|
||||||
public static void registerItemLoader() {
|
public static void registerItemLoader(P p) {
|
||||||
Ingredient.registerForItemLoader("CI", CustomItem::loadFrom);
|
p.registerForItemLoader("CI", CustomItem::loadFrom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,6 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Item used in a BIngredients, inside BCauldron or Brew,
|
* Item used in a BIngredients, inside BCauldron or Brew,
|
||||||
@ -17,30 +14,6 @@ import java.util.function.Function;
|
|||||||
*/
|
*/
|
||||||
public interface Ingredient {
|
public interface Ingredient {
|
||||||
|
|
||||||
Map<String, Function<ItemLoader, Ingredient>> LOADERS = new HashMap<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a Static function as function that takes an ItemLoader, containing a DataInputStream.
|
|
||||||
* <p>Using the Stream it constructs a corresponding Ingredient for the chosen SaveID
|
|
||||||
*
|
|
||||||
* @param saveID The SaveID should be a small identifier like "AB"
|
|
||||||
* @param loadFct The Static Function that loads the Item, i.e.
|
|
||||||
* public static AItem loadFrom(ItemLoader loader)
|
|
||||||
*/
|
|
||||||
static void registerForItemLoader(String saveID, Function<ItemLoader, Ingredient> loadFct) {
|
|
||||||
LOADERS.put(saveID, loadFct);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister the ItemLoader
|
|
||||||
*
|
|
||||||
* @param saveID the chosen SaveID
|
|
||||||
*/
|
|
||||||
static void unRegisterItemLoader(String saveID) {
|
|
||||||
LOADERS.remove(saveID);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves this Ingredient to the DataOutputStream.
|
* Saves this Ingredient to the DataOutputStream.
|
||||||
* <p>The first data HAS to be storing the SaveID like:
|
* <p>The first data HAS to be storing the SaveID like:
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.dre.brewery.recipe;
|
package com.dre.brewery.recipe;
|
||||||
|
|
||||||
|
import com.dre.brewery.P;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -164,8 +165,8 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
|
|||||||
* Registers the chosen SaveID and the loading Method for loading from Brew or BCauldron.
|
* Registers the chosen SaveID and the loading Method for loading from Brew or BCauldron.
|
||||||
* <p>Needs to be called at Server start.
|
* <p>Needs to be called at Server start.
|
||||||
*/
|
*/
|
||||||
public static void registerItemLoader() {
|
public static void registerItemLoader(P p) {
|
||||||
Ingredient.registerForItemLoader("PI", PluginItem::loadFrom);
|
p.registerForItemLoader("PI", PluginItem::loadFrom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,8 +144,8 @@ public class SimpleItem extends RecipeItem implements Ingredient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Needs to be called at Server start
|
// Needs to be called at Server start
|
||||||
public static void registerItemLoader() {
|
public static void registerItemLoader(P p) {
|
||||||
Ingredient.registerForItemLoader("SI", SimpleItem::loadFrom);
|
p.registerForItemLoader("SI", SimpleItem::loadFrom);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user