mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35: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.recipes.MinecraftRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
@ -76,33 +75,37 @@ public class RecipeType {
|
||||
return SlimefunItem.getByID(machine);
|
||||
}
|
||||
|
||||
public static List<ItemStack> getRecipeInputs(SlimefunItem machine) {
|
||||
public static List<ItemStack> getRecipeInputs(SlimefunMachine machine) {
|
||||
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<>();
|
||||
|
||||
for (int i = 0; i < recipes.size(); i++) {
|
||||
if (i % 2 == 0) convertible.add(recipes.get(i)[0]);
|
||||
}
|
||||
|
||||
return convertible;
|
||||
}
|
||||
|
||||
public static List<ItemStack[]> getRecipeInputList(SlimefunItem machine) {
|
||||
public static List<ItemStack[]> getRecipeInputList(SlimefunMachine machine) {
|
||||
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<>();
|
||||
|
||||
for (int i = 0; i < recipes.size(); i++) {
|
||||
if (i % 2 == 0) convertible.add(recipes.get(i));
|
||||
}
|
||||
|
||||
return convertible;
|
||||
}
|
||||
|
||||
public static ItemStack getRecipeOutput(SlimefunItem machine, ItemStack input) {
|
||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
||||
public static ItemStack getRecipeOutput(SlimefunMachine machine, ItemStack input) {
|
||||
List<ItemStack[]> recipes = machine.getRecipes();
|
||||
return recipes.get(((getRecipeInputs(machine).indexOf(input) * 2) + 1))[0].clone();
|
||||
}
|
||||
|
||||
public static ItemStack getRecipeOutputList(SlimefunItem machine, ItemStack[] input) {
|
||||
List<ItemStack[]> recipes = (machine instanceof SlimefunMachine ? ((SlimefunMachine) machine).getRecipes(): ((SlimefunGadget) machine).getRecipes());
|
||||
public static ItemStack getRecipeOutputList(SlimefunMachine machine, ItemStack[] input) {
|
||||
List<ItemStack[]> recipes = machine.getRecipes();
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -17,19 +17,29 @@ import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
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.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
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) {
|
||||
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<>();
|
||||
|
||||
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.NETHER_WART));
|
||||
|
||||
return items.toArray(new ItemStack[0]);
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preRegister() {
|
||||
addItemHandler((BlockUseHandler) e -> {
|
||||
public BlockUseHandler getItemHandler() {
|
||||
return e -> {
|
||||
Optional<Block> block = e.getClickedBlock();
|
||||
|
||||
if (block.isPresent()) {
|
||||
e.cancel();
|
||||
|
||||
Player p = e.getPlayer();
|
||||
Block b = block.get();
|
||||
|
||||
if (p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
||||
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)) {
|
||||
ItemStack removing = input.clone();
|
||||
removing.setAmount(convert.getAmount());
|
||||
p.getInventory().removeItem(removing);
|
||||
ItemStack adding = RecipeType.getRecipeOutput(Composter.this, convert);
|
||||
ItemStack adding = recipes.get(i + 1);
|
||||
|
||||
for (int i = 1; i < 12; i++) {
|
||||
int j = i;
|
||||
for (int j = 1; j < 12; j++) {
|
||||
int index = j;
|
||||
|
||||
Slimefun.runSync(() -> {
|
||||
if (j < 11) {
|
||||
if (index < 11) {
|
||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
||||
}
|
||||
else {
|
||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||
b.getWorld().dropItemNaturally(b.getRelative(BlockFace.UP).getLocation(), adding);
|
||||
}
|
||||
}, i * 30L);
|
||||
}, j * 30L);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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.Lists.RecipeType;
|
||||
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.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
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) {
|
||||
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<>();
|
||||
|
||||
items.add(new ItemStack(Material.COBBLESTONE, 16));
|
||||
@ -57,15 +67,17 @@ public class Crucible extends SlimefunGadget {
|
||||
items.add(new ItemStack(Material.LAVA_BUCKET));
|
||||
}
|
||||
|
||||
return items.toArray(new ItemStack[0]);
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preRegister() {
|
||||
addItemHandler((BlockUseHandler) e -> {
|
||||
public BlockUseHandler getItemHandler() {
|
||||
return e -> {
|
||||
Optional<Block> optional = e.getClickedBlock();
|
||||
|
||||
if (optional.isPresent()) {
|
||||
e.cancel();
|
||||
|
||||
Player p = e.getPlayer();
|
||||
Block b = optional.get();
|
||||
|
||||
@ -73,10 +85,10 @@ public class Crucible extends SlimefunGadget {
|
||||
ItemStack input = e.getItem();
|
||||
Block block = b.getRelative(BlockFace.UP);
|
||||
|
||||
for (ItemStack convert : RecipeType.getRecipeInputs(Crucible.this)) {
|
||||
for (int i = 0; i < recipes.size(); i += 2) {
|
||||
ItemStack convert = recipes.get(i);
|
||||
|
||||
if (SlimefunManager.isItemSimilar(input, convert, true)) {
|
||||
e.cancel();
|
||||
|
||||
ItemStack removing = input.clone();
|
||||
removing.setAmount(convert.getAmount());
|
||||
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);
|
||||
|
||||
}, 50L);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
private void runPostTask(Block block, Sound sound, int times) {
|
||||
|
Loading…
Reference in New Issue
Block a user