RecipeUtil, isPotion and Qualsish.
This commit is contained in:
parent
d9a3a26f68
commit
57194df2d9
@ -880,6 +880,19 @@ public class InventoryUtil
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isPotion(ItemStack itemStack)
|
||||
{
|
||||
if (isNothing(itemStack)) return false;
|
||||
Material material = itemStack.getType();
|
||||
return isPotion(material);
|
||||
}
|
||||
|
||||
public static boolean isPotion(Material material)
|
||||
{
|
||||
if (material == null) return false;
|
||||
return material.name().contains("POTION");
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CLONE ITEMSTACKS/INVENTORY
|
||||
// -------------------------------------------- //
|
||||
|
@ -1669,6 +1669,7 @@ public class MUtil
|
||||
{
|
||||
if (object1 == null) return object2 == null;
|
||||
if (object2 == null) return false;
|
||||
|
||||
return object1.equals(object2);
|
||||
}
|
||||
|
||||
@ -1691,6 +1692,20 @@ public class MUtil
|
||||
return true;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EQUALSISH
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static final double EQUALSISH_EPSILON = 0.0001;
|
||||
|
||||
public static boolean equalsish(Number number1, Number number2)
|
||||
{
|
||||
if (number1 == null) return number2 == null;
|
||||
if (number2 == null) return false;
|
||||
|
||||
return Math.abs(number1.doubleValue() - number2.doubleValue()) < EQUALSISH_EPSILON;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// SORTING
|
||||
// -------------------------------------------- //
|
||||
|
119
src/com/massivecraft/massivecore/util/RecipeUtil.java
Normal file
119
src/com/massivecraft/massivecore/util/RecipeUtil.java
Normal file
@ -0,0 +1,119 @@
|
||||
package com.massivecraft.massivecore.util;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionData;
|
||||
import org.bukkit.potion.PotionType;
|
||||
|
||||
// NOTE: This utility targets 1.9 and will crash on older servers.
|
||||
public class RecipeUtil
|
||||
{
|
||||
// ------------------------------------------- //
|
||||
// POTION
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static ItemStack createPotionItemStack(PotionType type, Material material, boolean upgraded, boolean extended, int amount)
|
||||
{
|
||||
ItemStack ret = new ItemStack(material, amount);
|
||||
PotionMeta meta = (PotionMeta)ret.getItemMeta();
|
||||
PotionData data = new PotionData(type, extended, upgraded);
|
||||
meta.setBasePotionData(data);
|
||||
ret.setItemMeta(meta);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static ShapelessRecipe createPotion(PotionType type, Material material, boolean upgraded, boolean extended, Object... objects)
|
||||
{
|
||||
// When brewing you actually get 3 potions.
|
||||
final int amount = 3;
|
||||
ItemStack item = createPotionItemStack(type, material, upgraded, extended, amount);
|
||||
return createShapeless(item, objects);
|
||||
}
|
||||
|
||||
public static ShapelessRecipe addPotion(PotionType type, Material material, boolean upgraded, boolean extended, Object... objects)
|
||||
{
|
||||
ShapelessRecipe recipe = createPotion(type, material, upgraded, extended, objects);
|
||||
Bukkit.getServer().addRecipe(recipe);
|
||||
return recipe;
|
||||
}
|
||||
|
||||
// ------------------------------------------- //
|
||||
// CIRCULAR
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static void addCircular(Material material, int maxData)
|
||||
{
|
||||
ItemStack[] items = new ItemStack[maxData];
|
||||
for (int i = 0; i < maxData; i++)
|
||||
{
|
||||
items[i] = new ItemStack(material, 1, (short) i);
|
||||
}
|
||||
addCircular(items);
|
||||
}
|
||||
|
||||
public static void addCircular(ItemStack... items)
|
||||
{
|
||||
for (int i = 0; i < items.length; i++)
|
||||
{
|
||||
int next = (i+1) % items.length;
|
||||
ItemStack item = items[i];
|
||||
addShapeless(items[next], item.getDurability(), item.getAmount(), item.getType());
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------- //
|
||||
// SHAPELESS
|
||||
// -------------------------------------------- //
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static ShapelessRecipe createShapeless(ItemStack result, Object... objects)
|
||||
{
|
||||
ShapelessRecipe recipe = new ShapelessRecipe(result);
|
||||
|
||||
int quantity = 1;
|
||||
int data = 0;
|
||||
Material material = null;
|
||||
|
||||
for (Object object : objects)
|
||||
{
|
||||
if (object instanceof Number)
|
||||
{
|
||||
if (object instanceof Integer)
|
||||
{
|
||||
quantity = ((Integer)object).intValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
data = ((Number)object).intValue();
|
||||
}
|
||||
}
|
||||
else if (object instanceof Material)
|
||||
{
|
||||
material = (Material)object;
|
||||
|
||||
recipe.addIngredient(quantity, material, data);
|
||||
|
||||
quantity = 1;
|
||||
data = 0;
|
||||
material = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException(String.valueOf(object));
|
||||
}
|
||||
}
|
||||
|
||||
return recipe;
|
||||
}
|
||||
|
||||
public static ShapelessRecipe addShapeless(ItemStack result, Object... objects)
|
||||
{
|
||||
ShapelessRecipe recipe = createShapeless(result, objects);
|
||||
Bukkit.getServer().addRecipe(recipe);
|
||||
return recipe;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user