1
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:
TheBusyBiscuit 2019-08-30 11:28:27 +02:00
parent 09354e0be1
commit 1ec935b334
17 changed files with 378 additions and 241 deletions

View File

@ -9,7 +9,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
import me.mrCookieSlime.Slimefun.Objects.SeasonCategory;
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
/**
* 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 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 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 SeasonCategory VALENTINES_DAY = new SeasonCategory(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 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 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 SeasonalCategory VALENTINES_DAY = new SeasonalCategory(2, 2, new CustomItem(Material.POPPY, "&dValentine's Day", "", "&d> Click to celebrate Love"));
public static final SeasonalCategory EASTER = new SeasonalCategory(4, 2, new CustomItem(Material.EGG, "&6Easter", "", "&a> Click to paint some Eggs"));
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) {
try {

View File

@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
* @since 4.0
*
* @see LockedCategory
* @see SeasonCategory
* @see SeasonalCategory
*/
public class Category {
/**
@ -75,8 +75,8 @@ public class Category {
list.add(this);
Collections.sort(list, new CategorySorter());
if (this instanceof SeasonCategory) {
if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
if (this instanceof SeasonalCategory) {
if (((SeasonalCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
}
else Slimefun.current_categories.add(this);

View File

@ -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;
}
}

View File

@ -20,7 +20,7 @@ import org.bukkit.inventory.ItemStack;
* @since 4.0
*
* @see Category
* @see SeasonCategory
* @see SeasonalCategory
*/
public class LockedCategory extends Category {

View File

@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack;
* @see Category
* @see LockedCategory
*/
public class SeasonCategory extends Category {
public class SeasonalCategory extends Category {
private int month = -1;
@ -32,7 +32,7 @@ public class SeasonCategory extends Category {
*
* @since 4.0
*/
public SeasonCategory(int month, int tier, ItemStack item) {
public SeasonalCategory(int month, int tier, ItemStack item) {
super(item, tier);
this.month = month - 1;
}

View File

@ -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.MachineHelper;
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.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;

View File

@ -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;
}
};
}
}

View File

@ -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;
}
};
}
}

View File

@ -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.UUID;
@ -49,7 +49,7 @@ public class EnhancedCraftingTable extends SlimefunMachine {
private MultiBlockInteractionHandler onInteract() {
return (p, mb, b) -> {
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
// 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.

View File

@ -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;
}
};
}
}

View File

@ -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.UUID;
@ -50,7 +50,7 @@ public class MagicWorkbench extends SlimefunMachine {
private MultiBlockInteractionHandler onInteract() {
return (p, mb, b) -> {
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;
// Maybe this could be implemented by instead looping over a BlockFace<> array?

View File

@ -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;
}
};
}
}

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
import java.util.Random;
@ -45,7 +45,7 @@ public class OreWasher extends SlimefunMachine {
private MultiBlockInteractionHandler onInteract() {
return (p, mb, b) -> {
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);
Dispenser disp = (Dispenser) dispBlock.getState();
Inventory inv = disp.getInventory();

View File

@ -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.Random;
@ -50,7 +50,7 @@ public class Smeltery extends SlimefunMachine {
private MultiBlockInteractionHandler onInteract() {
return (p, mb, b) -> {
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);
Dispenser disp = (Dispenser) dispBlock.getState();
Inventory inv = disp.getInventory();

View File

@ -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.ElectrifiedCrucible;
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.FoodComposter;
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.HologramProjector;
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.OilPump;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.OreWasher;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
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.WitherAssembler;
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.BlockBreakHandler;
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})
.register(true);
new SlimefunMachine(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)
.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 GrindStone().register(true);
new ArmorForge().register(true);
new OreCrusher().register(true);
new Compressor().register(true);
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))

View File

@ -37,7 +37,7 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
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.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
@ -345,8 +345,8 @@ public final class SlimefunGuide {
tooltips.add(parents.toString());
actions.add(null);
}
else if (category instanceof SeasonCategory) {
if (((SeasonCategory) category).isUnlocked()) {
else if (category instanceof SeasonalCategory) {
if (((SeasonalCategory) category).isUnlocked()) {
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)));
actions.add(new PlayerRunnable(1) {
@ -466,7 +466,7 @@ public final class SlimefunGuide {
// Dont display that Category...
}
else if (!(category instanceof LockedCategory)) {
if (!(category instanceof SeasonCategory)) {
if (!(category instanceof SeasonalCategory)) {
menu.addItem(index, category.getItem());
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
openCategory(pl, category, survival, 1, book);
@ -475,7 +475,7 @@ public final class SlimefunGuide {
index++;
}
else {
if (((SeasonCategory) category).isUnlocked()) {
if (((SeasonalCategory) category).isUnlocked()) {
menu.addItem(index, category.getItem());
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
openCategory(pl, category, survival, 1, book);

View File

@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
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.Files;
import me.mrCookieSlime.Slimefun.Setup.Messages;