mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
Pushing missing files
This commit is contained in:
parent
31c7c50f64
commit
87ff5fdbc2
@ -79,6 +79,7 @@ public class Category {
|
|||||||
if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
|
if (((SeasonCategory) this).isUnlocked()) Slimefun.current_categories.add(this);
|
||||||
}
|
}
|
||||||
else Slimefun.current_categories.add(this);
|
else Slimefun.current_categories.add(this);
|
||||||
|
|
||||||
Collections.sort(Slimefun.current_categories, new CategorySorter());
|
Collections.sort(Slimefun.current_categories, new CategorySorter());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
|||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Furnace;
|
import org.bukkit.block.Furnace;
|
||||||
|
@ -21,8 +21,8 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe;
|
import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
@ -5,11 +5,18 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an Item that will not drop on death.
|
||||||
|
*
|
||||||
|
* @author TheBusyBiscuit
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class SoulboundItem extends SlimefunItem {
|
public class SoulboundItem extends SlimefunItem {
|
||||||
|
|
||||||
public SoulboundItem(Category category, ItemStack item, String id, ItemStack[] recipe) {
|
public SoulboundItem(Category category, ItemStack item, String id, ItemStack[] recipe) {
|
||||||
super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe);
|
super(category, item, id, RecipeType.MAGIC_WORKBENCH, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SoulboundItem(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
|
public SoulboundItem(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
|
||||||
super(category, item, id, type, recipe);
|
super(category, item, id, type, recipe);
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
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.Objects.Research;
|
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -23,6 +16,13 @@ import org.bukkit.event.player.PlayerEvent;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
@ -84,7 +84,7 @@ public class Talisman extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Talisman talisman = (Talisman) item;
|
Talisman talisman = (Talisman) item;
|
||||||
if (!SlimefunStartup.chance(100, talisman.getChance())) {
|
if (new Random().nextInt(100) < talisman.getChance()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
@ -36,10 +36,10 @@ import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
|||||||
|
|
||||||
public abstract class AContainer extends SlimefunItem {
|
public abstract class AContainer extends SlimefunItem {
|
||||||
|
|
||||||
public static Map<Block, MachineRecipe> processing = new HashMap<Block, MachineRecipe>();
|
public static Map<Block, MachineRecipe> processing = new HashMap<>();
|
||||||
public static Map<Block, Integer> progress = new HashMap<Block, Integer>();
|
public static Map<Block, Integer> progress = new HashMap<>();
|
||||||
|
|
||||||
protected List<MachineRecipe> recipes = new ArrayList<MachineRecipe>();
|
protected List<MachineRecipe> recipes = new ArrayList<>();
|
||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44};
|
||||||
private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30};
|
private static final int[] border_in = {9, 10, 11, 12, 18, 21, 27, 28, 29, 30};
|
||||||
@ -104,84 +104,24 @@ public abstract class AContainer extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
public AContainer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
||||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
this(category, item, id, recipeType, recipe);
|
||||||
|
this.recipeOutput = recipeOutput;
|
||||||
new BlockMenuPreset(id, getInventoryTitle()) {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
constructMenu(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void newInstance(BlockMenu menu, Block b) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canOpen(Block b, Player p) {
|
|
||||||
return p.hasPermission("slimefun.inventory.bypass") || CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) {
|
|
||||||
if (flow == ItemTransportFlow.INSERT) return getInputSlots();
|
|
||||||
else return getOutputSlots();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
registerBlockHandler(id, new SlimefunBlockHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
|
||||||
if (inv != null) {
|
|
||||||
for (int slot: getInputSlots()) {
|
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
|
||||||
inv.replaceExistingItem(slot, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int slot: getOutputSlots()) {
|
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
|
||||||
inv.replaceExistingItem(slot, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
processing.remove(b);
|
|
||||||
progress.remove(b);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.registerDefaultRecipes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void constructMenu(BlockMenuPreset preset) {
|
protected void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : border) {
|
for (int i : border) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for (int i : border_in) {
|
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
|
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for (int i : border_out) {
|
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
|
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
|
for (int i : border_in) {
|
||||||
(p, slot, item, action) -> false
|
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
);
|
}
|
||||||
|
|
||||||
|
for (int i : border_out) {
|
||||||
|
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
|
}
|
||||||
|
|
||||||
|
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
|
|
||||||
for (int i : getOutputSlots()) {
|
for (int i : getOutputSlots()) {
|
||||||
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
|
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
|
||||||
@ -234,12 +174,15 @@ public abstract class AContainer extends SlimefunItem {
|
|||||||
private Inventory inject(Block b) {
|
private Inventory inject(Block b) {
|
||||||
int size = BlockStorage.getInventory(b).toInventory().getSize();
|
int size = BlockStorage.getInventory(b).toInventory().getSize();
|
||||||
Inventory inv = Bukkit.createInventory(null, size);
|
Inventory inv = Bukkit.createInventory(null, size);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US"));
|
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US"));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int slot : getOutputSlots()) {
|
for (int slot : getOutputSlots()) {
|
||||||
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
|
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
|
||||||
}
|
}
|
||||||
|
|
||||||
return inv;
|
return inv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,7 +229,7 @@ public abstract class AContainer extends SlimefunItem {
|
|||||||
ItemMeta im = item.getItemMeta();
|
ItemMeta im = item.getItemMeta();
|
||||||
((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks()));
|
((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks()));
|
||||||
im.setDisplayName(" ");
|
im.setDisplayName(" ");
|
||||||
List<String> lore = new ArrayList<String>();
|
List<String> lore = new ArrayList<>();
|
||||||
lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks()));
|
lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks()));
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add(MachineHelper.getTimeLeft(timeleft / 2));
|
lore.add(MachineHelper.getTimeLeft(timeleft / 2));
|
||||||
|
@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
@ -4,9 +4,9 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public class MachineFuel {
|
public class MachineFuel {
|
||||||
|
|
||||||
int seconds;
|
private int seconds;
|
||||||
ItemStack fuel;
|
private ItemStack fuel;
|
||||||
ItemStack output;
|
private ItemStack output;
|
||||||
|
|
||||||
public MachineFuel(int seconds, ItemStack fuel) {
|
public MachineFuel(int seconds, ItemStack fuel) {
|
||||||
this.seconds = seconds * 2;
|
this.seconds = seconds * 2;
|
||||||
|
@ -10,7 +10,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -27,7 +27,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
@ -20,7 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -2,10 +2,16 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.Damageable;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
@ -16,12 +22,6 @@ 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;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.Damageable;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
public abstract class ElectricDustWasher extends AContainer {
|
public abstract class ElectricDustWasher extends AContainer {
|
||||||
|
|
||||||
public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
@ -52,7 +52,7 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
ItemMeta im = item.getItemMeta();
|
ItemMeta im = item.getItemMeta();
|
||||||
((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks()));
|
((Damageable) im).setDamage(MachineHelper.getDurability(item, timeleft, processing.get(b).getTicks()));
|
||||||
im.setDisplayName(" ");
|
im.setDisplayName(" ");
|
||||||
List<String> lore = new ArrayList<String>();
|
List<String> lore = new ArrayList<>();
|
||||||
lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks()));
|
lore.add(MachineHelper.getProgress(timeleft, processing.get(b).getTicks()));
|
||||||
lore.add("");
|
lore.add("");
|
||||||
lore.add(MachineHelper.getTimeLeft(timeleft / 2));
|
lore.add(MachineHelper.getTimeLeft(timeleft / 2));
|
||||||
@ -93,16 +93,7 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
if (!empty_slot) return;
|
if (!empty_slot) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack adding = SlimefunItems.IRON_DUST;
|
ItemStack adding = OreWasher.items[new Random().nextInt(OreWasher.items.length)];
|
||||||
if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST;
|
|
||||||
|
|
||||||
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
|
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
|
||||||
if (legacy_dust_washer && !fits(b, r.getOutput())) return;
|
if (legacy_dust_washer && !fits(b, r.getOutput())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
||||||
|
@ -22,7 +22,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
|
@ -26,7 +26,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -24,7 +24,7 @@ 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.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.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -23,7 +23,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
|
@ -0,0 +1,124 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
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.InvUtils;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
|
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 OreWasher extends SlimefunMachine {
|
||||||
|
|
||||||
|
public static boolean legacy;
|
||||||
|
public static ItemStack[] items;
|
||||||
|
|
||||||
|
public OreWasher() {
|
||||||
|
super(
|
||||||
|
Categories.MACHINES_1,
|
||||||
|
SlimefunItems.ORE_WASHER,
|
||||||
|
"ORE_WASHER",
|
||||||
|
new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null},
|
||||||
|
new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST},
|
||||||
|
Material.OAK_FENCE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register() {
|
||||||
|
register(true, onInteract());
|
||||||
|
}
|
||||||
|
|
||||||
|
private MultiBlockInteractionHandler onInteract() {
|
||||||
|
return (p, mb, b) -> {
|
||||||
|
if (mb.isMultiBlock(this)) {
|
||||||
|
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) {
|
||||||
|
if (Slimefun.hasUnlocked(p, getItem(), true)) {
|
||||||
|
Block dispBlock = b.getRelative(BlockFace.UP);
|
||||||
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
|
Inventory inv = disp.getInventory();
|
||||||
|
for (ItemStack current: inv.getContents()) {
|
||||||
|
if (current != null) {
|
||||||
|
if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) {
|
||||||
|
ItemStack adding = items[new Random().nextInt(items.length)];
|
||||||
|
Inventory outputInv = null;
|
||||||
|
|
||||||
|
if (!legacy) {
|
||||||
|
// This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it.
|
||||||
|
// However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory,
|
||||||
|
// so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's
|
||||||
|
// not supposed to be given to the player.
|
||||||
|
ItemStack dummyAdding = SlimefunItems.DEBUG_FISH;
|
||||||
|
outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv);
|
||||||
|
}
|
||||||
|
else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(1);
|
||||||
|
inv.removeItem(removing);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1);
|
||||||
|
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
||||||
|
if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK);
|
||||||
|
}
|
||||||
|
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) {
|
||||||
|
ItemStack adding = SlimefunItems.SALT;
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(4);
|
||||||
|
inv.removeItem(removing);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
||||||
|
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1);
|
||||||
|
}
|
||||||
|
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) {
|
||||||
|
ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER;
|
||||||
|
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
||||||
|
|
||||||
|
if (outputInv != null) {
|
||||||
|
ItemStack removing = current.clone();
|
||||||
|
removing.setAmount(1);
|
||||||
|
inv.removeItem(removing);
|
||||||
|
outputInv.addItem(adding);
|
||||||
|
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
||||||
|
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -21,7 +21,7 @@ import me.mrCookieSlime.Slimefun.Lists.Categories;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
@ -10,7 +10,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
|
@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
|
@ -19,7 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
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;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.tasks;
|
package me.mrCookieSlime.Slimefun.Objects.tasks;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
@ -9,7 +10,6 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
||||||
|
|
||||||
public class JetBootsTask extends SlimefunTask {
|
public class JetBootsTask extends SlimefunTask {
|
||||||
@ -34,7 +34,7 @@ public class JetBootsTask extends SlimefunTask {
|
|||||||
p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1);
|
p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1);
|
||||||
p.setFallDistance(0.0f);
|
p.setFallDistance(0.0f);
|
||||||
double gravity = 0.04;
|
double gravity = 0.04;
|
||||||
double offset = SlimefunStartup.chance(100, 50) ? accuracy: -accuracy;
|
double offset = new Random().nextInt(2) == 1 ? accuracy: -accuracy;
|
||||||
Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset);
|
Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset);
|
||||||
|
|
||||||
p.setVelocity(vector);
|
p.setVelocity(vector);
|
||||||
|
@ -3,7 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.tasks;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.Waterlogged;
|
import org.bukkit.block.data.Waterlogged;
|
||||||
@ -28,17 +28,21 @@ public class RainbowTicker extends BlockTicker {
|
|||||||
public void tick(Block b, SlimefunItem item, Config data) {
|
public void tick(Block b, SlimefunItem item, Config data) {
|
||||||
if (MaterialHelper.isWool(b.getType())) {
|
if (MaterialHelper.isWool(b.getType())) {
|
||||||
b.setType(MaterialHelper.WoolColours[meta], false);
|
b.setType(MaterialHelper.WoolColours[meta], false);
|
||||||
} else if (MaterialHelper.isStainedGlass(b.getType())) {
|
}
|
||||||
|
else if (MaterialHelper.isStainedGlass(b.getType())) {
|
||||||
b.setType(MaterialHelper.StainedGlassColours[meta], false);
|
b.setType(MaterialHelper.StainedGlassColours[meta], false);
|
||||||
} else if (MaterialHelper.isStainedGlassPane(b.getType())){
|
}
|
||||||
|
else if (MaterialHelper.isStainedGlassPane(b.getType())){
|
||||||
boolean waterlogged = ((Waterlogged) b.getBlockData()).isWaterlogged();
|
boolean waterlogged = ((Waterlogged) b.getBlockData()).isWaterlogged();
|
||||||
b.setType(MaterialHelper.StainedGlassPaneColours[meta], true);
|
b.setType(MaterialHelper.StainedGlassPaneColours[meta], true);
|
||||||
|
|
||||||
if (waterlogged) {
|
if (waterlogged) {
|
||||||
Waterlogged block = (Waterlogged) b.getBlockData();
|
Waterlogged block = (Waterlogged) b.getBlockData();
|
||||||
block.setWaterlogged(true);
|
block.setWaterlogged(true);
|
||||||
b.setBlockData(block);
|
b.setBlockData(block);
|
||||||
}
|
}
|
||||||
} else if (MaterialHelper.isTerracotta(b.getType())){
|
}
|
||||||
|
else if (MaterialHelper.isTerracotta(b.getType())){
|
||||||
b.setType(MaterialHelper.TerracottaColours[meta], false);
|
b.setType(MaterialHelper.TerracottaColours[meta], false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,10 +31,11 @@ public abstract class SlimefunTask implements Runnable {
|
|||||||
* @return True if task was cancelled.
|
* @return True if task was cancelled.
|
||||||
*/
|
*/
|
||||||
protected boolean cancelTask(){
|
protected boolean cancelTask(){
|
||||||
if(Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) {
|
if (Bukkit.getPlayer(uuid) == null || Bukkit.getPlayer(uuid).isDead() || !Bukkit.getPlayer(uuid).isSneaking()) {
|
||||||
Bukkit.getScheduler().cancelTask(id);
|
Bukkit.getScheduler().cancelTask(id);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -102,13 +103,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AdvancedCargoOutputNode;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AnimalGrowthAccelerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoAnvil;
|
||||||
@ -136,12 +130,20 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HeatedPressureCha
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.MagicWorkbench;
|
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.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.handlers.AutonomousMachineHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker;
|
import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker;
|
||||||
import me.mrCookieSlime.Slimefun.androids.AndroidType;
|
import me.mrCookieSlime.Slimefun.androids.AndroidType;
|
||||||
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
||||||
@ -161,8 +163,6 @@ import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener;
|
|||||||
|
|
||||||
public class SlimefunSetup {
|
public class SlimefunSetup {
|
||||||
|
|
||||||
public static boolean legacy_ore_washer = false;
|
|
||||||
|
|
||||||
public static void setupItems() {
|
public static void setupItems() {
|
||||||
new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
||||||
@ -559,15 +559,16 @@ public class SlimefunSetup {
|
|||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) {
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) {
|
||||||
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) {
|
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL) {
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) {
|
if (CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), e.getClickedBlock(), true)) {
|
||||||
List<ItemStack> drops = new ArrayList<ItemStack>();
|
List<ItemStack> drops = new ArrayList<>();
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE"))) drops.add(SlimefunItems.SIFTED_ORE);
|
Random random = new Random();
|
||||||
else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY"))) drops.add(new ItemStack(Material.CLAY_BALL));
|
|
||||||
else if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT"))) drops.add(new ItemStack(Material.FLINT));
|
|
||||||
|
|
||||||
|
|
||||||
|
if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE")) drops.add(SlimefunItems.SIFTED_ORE);
|
||||||
|
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY")) drops.add(new ItemStack(Material.CLAY_BALL));
|
||||||
|
else if (random.nextInt(100) < (Integer) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT")) drops.add(new ItemStack(Material.FLINT));
|
||||||
|
|
||||||
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
||||||
e.getClickedBlock().setType(Material.AIR);
|
e.getClickedBlock().setType(Material.AIR);
|
||||||
|
|
||||||
for (ItemStack drop: drops) {
|
for (ItemStack drop: drops) {
|
||||||
e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop);
|
e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop);
|
||||||
}
|
}
|
||||||
@ -998,97 +999,7 @@ public class SlimefunSetup {
|
|||||||
new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"})
|
new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ORE_WASHER, "ORE_WASHER",
|
new OreWasher().register();
|
||||||
new ItemStack[] {null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null},
|
|
||||||
new ItemStack[] {SlimefunItems.SIFTED_ORE, SlimefunItems.IRON_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.GOLD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.COPPER_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.TIN_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ZINC_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST},
|
|
||||||
Material.OAK_FENCE)
|
|
||||||
.register(true, new MultiBlockInteractionHandler() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onInteract(Player p, MultiBlock mb, Block b) {
|
|
||||||
|
|
||||||
SlimefunMachine machine = (SlimefunMachine) SlimefunItem.getByID("ORE_WASHER");
|
|
||||||
|
|
||||||
if (mb.isMultiBlock(machine)) {
|
|
||||||
if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) {
|
|
||||||
if (Slimefun.hasUnlocked(p, machine.getItem(), true)) {
|
|
||||||
Block dispBlock = b.getRelative(BlockFace.UP);
|
|
||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
|
||||||
Inventory inv = disp.getInventory();
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
|
||||||
if (current != null) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(current, SlimefunItems.SIFTED_ORE, true)) {
|
|
||||||
ItemStack adding = SlimefunItems.IRON_DUST;
|
|
||||||
if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.GOLD_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ALUMINUM_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.COPPER_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.ZINC_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.TIN_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.MAGNESIUM_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.LEAD_DUST;
|
|
||||||
else if (SlimefunStartup.chance(100, 25)) adding = SlimefunItems.SILVER_DUST;
|
|
||||||
|
|
||||||
Inventory outputInv = null;
|
|
||||||
|
|
||||||
if (!legacy_ore_washer) {
|
|
||||||
// This is a fancy way of checking if there is empty space in the inv; by checking if an unobtainable item could fit in it.
|
|
||||||
// However, due to the way the method findValidOutputInv() functions, the dummyAdding will never actually be added to the real inventory,
|
|
||||||
// so it really doesn't matter what item the ItemStack is made by. SlimefunItems.DEBUG_FISH however, signals that it's
|
|
||||||
// not supposed to be given to the player.
|
|
||||||
ItemStack dummyAdding = SlimefunItems.DEBUG_FISH;
|
|
||||||
outputInv = SlimefunMachine.findValidOutputInv(dummyAdding, dispBlock, inv);
|
|
||||||
} else outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(1);
|
|
||||||
inv.removeItem(removing);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1);
|
|
||||||
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
|
||||||
if (InvUtils.fits(outputInv, SlimefunItems.STONE_CHUNK)) outputInv.addItem(SlimefunItems.STONE_CHUNK);
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (SlimefunManager.isItemSimiliar(current, new ItemStack(Material.SAND, 4), false)) {
|
|
||||||
ItemStack adding = SlimefunItems.SALT;
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(4);
|
|
||||||
inv.removeItem(removing);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
|
||||||
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1, 1);
|
|
||||||
}
|
|
||||||
else Messages.local.sendTranslation(p, "machines.full-inventory", true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (SlimefunManager.isItemSimiliar(current, SlimefunItems.PULVERIZED_ORE, true)) {
|
|
||||||
ItemStack adding = SlimefunItems.PURE_ORE_CLUSTER;
|
|
||||||
Inventory outputInv = SlimefunMachine.findValidOutputInv(adding, dispBlock, inv);
|
|
||||||
if (outputInv != null) {
|
|
||||||
ItemStack removing = current.clone();
|
|
||||||
removing.setAmount(1);
|
|
||||||
inv.removeItem(removing);
|
|
||||||
outputInv.addItem(adding);
|
|
||||||
p.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, Material.WATER);
|
|
||||||
p.getWorld().playSound(b.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 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 SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_24K, "GOLD_24K", RecipeType.SMELTERY,
|
new SlimefunItem(Categories.RESOURCES, SlimefunItems.GOLD_24K, "GOLD_24K", RecipeType.SMELTERY,
|
||||||
new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null})
|
||||||
|
@ -29,6 +29,7 @@ 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.AutoEnchanter;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AutoEnchanter;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ElectricDustWasher;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.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;
|
||||||
@ -47,7 +48,6 @@ import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
|||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ChestManipulator;
|
|
||||||
import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver;
|
import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver;
|
||||||
import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
|
import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
||||||
@ -358,7 +358,9 @@ public class SlimefunStartup extends JavaPlugin {
|
|||||||
|
|
||||||
AutoEnchanter.max_emerald_enchantments = config.getInt("options.emerald-enchantment-limit");
|
AutoEnchanter.max_emerald_enchantments = config.getInt("options.emerald-enchantment-limit");
|
||||||
|
|
||||||
SlimefunSetup.legacy_ore_washer = config.getBoolean("options.legacy-ore-washer");
|
OreWasher.legacy = config.getBoolean("options.legacy-ore-washer");
|
||||||
|
OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST};
|
||||||
|
|
||||||
ElectricDustWasher.legacy_dust_washer = config.getBoolean("options.legacy-dust-washer");
|
ElectricDustWasher.legacy_dust_washer = config.getBoolean("options.legacy-dust-washer");
|
||||||
|
|
||||||
// Do not show /sf elevator command in our Log, it could get quite spammy
|
// Do not show /sf elevator command in our Log, it could get quite spammy
|
||||||
@ -443,8 +445,8 @@ public class SlimefunStartup extends JavaPlugin {
|
|||||||
TickerTask.block_timings = null;
|
TickerTask.block_timings = null;
|
||||||
OreGenSystem.map = null;
|
OreGenSystem.map = null;
|
||||||
SlimefunGuide.contributors = null;
|
SlimefunGuide.contributors = null;
|
||||||
ChestManipulator.listeners = null;
|
|
||||||
PlayerProfile.profiles = null;
|
PlayerProfile.profiles = null;
|
||||||
|
OreWasher.items = null;
|
||||||
|
|
||||||
for (Player p: Bukkit.getOnlinePlayers()) {
|
for (Player p: Bukkit.getOnlinePlayers()) {
|
||||||
p.closeInventory();
|
p.closeInventory();
|
||||||
|
@ -55,7 +55,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter;
|
import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter;
|
||||||
|
@ -19,7 +19,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
|
|
||||||
public class TickerTask implements Runnable {
|
public class TickerTask implements Runnable {
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package me.mrCookieSlime.Slimefun.api.energy;
|
|||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ public abstract class BlockMenuPreset extends ChestMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Set<Integer> getInventorySlots() {
|
public Set<Integer> getInventorySlots() {
|
||||||
Set<Integer> empty = new HashSet<Integer>();
|
Set<Integer> empty = new HashSet<>();
|
||||||
if (size > -1) {
|
if (size > -1) {
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
if (!occupied.contains(i)) empty.add(i);
|
if (!occupied.contains(i)) empty.add(i);
|
||||||
|
@ -11,8 +11,8 @@ import org.bukkit.event.block.BlockDispenseEvent;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.AutonomousMachineHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.AutonomousMachineHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
|
||||||
public class AutonomousToolsListener implements Listener {
|
public class AutonomousToolsListener implements Listener {
|
||||||
|
@ -8,8 +8,8 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
|||||||
import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent;
|
import me.mrCookieSlime.Slimefun.Events.MultiBlockInteractEvent;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.MultiBlockInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -17,8 +17,8 @@ import org.bukkit.util.Vector;
|
|||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
import me.mrCookieSlime.Slimefun.Utilities;
|
import me.mrCookieSlime.Slimefun.Utilities;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BowShootHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
|
|
||||||
public class BowListener implements Listener {
|
public class BowListener implements Listener {
|
||||||
|
|
||||||
|
@ -48,8 +48,8 @@ import me.mrCookieSlime.Slimefun.Misc.BookDesign;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
@ -31,9 +31,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.HandledBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Interfaces.NotPlaceable;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockBreakHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.BlockPlaceHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
import me.mrCookieSlime.Slimefun.Setup.Messages;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
Loading…
Reference in New Issue
Block a user