mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
[Ci skip] Improved debugging and removed a deprecated class
This commit is contained in:
parent
c8f85ccab2
commit
55cf5a1079
@ -8,7 +8,6 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
@ -76,33 +75,37 @@ public class RecipeType {
|
|||||||
return SlimefunItem.getByID(machine);
|
return SlimefunItem.getByID(machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ItemStack> getRecipeInputs(SlimefunItem machine) {
|
public static List<ItemStack> getRecipeInputs(SlimefunMachine machine) {
|
||||||
if (machine == null) return new ArrayList<>();
|
if (machine == null) return new ArrayList<>();
|
||||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
List<ItemStack[]> recipes = machine.getRecipes();
|
||||||
List<ItemStack> convertible = new ArrayList<>();
|
List<ItemStack> convertible = new ArrayList<>();
|
||||||
|
|
||||||
for (int i = 0; i < recipes.size(); i++) {
|
for (int i = 0; i < recipes.size(); i++) {
|
||||||
if (i % 2 == 0) convertible.add(recipes.get(i)[0]);
|
if (i % 2 == 0) convertible.add(recipes.get(i)[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return convertible;
|
return convertible;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ItemStack[]> getRecipeInputList(SlimefunItem machine) {
|
public static List<ItemStack[]> getRecipeInputList(SlimefunMachine machine) {
|
||||||
if (machine == null) return new ArrayList<>();
|
if (machine == null) return new ArrayList<>();
|
||||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
List<ItemStack[]> recipes = machine.getRecipes();
|
||||||
List<ItemStack[]> convertible = new ArrayList<>();
|
List<ItemStack[]> convertible = new ArrayList<>();
|
||||||
|
|
||||||
for (int i = 0; i < recipes.size(); i++) {
|
for (int i = 0; i < recipes.size(); i++) {
|
||||||
if (i % 2 == 0) convertible.add(recipes.get(i));
|
if (i % 2 == 0) convertible.add(recipes.get(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
return convertible;
|
return convertible;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack getRecipeOutput(SlimefunItem machine, ItemStack input) {
|
public static ItemStack getRecipeOutput(SlimefunMachine machine, ItemStack input) {
|
||||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
List<ItemStack[]> recipes = machine.getRecipes();
|
||||||
return recipes.get(((getRecipeInputs(machine).indexOf(input) * 2) + 1))[0].clone();
|
return recipes.get(((getRecipeInputs(machine).indexOf(input) * 2) + 1))[0].clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack getRecipeOutputList(SlimefunItem machine, ItemStack[] input) {
|
public static ItemStack getRecipeOutputList(SlimefunMachine machine, ItemStack[] input) {
|
||||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
List<ItemStack[]> recipes = machine.getRecipes();
|
||||||
return recipes.get(((getRecipeInputList(machine).indexOf(input) * 2) + 1))[0];
|
return recipes.get(((getRecipeInputList(machine).indexOf(input) * 2) + 1))[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class SlimefunGadget extends SlimefunItem implements RecipeDisplayItem {
|
|
||||||
|
|
||||||
private List<ItemStack[]> recipes;
|
|
||||||
private List<ItemStack> displayRecipes;
|
|
||||||
|
|
||||||
public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) {
|
|
||||||
this(category, item, id, recipeType, recipe, machineRecipes, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SlimefunGadget(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes) {
|
|
||||||
this(category, item, item.getItemID(), recipeType, recipe, machineRecipes, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SlimefunGadget(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack[] machineRecipes, String[] keys, Object[] values) {
|
|
||||||
super(category, item, id, recipeType, recipe, keys, values);
|
|
||||||
this.recipes = new ArrayList<>();
|
|
||||||
this.displayRecipes = new ArrayList<>();
|
|
||||||
|
|
||||||
for (ItemStack i: machineRecipes) {
|
|
||||||
this.recipes.add(new ItemStack[] {i});
|
|
||||||
this.displayRecipes.add(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ItemStack[]> getRecipes() {
|
|
||||||
return this.recipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ItemStack> getDisplayRecipes() {
|
|
||||||
return this.displayRecipes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addRecipe(ItemStack input, ItemStack output) {
|
|
||||||
this.recipes.add(new ItemStack[] {input});
|
|
||||||
this.recipes.add(new ItemStack[] {output});
|
|
||||||
this.displayRecipes.add(input);
|
|
||||||
this.displayRecipes.add(output);
|
|
||||||
}
|
|
||||||
}
|
|
@ -592,7 +592,14 @@ public class SlimefunItem implements Placeable {
|
|||||||
Optional<ItemHandler> handler = itemhandlers.get(c);
|
Optional<ItemHandler> handler = itemhandlers.get(c);
|
||||||
|
|
||||||
if (handler.isPresent()) {
|
if (handler.isPresent()) {
|
||||||
callable.accept(c.cast(handler.get()));
|
try {
|
||||||
|
callable.accept(c.cast(handler.get()));
|
||||||
|
}
|
||||||
|
catch (Throwable x) {
|
||||||
|
// Catch any throwables and give more precise info on where to start debugging
|
||||||
|
String file = x.getStackTrace()[0].getClassName();
|
||||||
|
Bukkit.getLogger().log(Level.SEVERE, "Could not pass \"" + c.getSimpleName() + "\" for the following Item: \"" + getID() + "\" (" + file + ")", x);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,19 +17,29 @@ import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
|||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class Composter extends SlimefunGadget {
|
public class Composter extends SimpleSlimefunItem<BlockUseHandler> implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
private final List<ItemStack> recipes;
|
||||||
|
|
||||||
public Composter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public Composter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe, getMachineRecipes());
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
|
recipes = getMachineRecipes();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack[] getMachineRecipes() {
|
@Override
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
return recipes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<ItemStack> getMachineRecipes() {
|
||||||
List<ItemStack> items = new LinkedList<>();
|
List<ItemStack> items = new LinkedList<>();
|
||||||
|
|
||||||
for (Material leave : MaterialCollections.getAllLeaves()) {
|
for (Material leave : MaterialCollections.getAllLeaves()) {
|
||||||
@ -51,48 +61,54 @@ public class Composter extends SlimefunGadget {
|
|||||||
items.add(new ItemStack(Material.WHEAT, 4));
|
items.add(new ItemStack(Material.WHEAT, 4));
|
||||||
items.add(new ItemStack(Material.NETHER_WART));
|
items.add(new ItemStack(Material.NETHER_WART));
|
||||||
|
|
||||||
return items.toArray(new ItemStack[0]);
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preRegister() {
|
public BlockUseHandler getItemHandler() {
|
||||||
addItemHandler((BlockUseHandler) e -> {
|
return e -> {
|
||||||
Optional<Block> block = e.getClickedBlock();
|
Optional<Block> block = e.getClickedBlock();
|
||||||
|
|
||||||
if (block.isPresent()) {
|
if (block.isPresent()) {
|
||||||
|
e.cancel();
|
||||||
|
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
Block b = block.get();
|
Block b = block.get();
|
||||||
|
|
||||||
if (p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
if (p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
||||||
ItemStack input = e.getItem();
|
ItemStack input = e.getItem();
|
||||||
|
|
||||||
for (ItemStack convert : RecipeType.getRecipeInputs(Composter.this)) {
|
for (int i = 0; i < recipes.size(); i += 2) {
|
||||||
|
ItemStack convert = recipes.get(i);
|
||||||
|
|
||||||
if (convert != null && SlimefunManager.isItemSimilar(input, convert, true)) {
|
if (convert != null && SlimefunManager.isItemSimilar(input, convert, true)) {
|
||||||
ItemStack removing = input.clone();
|
ItemStack removing = input.clone();
|
||||||
removing.setAmount(convert.getAmount());
|
removing.setAmount(convert.getAmount());
|
||||||
p.getInventory().removeItem(removing);
|
p.getInventory().removeItem(removing);
|
||||||
ItemStack adding = RecipeType.getRecipeOutput(Composter.this, convert);
|
ItemStack adding = recipes.get(i + 1);
|
||||||
|
|
||||||
for (int i = 1; i < 12; i++) {
|
for (int j = 1; j < 12; j++) {
|
||||||
int j = i;
|
int index = j;
|
||||||
|
|
||||||
Slimefun.runSync(() -> {
|
Slimefun.runSync(() -> {
|
||||||
if (j < 11) {
|
if (index < 11) {
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||||
b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding);
|
b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding);
|
||||||
}
|
}
|
||||||
}, i * 30L);
|
}, j * 30L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,20 +19,30 @@ import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
|||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class Crucible extends SlimefunGadget {
|
public class Crucible extends SimpleSlimefunItem<BlockUseHandler> implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
private final List<ItemStack> recipes;
|
||||||
|
|
||||||
public Crucible(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public Crucible(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe, getMachineRecipes());
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
|
recipes = getMachineRecipes();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack[] getMachineRecipes() {
|
@Override
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
return recipes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<ItemStack> getMachineRecipes() {
|
||||||
List<ItemStack> items = new LinkedList<>();
|
List<ItemStack> items = new LinkedList<>();
|
||||||
|
|
||||||
items.add(new ItemStack(Material.COBBLESTONE, 16));
|
items.add(new ItemStack(Material.COBBLESTONE, 16));
|
||||||
@ -57,15 +67,17 @@ public class Crucible extends SlimefunGadget {
|
|||||||
items.add(new ItemStack(Material.LAVA_BUCKET));
|
items.add(new ItemStack(Material.LAVA_BUCKET));
|
||||||
}
|
}
|
||||||
|
|
||||||
return items.toArray(new ItemStack[0]);
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preRegister() {
|
public BlockUseHandler getItemHandler() {
|
||||||
addItemHandler((BlockUseHandler) e -> {
|
return e -> {
|
||||||
Optional<Block> optional = e.getClickedBlock();
|
Optional<Block> optional = e.getClickedBlock();
|
||||||
|
|
||||||
if (optional.isPresent()) {
|
if (optional.isPresent()) {
|
||||||
|
e.cancel();
|
||||||
|
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
Block b = optional.get();
|
Block b = optional.get();
|
||||||
|
|
||||||
@ -73,10 +85,10 @@ public class Crucible extends SlimefunGadget {
|
|||||||
ItemStack input = e.getItem();
|
ItemStack input = e.getItem();
|
||||||
Block block = b.getRelative(BlockFace.UP);
|
Block block = b.getRelative(BlockFace.UP);
|
||||||
|
|
||||||
for (ItemStack convert : RecipeType.getRecipeInputs(Crucible.this)) {
|
for (int i = 0; i < recipes.size(); i += 2) {
|
||||||
if (SlimefunManager.isItemSimilar(input, convert, true)) {
|
ItemStack convert = recipes.get(i);
|
||||||
e.cancel();
|
|
||||||
|
|
||||||
|
if (SlimefunManager.isItemSimilar(input, convert, true)) {
|
||||||
ItemStack removing = input.clone();
|
ItemStack removing = input.clone();
|
||||||
removing.setAmount(convert.getAmount());
|
removing.setAmount(convert.getAmount());
|
||||||
p.getInventory().removeItem(removing);
|
p.getInventory().removeItem(removing);
|
||||||
@ -133,13 +145,15 @@ public class Crucible extends SlimefunGadget {
|
|||||||
runPostTask(block, water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, 1);
|
runPostTask(block, water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, 1);
|
||||||
|
|
||||||
}, 50L);
|
}, 50L);
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runPostTask(Block block, Sound sound, int times) {
|
private void runPostTask(Block block, Sound sound, int times) {
|
||||||
|
Loading…
Reference in New Issue
Block a user