mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
More Code Cleanup
This commit is contained in:
parent
09354e0be1
commit
1ec935b334
@ -9,7 +9,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SeasonCategory;
|
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Built-in categories.
|
* Built-in categories.
|
||||||
@ -40,10 +40,10 @@ public final class Categories {
|
|||||||
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2);
|
public static final Category TALISMANS_1 = new Category(new CustomItem(Material.EMERALD, "&7Talismans - &aTier I", "", "&a> Click to open"), 2);
|
||||||
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1);
|
public static final LockedCategory TALISMANS_2 = new LockedCategory(new CustomItem(Material.EMERALD, "&7Talismans - &aTier II", "", "&a> Click to open"), 3, TALISMANS_1);
|
||||||
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1);
|
public static final Category TOOLS = new Category(new CustomItem(Material.GOLDEN_PICKAXE, "&7Tools", "", "&a> Click to open"), 1);
|
||||||
public static final SeasonCategory CHRISTMAS = new SeasonCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta"));
|
public static final SeasonalCategory CHRISTMAS = new SeasonalCategory(12, 1, new CustomItem(Material.NETHER_STAR, "&aC&ch&ar&ci&as&ct&am&ca&as", "", "&c> Click to help &aSanta"));
|
||||||
public static final SeasonCategory VALENTINES_DAY = new SeasonCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
|
public static final SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
|
||||||
public static final SeasonCategory EASTER = new SeasonCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
|
public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
|
||||||
public static final SeasonCategory BIRTHDAY = new SeasonCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me"));
|
public static final SeasonalCategory BIRTHDAY = new SeasonalCategory(10, 1, new CustomItem(Material.FIREWORK_ROCKET, "&a&lTheBusyBiscuit's Birthday &7(26th October)", "", "&a> Click to celebrate with me"));
|
||||||
|
|
||||||
private static ItemStack getSkull(String texture) {
|
private static ItemStack getSkull(String texture) {
|
||||||
try {
|
try {
|
||||||
|
@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
* @since 4.0
|
* @since 4.0
|
||||||
*
|
*
|
||||||
* @see LockedCategory
|
* @see LockedCategory
|
||||||
* @see SeasonCategory
|
* @see SeasonalCategory
|
||||||
*/
|
*/
|
||||||
public class Category {
|
public class Category {
|
||||||
/**
|
/**
|
||||||
@ -75,8 +75,8 @@ public class Category {
|
|||||||
list.add(this);
|
list.add(this);
|
||||||
Collections.sort(list, new CategorySorter());
|
Collections.sort(list, new CategorySorter());
|
||||||
|
|
||||||
if (this instanceof SeasonCategory) {
|
if (this instanceof SeasonalCategory) {
|
||||||
if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
|
if (((SeasonalCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
|
||||||
}
|
}
|
||||||
else Slimefun.current_categories.add(this);
|
else Slimefun.current_categories.add(this);
|
||||||
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects;
|
|
||||||
|
|
||||||
public class Charge {
|
|
||||||
|
|
||||||
private double energy;
|
|
||||||
private double capacity;
|
|
||||||
|
|
||||||
public Charge(double energy, double capacity) {
|
|
||||||
this.energy = energy;
|
|
||||||
this.capacity = capacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getStoredEnergy() {
|
|
||||||
return energy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getCapacity() {
|
|
||||||
return capacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -20,7 +20,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
* @since 4.0
|
* @since 4.0
|
||||||
*
|
*
|
||||||
* @see Category
|
* @see Category
|
||||||
* @see SeasonCategory
|
* @see SeasonalCategory
|
||||||
*/
|
*/
|
||||||
public class LockedCategory extends Category {
|
public class LockedCategory extends Category {
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
* @see Category
|
* @see Category
|
||||||
* @see LockedCategory
|
* @see LockedCategory
|
||||||
*/
|
*/
|
||||||
public class SeasonCategory extends Category {
|
public class SeasonalCategory extends Category {
|
||||||
|
|
||||||
private int month = -1;
|
private int month = -1;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ public class SeasonCategory extends Category {
|
|||||||
*
|
*
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public SeasonCategory(int month, int tier, ItemStack item) {
|
public SeasonalCategory(int month, int tier, ItemStack item) {
|
||||||
super(item, tier);
|
super(item, tier);
|
||||||
this.month = month - 1;
|
this.month = month - 1;
|
||||||
}
|
}
|
@ -19,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineHelper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
||||||
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.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
@ -0,0 +1,100 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.Dispenser;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class ArmorForge extends SlimefunMachine {
|
||||||
|
|
||||||
|
public ArmorForge() {
|
||||||
|
super(
|
||||||
|
Categories.MACHINES_1,
|
||||||
|
SlimefunItems.ARMOR_FORGE,
|
||||||
|
"ARMOR_FORGE",
|
||||||
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
|
||||||
|
new ItemStack[] {},
|
||||||
|
Material.ANVIL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
register(true, onInteract());
|
||||||
|
}
|
||||||
|
|
||||||
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
|
return (p, mb, b) -> {
|
||||||
|
if (mb.isMultiBlock(this)) {
|
||||||
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
|
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
||||||
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
|
Inventory inv = disp.getInventory();
|
||||||
|
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
|
||||||
|
|
||||||
|
for (int i = 0; i < inputs.size(); i++) {
|
||||||
|
boolean craft = true;
|
||||||
|
for (int j = 0; j < inv.getContents().length; j++) {
|
||||||
|
if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) {
|
||||||
|
craft = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (craft) {
|
||||||
|
final ItemStack adding = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
|
||||||
|
if (Slimefun.hasUnlocked(p, adding, true)) {
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
if (outputInv != null) {
|
||||||
|
for (ItemStack removing: inputs.get(i)) {
|
||||||
|
if (removing != null) inv.removeItem(removing);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < 4; j++) {
|
||||||
|
int current = j;
|
||||||
|
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||||
|
if (current < 3) {
|
||||||
|
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
}
|
||||||
|
}, j*20L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Messages.local.sendTranslation(p, "machines.pattern-not-found", true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.Dispenser;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class Compressor extends SlimefunMachine {
|
||||||
|
|
||||||
|
public Compressor() {
|
||||||
|
super(
|
||||||
|
Categories.MACHINES_1,
|
||||||
|
SlimefunItems.COMPRESSOR,
|
||||||
|
"COMPRESSOR",
|
||||||
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)},
|
||||||
|
new ItemStack[] {new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE},
|
||||||
|
Material.NETHER_BRICK_FENCE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
register(true, onInteract());
|
||||||
|
}
|
||||||
|
|
||||||
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
|
return (p, mb, b) -> {
|
||||||
|
if (mb.isMultiBlock(this)) {
|
||||||
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
|
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
||||||
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
|
Inventory inv = disp.getInventory();
|
||||||
|
for (ItemStack current: inv.getContents()) {
|
||||||
|
for (ItemStack convert: RecipeType.getRecipeInputs(this)) {
|
||||||
|
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
||||||
|
final ItemStack adding = RecipeType.getRecipeOutput(this, convert);
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(convert.getAmount());
|
||||||
|
inv.removeItem(removing);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
int j = i;
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
||||||
|
if (j < 3) {
|
||||||
|
p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
}
|
||||||
|
}, i*20L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -49,7 +49,7 @@ public class EnhancedCraftingTable extends SlimefunMachine {
|
|||||||
private MultiBlockInteractionHandler onInteract() {
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
return (p, mb, b) -> {
|
return (p, mb, b) -> {
|
||||||
if (mb.isMultiBlock(this)) {
|
if (mb.isMultiBlock(this)) {
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
// Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity
|
// Objects dispBlock and disp have been split up, in order to add the output chest functionallity, which is the only functionallity
|
||||||
// that is dependant on the dispenser's block methods.
|
// that is dependant on the dispenser's block methods.
|
||||||
// the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object.
|
// the Dispenser disp still remains the same though, and as such doesn't break any existing code which involves said object.
|
@ -0,0 +1,79 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.Dispenser;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class GrindStone extends SlimefunMachine {
|
||||||
|
|
||||||
|
public GrindStone() {
|
||||||
|
super(
|
||||||
|
Categories.MACHINES_1,
|
||||||
|
SlimefunItems.GRIND_STONE,
|
||||||
|
"GRIND_STONE",
|
||||||
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
|
||||||
|
new ItemStack[] {new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)},
|
||||||
|
Material.OAK_FENCE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
register(true, onInteract());
|
||||||
|
}
|
||||||
|
|
||||||
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
|
return (p, mb, b) -> {
|
||||||
|
if (mb.isMultiBlock(this)) {
|
||||||
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
|
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
||||||
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
|
Inventory inv = disp.getInventory();
|
||||||
|
|
||||||
|
for (ItemStack current: inv.getContents()) {
|
||||||
|
for (ItemStack convert: RecipeType.getRecipeInputs(this)) {
|
||||||
|
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
||||||
|
ItemStack output = RecipeType.getRecipeOutput(this, convert);
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv);
|
||||||
|
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(1);
|
||||||
|
inv.removeItem(removing);
|
||||||
|
outputInv.addItem(output);
|
||||||
|
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -50,7 +50,7 @@ public class MagicWorkbench extends SlimefunMachine {
|
|||||||
private MultiBlockInteractionHandler onInteract() {
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
return (p, mb, b) -> {
|
return (p, mb, b) -> {
|
||||||
if (mb.isMultiBlock(this)) {
|
if (mb.isMultiBlock(this)) {
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
Block dispBlock = null;
|
Block dispBlock = null;
|
||||||
|
|
||||||
// Maybe this could be implemented by instead looping over a BlockFace<> array?
|
// Maybe this could be implemented by instead looping over a BlockFace<> array?
|
@ -0,0 +1,74 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.block.Dispenser;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class OreCrusher extends SlimefunMachine {
|
||||||
|
|
||||||
|
public OreCrusher() {
|
||||||
|
super(
|
||||||
|
Categories.MACHINES_1,
|
||||||
|
SlimefunItems.ORE_CRUSHER,
|
||||||
|
"ORE_CRUSHER",
|
||||||
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)},
|
||||||
|
new ItemStack[] {new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST},
|
||||||
|
Material.NETHER_BRICK_FENCE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
register(true, onInteract());
|
||||||
|
}
|
||||||
|
|
||||||
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
|
return (p, mb, b) -> {
|
||||||
|
if (mb.isMultiBlock(this)) {
|
||||||
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
|
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
||||||
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
|
Inventory inv = disp.getInventory();
|
||||||
|
for (ItemStack current: inv.getContents()) {
|
||||||
|
for (ItemStack convert: RecipeType.getRecipeInputs(this)) {
|
||||||
|
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
||||||
|
ItemStack adding = RecipeType.getRecipeOutput(this, convert);
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(convert.getAmount());
|
||||||
|
inv.removeItem(removing);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1);
|
||||||
|
}
|
||||||
|
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ public class OreWasher extends SlimefunMachine {
|
|||||||
private MultiBlockInteractionHandler onInteract() {
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
return (p, mb, b) -> {
|
return (p, mb, b) -> {
|
||||||
if (mb.isMultiBlock(this)) {
|
if (mb.isMultiBlock(this)) {
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
Block dispBlock = b.getRelative(BlockFace.UP);
|
Block dispBlock = b.getRelative(BlockFace.UP);
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
Inventory inv = disp.getInventory();
|
Inventory inv = disp.getInventory();
|
@ -1,4 +1,4 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -50,7 +50,7 @@ public class Smeltery extends SlimefunMachine {
|
|||||||
private MultiBlockInteractionHandler onInteract() {
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
return (p, mb, b) -> {
|
return (p, mb, b) -> {
|
||||||
if (mb.isMultiBlock(this)) {
|
if (mb.isMultiBlock(this)) {
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
if (!isDisabled() && CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
Inventory inv = disp.getInventory();
|
Inventory inv = disp.getInventory();
|
@ -125,7 +125,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricIngotFact
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricSmeltery;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectrifiedCrucible;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnergyRegulator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedCraftingTable;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FluidPump;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodComposter;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.FoodFabricator;
|
||||||
@ -133,16 +132,21 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Freezer;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureChamber;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.NetherDrill;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OilPump;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Refinery;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Smeltery;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.WitherAssembler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.XPCollector;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MagicWorkbench;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||||
@ -256,197 +260,10 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20})
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.GRIND_STONE, "GRIND_STONE",
|
new GrindStone().register(true);
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.OAK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
|
new ArmorForge().register(true);
|
||||||
new ItemStack[] {new ItemStack(Material.BLAZE_ROD), new ItemStack(Material.BLAZE_POWDER, 4), new ItemStack(Material.BONE), new ItemStack(Material.BONE_MEAL, 4), new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), new ItemStack(Material.NETHER_WART), new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2), new ItemStack(Material.ENDER_EYE), new CustomItem(SlimefunItems.ENDER_LUMP_1, 2), new ItemStack(Material.COBBLESTONE), new ItemStack(Material.GRAVEL), new ItemStack(Material.WHEAT), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.DIRT), SlimefunItems.STONE_CHUNK, new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4)},
|
new OreCrusher().register(true);
|
||||||
Material.OAK_FENCE)
|
new Compressor().register(true);
|
||||||
.register(true, new MultiBlockInteractionHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onInteract(Player p, MultiBlock mb, Block b) {
|
|
||||||
|
|
||||||
SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("GRIND_STONE");
|
|
||||||
|
|
||||||
if (mb.isMultiBlock(machine)) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) {
|
|
||||||
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
|
||||||
Inventory inv = disp.getInventory();
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(machine)) {
|
|
||||||
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
|
||||||
ItemStack output = RecipeType.getRecipeOutput(machine, convert);
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(output, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(1);
|
|
||||||
inv.removeItem(removing);
|
|
||||||
outputInv.addItem(output);
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1);
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ARMOR_FORGE, "ARMOR_FORGE",
|
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
|
|
||||||
new ItemStack[] {},
|
|
||||||
Material.ANVIL)
|
|
||||||
.register(true, new MultiBlockInteractionHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onInteract(final Player p, MultiBlock mb, Block b) {
|
|
||||||
|
|
||||||
SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ARMOR_FORGE");
|
|
||||||
|
|
||||||
if (mb.isMultiBlock(machine)) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) {
|
|
||||||
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
|
||||||
Inventory inv = disp.getInventory();
|
|
||||||
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(machine);
|
|
||||||
|
|
||||||
for (int i = 0; i < inputs.size(); i++) {
|
|
||||||
boolean craft = true;
|
|
||||||
for (int j = 0; j < inv.getContents().length; j++) {
|
|
||||||
if (!SlimefunManager.isItemSimiliar(inv.getContents()[j], inputs.get(i)[j], true)) {
|
|
||||||
craft = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (craft) {
|
|
||||||
final ItemStack adding = RecipeType.getRecipeOutputList(machine, inputs.get(i)).clone();
|
|
||||||
if (Slimefun.hasUnlocked(p, adding, true)) {
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
for (ItemStack removing: inputs.get(i)) {
|
|
||||||
if (removing != null) inv.removeItem(removing);
|
|
||||||
}
|
|
||||||
for (int j = 0; j < 4; j++) {
|
|
||||||
int current = j;
|
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
|
||||||
if (current < 3) {
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.BLOCK_ANVIL_USE, 1F, 2F);
|
|
||||||
} else {
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
}
|
|
||||||
}, j*20L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Messages.local.sendTranslation(p, "machines.pattern-not-found", true);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ORE_CRUSHER, "ORE_CRUSHER",
|
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS)},
|
|
||||||
new ItemStack[] {new ItemStack(Material.IRON_ORE), new CustomItem(SlimefunItems.IRON_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.GOLD_ORE), new CustomItem(SlimefunItems.GOLD_DUST, (Boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1), new ItemStack(Material.NETHERRACK, 16), SlimefunItems.SULFATE, SlimefunItems.SIFTED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER, SlimefunItems.TINY_URANIUM, new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST},
|
|
||||||
Material.NETHER_BRICK_FENCE)
|
|
||||||
.register(true, new MultiBlockInteractionHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onInteract(Player p, MultiBlock mb, Block b) {
|
|
||||||
|
|
||||||
SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_CRUSHER");
|
|
||||||
|
|
||||||
if (mb.isMultiBlock(machine)) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) {
|
|
||||||
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
|
||||||
Inventory inv = disp.getInventory();
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(machine)) {
|
|
||||||
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
|
||||||
ItemStack adding = RecipeType.getRecipeOutput(machine, convert);
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(convert.getAmount());
|
|
||||||
inv.removeItem(removing);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, 1);
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.COMPRESSOR, "COMPRESSOR",
|
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)},
|
|
||||||
new ItemStack[] {new ItemStack(Material.COAL, 8), SlimefunItems.CARBON, new CustomItem(SlimefunItems.STEEL_INGOT, 8), SlimefunItems.STEEL_PLATE, new CustomItem(SlimefunItems.CARBON, 4), SlimefunItems.COMPRESSED_CARBON, new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE},
|
|
||||||
Material.NETHER_BRICK_FENCE)
|
|
||||||
.register(true, new MultiBlockInteractionHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onInteract(final Player p, MultiBlock mb, Block b) {
|
|
||||||
|
|
||||||
SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("COMPRESSOR");
|
|
||||||
|
|
||||||
if (mb.isMultiBlock(machine)) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, machine.getItem(), true)) {
|
|
||||||
Block dispBlock = b.getRelative(BlockFace.DOWN);
|
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
|
||||||
Inventory inv = disp.getInventory();
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(machine)) {
|
|
||||||
if (convert != null && SlimefunManager.isItemSimiliar(current, convert, true)) {
|
|
||||||
final ItemStack adding = RecipeType.getRecipeOutput(machine, convert);
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(convert.getAmount());
|
|
||||||
inv.removeItem(removing);
|
|
||||||
for (int i = 0; i < 4; i++) {
|
|
||||||
int j = i;
|
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunStartup.instance, () -> {
|
|
||||||
if (j < 3) {
|
|
||||||
p.getWorld().playSound(p.getLocation(), j == 1 ? Sound.BLOCK_PISTON_CONTRACT : Sound.BLOCK_PISTON_EXTEND, 1F, j == 0 ? 1F : 2F);
|
|
||||||
} else {
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
}
|
|
||||||
}, i*20L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Messages.local.sendTranslation(p, "machines.unknown-material", true);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.MAGIC_LUMP_1, "MAGIC_LUMP_1", RecipeType.GRIND_STONE,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.MAGIC_LUMP_1, "MAGIC_LUMP_1", RecipeType.GRIND_STONE,
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_WART), null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2))
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_WART), null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2))
|
||||||
|
@ -37,7 +37,7 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SeasonCategory;
|
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
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;
|
||||||
@ -345,8 +345,8 @@ public final class SlimefunGuide {
|
|||||||
tooltips.add(parents.toString());
|
tooltips.add(parents.toString());
|
||||||
actions.add(null);
|
actions.add(null);
|
||||||
}
|
}
|
||||||
else if (category instanceof SeasonCategory) {
|
else if (category instanceof SeasonalCategory) {
|
||||||
if (((SeasonCategory) category).isUnlocked()) {
|
if (((SeasonalCategory) category).isUnlocked()) {
|
||||||
texts.add(ChatColor.translateAlternateColorCodes('&', shorten("&a", StringUtils.formatItemName(category.getItem(), false))));
|
texts.add(ChatColor.translateAlternateColorCodes('&', shorten("&a", StringUtils.formatItemName(category.getItem(), false))));
|
||||||
tooltips.add(ChatColor.translateAlternateColorCodes('&', "&eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false)));
|
tooltips.add(ChatColor.translateAlternateColorCodes('&', "&eClick to open the following Category:\n" + StringUtils.formatItemName(category.getItem(), false)));
|
||||||
actions.add(new PlayerRunnable(1) {
|
actions.add(new PlayerRunnable(1) {
|
||||||
@ -466,7 +466,7 @@ public final class SlimefunGuide {
|
|||||||
// Dont display that Category...
|
// Dont display that Category...
|
||||||
}
|
}
|
||||||
else if (!(category instanceof LockedCategory)) {
|
else if (!(category instanceof LockedCategory)) {
|
||||||
if (!(category instanceof SeasonCategory)) {
|
if (!(category instanceof SeasonalCategory)) {
|
||||||
menu.addItem(index, category.getItem());
|
menu.addItem(index, category.getItem());
|
||||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
||||||
openCategory(pl, category, survival, 1, book);
|
openCategory(pl, category, survival, 1, book);
|
||||||
@ -475,7 +475,7 @@ public final class SlimefunGuide {
|
|||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (((SeasonCategory) category).isUnlocked()) {
|
if (((SeasonalCategory) category).isUnlocked()) {
|
||||||
menu.addItem(index, category.getItem());
|
menu.addItem(index, category.getItem());
|
||||||
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
|
||||||
openCategory(pl, category, survival, 1, book);
|
openCategory(pl, category, survival, 1, book);
|
||||||
|
@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader;
|
import me.mrCookieSlime.Slimefun.Setup.CSCoreLibLoader;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Files;
|
import me.mrCookieSlime.Slimefun.Setup.Files;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
Loading…
Reference in New Issue
Block a user