mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Added Magnesium Salt and Magnesium-powered Generator
This commit is contained in:
parent
59fb83e871
commit
33adb7e79a
@ -827,6 +827,9 @@ public final class SlimefunItems {
|
|||||||
public static final ItemStack SOULBOUND_ELYTRA = new SlimefunItemStack("SOULBOUND_ELYTRA", ELYTRA, "&cSoulbound Elytra");
|
public static final ItemStack SOULBOUND_ELYTRA = new SlimefunItemStack("SOULBOUND_ELYTRA", ELYTRA, "&cSoulbound Elytra");
|
||||||
|
|
||||||
public static final ItemStack TOTEM_OF_UNDYING = new ItemStack(Material.TOTEM_OF_UNDYING);
|
public static final ItemStack TOTEM_OF_UNDYING = new ItemStack(Material.TOTEM_OF_UNDYING);
|
||||||
|
|
||||||
|
public static final ItemStack MAGNESIUM_SALT = new SlimefunItemStack("MAGNESIUM_SALT", Material.SUGAR, "&cMagnesium Salt", "", "&7A special type of fuel that can be", "&7used in a Magnesium-powered Generator");
|
||||||
|
public static final ItemStack MAGNESIUM_GENERATOR = new SlimefunItemStack("MAGNESIUM_GENERATOR", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ==", "&cMagnesium-powered Generator", "", MachineTier.MEDIUM.and(MachineType.GENERATOR), "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &736 J/s");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
INFUSED_ELYTRA.addUnsafeEnchantment(Enchantment.MENDING, 1);
|
INFUSED_ELYTRA.addUnsafeEnchantment(Enchantment.MENDING, 1);
|
||||||
|
@ -16,9 +16,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayIt
|
|||||||
|
|
||||||
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
||||||
|
|
||||||
protected List<ItemStack[]> recipes;
|
protected final List<ItemStack[]> recipes;
|
||||||
protected List<ItemStack> shownRecipes;
|
protected final List<ItemStack> shownRecipes;
|
||||||
private BlockFace trigger;
|
protected final BlockFace trigger;
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) {
|
public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) {
|
||||||
@ -80,20 +80,20 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void install() {
|
public void install() {
|
||||||
for (ItemStack i: shownRecipes) {
|
for (ItemStack recipeItem : shownRecipes) {
|
||||||
SlimefunItem item = SlimefunItem.getByItem(i);
|
SlimefunItem item = SlimefunItem.getByItem(recipeItem);
|
||||||
if (item == null || !SlimefunItem.isDisabled(i)) {
|
if (item == null || !SlimefunItem.isDisabled(recipeItem)) {
|
||||||
this.recipes.add(new ItemStack[] {i});
|
this.recipes.add(new ItemStack[] {recipeItem});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Material[] convertItemStacksToMaterial(ItemStack[] items) {
|
private static Material[] convertItemStacksToMaterial(ItemStack[] items) {
|
||||||
List<Material> mats = new ArrayList<>();
|
List<Material> mats = new ArrayList<>();
|
||||||
for (ItemStack i: items) {
|
for (ItemStack item : items) {
|
||||||
if (i == null) mats.add(null);
|
if (item == null) mats.add(null);
|
||||||
else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
|
else if (item.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE);
|
||||||
else mats.add(i.getType());
|
else mats.add(item.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
return mats.toArray(new Material[mats.size()]);
|
return mats.toArray(new Material[mats.size()]);
|
||||||
|
@ -224,8 +224,8 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
||||||
for (MachineFuel recipe: recipes) {
|
for (MachineFuel recipe : recipes) {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), recipe.getInput(), true)) {
|
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), recipe.getInput(), true)) {
|
||||||
found.put(slot, recipe.getInput().getAmount());
|
found.put(slot, recipe.getInput().getAmount());
|
||||||
return recipe;
|
return recipe;
|
||||||
@ -249,7 +249,7 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
|
|||||||
public List<ItemStack> getDisplayRecipes() {
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
List<ItemStack> list = new ArrayList<>();
|
List<ItemStack> list = new ArrayList<>();
|
||||||
|
|
||||||
for (MachineFuel fuel: recipes) {
|
for (MachineFuel fuel : recipes) {
|
||||||
ItemStack item = fuel.getInput().clone();
|
ItemStack item = fuel.getInput().clone();
|
||||||
ItemMeta im = item.getItemMeta();
|
ItemMeta im = item.getItemMeta();
|
||||||
List<String> lore = new ArrayList<>();
|
List<String> lore = new ArrayList<>();
|
||||||
|
@ -4,9 +4,9 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public class MachineFuel {
|
public class MachineFuel {
|
||||||
|
|
||||||
private int ticks;
|
private final int ticks;
|
||||||
private ItemStack fuel;
|
private final ItemStack fuel;
|
||||||
private ItemStack output;
|
private final ItemStack output;
|
||||||
|
|
||||||
public MachineFuel(int seconds, ItemStack fuel) {
|
public MachineFuel(int seconds, ItemStack fuel) {
|
||||||
this.ticks = seconds * 2;
|
this.ticks = seconds * 2;
|
||||||
|
@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Nameable;
|
import org.bukkit.Nameable;
|
||||||
@ -54,9 +53,11 @@ public class BlockPlacer extends SimpleSlimefunItem<AutonomousMachineHandler> {
|
|||||||
block.setType(e.getItem().getType());
|
block.setType(e.getItem().getType());
|
||||||
BlockStorage.store(block, sfItem.getID());
|
BlockStorage.store(block, sfItem.getID());
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
if (d.getInventory().containsAtLeast(e.getItem(), 2)) {
|
||||||
|
d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
Slimefun.runSync(() -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -81,9 +82,11 @@ public class BlockPlacer extends SimpleSlimefunItem<AutonomousMachineHandler> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType());
|
||||||
if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
if (d.getInventory().containsAtLeast(e.getItem(), 2)) {
|
||||||
|
d.getInventory().removeItem(new CustomItem(e.getItem(), 1));
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> d.getInventory().removeItem(e.getItem()), 2L);
|
Slimefun.runSync(() -> d.getInventory().removeItem(e.getItem()), 2L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -96,6 +99,6 @@ public class BlockPlacer extends SimpleSlimefunItem<AutonomousMachineHandler> {
|
|||||||
@Override
|
@Override
|
||||||
public void postRegister() {
|
public void postRegister() {
|
||||||
List<?> list = (List<?>) Slimefun.getItemValue(getID(), "unplaceable-blocks");
|
List<?> list = (List<?>) Slimefun.getItemValue(getID(), "unplaceable-blocks");
|
||||||
blacklist = list.toArray(new String[list.size()]);
|
blacklist = list.toArray(new String[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,12 +34,12 @@ public class Composter extends SlimefunGadget {
|
|||||||
private static ItemStack[] getMachineRecipes() {
|
private static ItemStack[] getMachineRecipes() {
|
||||||
List<ItemStack> items = new LinkedList<>();
|
List<ItemStack> items = new LinkedList<>();
|
||||||
|
|
||||||
for (Material leave: MaterialCollections.getAllLeaves()) {
|
for (Material leave : MaterialCollections.getAllLeaves()) {
|
||||||
items.add(new ItemStack(leave, 8));
|
items.add(new ItemStack(leave, 8));
|
||||||
items.add(new ItemStack(Material.DIRT));
|
items.add(new ItemStack(Material.DIRT));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Material sapling: MaterialCollections.getAllSaplings()) {
|
for (Material sapling : MaterialCollections.getAllSaplings()) {
|
||||||
items.add(new ItemStack(sapling, 8));
|
items.add(new ItemStack(sapling, 8));
|
||||||
items.add(new ItemStack(Material.DIRT));
|
items.add(new ItemStack(Material.DIRT));
|
||||||
}
|
}
|
||||||
@ -66,11 +66,11 @@ public class Composter extends SlimefunGadget {
|
|||||||
String id = BlockStorage.checkID(e.getClickedBlock());
|
String id = BlockStorage.checkID(e.getClickedBlock());
|
||||||
if (id != null && id.equals(getID())) {
|
if (id != null && id.equals(getID())) {
|
||||||
if (p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
if (p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
||||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
ItemStack input = p.getInventory().getItemInMainHand();
|
||||||
final Block b = e.getClickedBlock();
|
Block b = e.getClickedBlock();
|
||||||
SlimefunItem machine = SlimefunItem.getByID(id);
|
SlimefunItem machine = SlimefunItem.getByID(id);
|
||||||
|
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(machine)) {
|
for (ItemStack convert : RecipeType.getRecipeInputs(machine)) {
|
||||||
if (convert != null && SlimefunManager.isItemSimilar(input, convert, true)) {
|
if (convert != null && SlimefunManager.isItemSimilar(input, convert, true)) {
|
||||||
ItemStack removing = input.clone();
|
ItemStack removing = input.clone();
|
||||||
removing.setAmount(convert.getAmount());
|
removing.setAmount(convert.getAmount());
|
||||||
@ -79,6 +79,7 @@ public class Composter extends SlimefunGadget {
|
|||||||
|
|
||||||
for (int i = 1; i < 12; i++) {
|
for (int i = 1; i < 12; i++) {
|
||||||
int j = i;
|
int j = i;
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
||||||
if (j < 11) {
|
if (j < 11) {
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, input.getType().isBlock() ? input.getType() : Material.HAY_BLOCK);
|
||||||
|
@ -46,12 +46,12 @@ public class Crucible extends SlimefunGadget {
|
|||||||
items.add(new ItemStack(Material.OBSIDIAN, 1));
|
items.add(new ItemStack(Material.OBSIDIAN, 1));
|
||||||
items.add(new ItemStack(Material.LAVA_BUCKET));
|
items.add(new ItemStack(Material.LAVA_BUCKET));
|
||||||
|
|
||||||
for (Material leave: MaterialCollections.getAllLeaves()) {
|
for (Material leave : MaterialCollections.getAllLeaves()) {
|
||||||
items.add(new ItemStack(leave, 16));
|
items.add(new ItemStack(leave, 16));
|
||||||
items.add(new ItemStack(Material.WATER_BUCKET));
|
items.add(new ItemStack(Material.WATER_BUCKET));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Material sapling: MaterialCollections.getAllTerracottaColors()) {
|
for (Material sapling : MaterialCollections.getAllTerracottaColors()) {
|
||||||
items.add(new ItemStack(sapling, 12));
|
items.add(new ItemStack(sapling, 12));
|
||||||
items.add(new ItemStack(Material.LAVA_BUCKET));
|
items.add(new ItemStack(Material.LAVA_BUCKET));
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ public class Crucible extends SlimefunGadget {
|
|||||||
final Block block = e.getClickedBlock().getRelative(BlockFace.UP);
|
final Block block = e.getClickedBlock().getRelative(BlockFace.UP);
|
||||||
SlimefunItem machine = SlimefunItem.getByID(id);
|
SlimefunItem machine = SlimefunItem.getByID(id);
|
||||||
|
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(machine)) {
|
for (ItemStack convert : RecipeType.getRecipeInputs(machine)) {
|
||||||
if (SlimefunManager.isItemSimilar(input, convert, true)) {
|
if (SlimefunManager.isItemSimilar(input, convert, true)) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
@ -85,12 +85,14 @@ public class Crucible extends SlimefunGadget {
|
|||||||
level -= 8;
|
level -= 8;
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
block.getWorld().playSound(block.getLocation(), water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, 1F, 1F);
|
block.getWorld().playSound(block.getLocation(), water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, 1F, 1F);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
int finalLevel = 7 - level;
|
int finalLevel = 7 - level;
|
||||||
Slimefun.runSync(() -> runPostTask(block, water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, finalLevel), 50L);
|
Slimefun.runSync(() -> runPostTask(block, water ? Sound.ENTITY_PLAYER_SPLASH : Sound.BLOCK_LAVA_POP, finalLevel), 50L);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if (block.getType() == (water ? Material.LAVA : Material.WATER)) {
|
}
|
||||||
|
else if (block.getType() == (water ? Material.LAVA : Material.WATER)) {
|
||||||
int level = ((Levelled) block.getBlockData()).getLevel();
|
int level = ((Levelled) block.getBlockData()).getLevel();
|
||||||
block.setType(level == 0 || level == 8 ? Material.OBSIDIAN : Material.STONE);
|
block.setType(level == 0 || level == 8 ? Material.OBSIDIAN : Material.STONE);
|
||||||
block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 1F, 1F);
|
block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LAVA_EXTINGUISH, 1F, 1F);
|
||||||
@ -136,11 +138,13 @@ public class Crucible extends SlimefunGadget {
|
|||||||
block.getWorld().playSound(block.getLocation(), Sound.BLOCK_METAL_BREAK, 1F, 1F);
|
block.getWorld().playSound(block.getLocation(), Sound.BLOCK_METAL_BREAK, 1F, 1F);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
block.getWorld().playSound(block.getLocation(), sound, 1F, 1F);
|
block.getWorld().playSound(block.getLocation(), sound, 1F, 1F);
|
||||||
int level = 8 - times;
|
int level = 8 - times;
|
||||||
Levelled le = (Levelled) block.getBlockData();
|
Levelled le = (Levelled) block.getBlockData();
|
||||||
le.setLevel(level);
|
le.setLevel(level);
|
||||||
block.setBlockData(le, false);
|
block.setBlockData(le, false);
|
||||||
|
|
||||||
if (times < 8)
|
if (times < 8)
|
||||||
Slimefun.runSync(() -> runPostTask(block, sound, times + 1), 50L);
|
Slimefun.runSync(() -> runPostTask(block, sound, times + 1), 50L);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
|||||||
return new BlockTicker() {
|
return new BlockTicker() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick(Block b, SlimefunItem item, Config data) {
|
public void tick(Block b, SlimefunItem sfItem, Config data) {
|
||||||
if (b.getType() != Material.HOPPER) {
|
if (b.getType() != Material.HOPPER) {
|
||||||
// we're no longer a hopper, we were probably destroyed. skipping this tick.
|
// we're no longer a hopper, we were probably destroyed. skipping this tick.
|
||||||
BlockStorage.clearBlockInfo(b);
|
BlockStorage.clearBlockInfo(b);
|
||||||
@ -44,9 +44,9 @@ public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
|||||||
Location l = b.getLocation().add(0.5, 1.2, 0.5);
|
Location l = b.getLocation().add(0.5, 1.2, 0.5);
|
||||||
boolean sound = false;
|
boolean sound = false;
|
||||||
|
|
||||||
for (Entity n: b.getWorld().getNearbyEntities(l, 3.5D, 3.5D, 3.5D, n -> n instanceof Item && n.isValid() && !n.hasMetadata("no_pickup") && n.getLocation().distanceSquared(l) > 0.1)) {
|
for (Entity item : b.getWorld().getNearbyEntities(l, 3.5D, 3.5D, 3.5D, n -> n instanceof Item && n.isValid() && !n.hasMetadata("no_pickup") && n.getLocation().distanceSquared(l) > 0.1)) {
|
||||||
n.setVelocity(new Vector(0, 0.1, 0));
|
item.setVelocity(new Vector(0, 0.1, 0));
|
||||||
n.teleport(l);
|
item.teleport(l);
|
||||||
sound = true;
|
sound = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
if (reactor != null) {
|
if (reactor != null) {
|
||||||
menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Reactor", "", "&6Detected", "", "&7> Click to view Reactor"));
|
menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Reactor", "", "&6Detected", "", "&7> Click to view Reactor"));
|
||||||
menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> {
|
menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> {
|
||||||
if(reactor != null) {
|
if (reactor != null) {
|
||||||
reactor.open(p);
|
reactor.open(p);
|
||||||
}
|
}
|
||||||
newInstance(menu, b);
|
newInstance(menu, b);
|
||||||
|
@ -48,7 +48,8 @@ public class TrashCan extends SlimefunItem implements InventoryBlock {
|
|||||||
@Override
|
@Override
|
||||||
public void tick(Block b, SlimefunItem item, Config data) {
|
public void tick(Block b, SlimefunItem item, Config data) {
|
||||||
BlockMenu menu = BlockStorage.getInventory(b);
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
for (int slot: getInputSlots()) {
|
|
||||||
|
for (int slot : getInputSlots()) {
|
||||||
menu.replaceExistingItem(slot, null);
|
menu.replaceExistingItem(slot, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.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.SlimefunItemStack;
|
||||||
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;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
@ -31,10 +32,10 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
private static final int[] border_in = {0, 1, 2, 3, 9, 12, 18, 21, 27, 30, 36, 37, 38, 39};
|
private static final int[] border_in = {0, 1, 2, 3, 9, 12, 18, 21, 27, 30, 36, 37, 38, 39};
|
||||||
private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35};
|
private static final int[] border_out = {14, 15, 16, 17, 23, 26, 32, 33, 34, 35};
|
||||||
|
|
||||||
public ElectricSmeltery(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricSmeltery(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(name, getInventoryTitle()) {
|
new BlockMenuPreset(getID(), getInventoryTitle()) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -68,7 +69,6 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Collections.sort(slots, new RecipeSorter(menu));
|
Collections.sort(slots, new RecipeSorter(menu));
|
||||||
|
|
||||||
int[] array = new int[slots.size()];
|
int[] array = new int[slots.size()];
|
||||||
|
|
||||||
for (int i = 0; i < slots.size(); i++) {
|
for (int i = 0; i < slots.size(); i++) {
|
||||||
@ -80,8 +80,9 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
if (inv.getItemInSlot(slot) != null) {
|
||||||
@ -89,6 +90,7 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
inv.replaceExistingItem(slot, null);
|
inv.replaceExistingItem(slot, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int slot : getOutputSlots()) {
|
for (int slot : getOutputSlots()) {
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
if (inv.getItemInSlot(slot) != null) {
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||||
@ -96,6 +98,7 @@ public abstract class ElectricSmeltery extends AContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
return true;
|
return true;
|
||||||
|
@ -33,7 +33,7 @@ public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
|||||||
public List<ItemStack> getDisplayRecipes() {
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
List<ItemStack> displayRecipes = new ArrayList<>(recipes.size() * 2);
|
||||||
|
|
||||||
for (MachineRecipe recipe: recipes) {
|
for (MachineRecipe recipe : recipes) {
|
||||||
displayRecipes.add(recipe.getInput()[0]);
|
displayRecipes.add(recipe.getInput()[0]);
|
||||||
displayRecipes.add(recipe.getOutput()[recipe.getOutput().length - 1]);
|
displayRecipes.add(recipe.getOutput()[recipe.getOutput().length - 1]);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
|
|
||||||
List<Integer> slots = new ArrayList<>();
|
List<Integer> slots = new ArrayList<>();
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), item, true)) {
|
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), item, true)) {
|
||||||
slots.add(slot);
|
slots.add(slot);
|
||||||
}
|
}
|
||||||
@ -72,7 +72,6 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Collections.sort(slots, new RecipeSorter(menu));
|
Collections.sort(slots, new RecipeSorter(menu));
|
||||||
|
|
||||||
int[] array = new int[slots.size()];
|
int[] array = new int[slots.size()];
|
||||||
|
|
||||||
for (int i = 0; i < slots.size(); i++) {
|
for (int i = 0; i < slots.size(); i++) {
|
||||||
@ -94,8 +93,9 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
registerRecipe(30, new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2});
|
registerRecipe(30, new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2});
|
||||||
registerRecipe(60, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2, new ItemStack(Material.NETHER_STAR)}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3});
|
registerRecipe(60, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2, new ItemStack(Material.NETHER_STAR)}, new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3});
|
||||||
registerRecipe(90, new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM}, new ItemStack[] {SlimefunItems.BOOSTED_URANIUM});
|
registerRecipe(90, new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM}, new ItemStack[] {SlimefunItems.BOOSTED_URANIUM});
|
||||||
registerRecipe(60, new ItemStack[] {SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM}, new ItemStack[]{new CustomItem(SlimefunItems.ENRICHED_NETHER_ICE, 4)});
|
registerRecipe(60, new ItemStack[] {SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM}, new ItemStack[] {new CustomItem(SlimefunItems.ENRICHED_NETHER_ICE, 4)});
|
||||||
registerRecipe(45, new ItemStack[] {SlimefunItems.ENRICHED_NETHER_ICE}, new ItemStack[]{new CustomItem(SlimefunItems.NETHER_ICE_COOLANT_CELL, 8)});
|
registerRecipe(45, new ItemStack[] {SlimefunItems.ENRICHED_NETHER_ICE}, new ItemStack[] {new CustomItem(SlimefunItems.NETHER_ICE_COOLANT_CELL, 8)});
|
||||||
|
registerRecipe(12, new ItemStack[] {SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SALT}, new ItemStack[] {SlimefunItems.MAGNESIUM_SALT});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -153,7 +153,7 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
@ -164,9 +164,9 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
MachineRecipe recipe = findRecipe(menu, found);
|
MachineRecipe recipe = findRecipe(menu, found);
|
||||||
|
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
if (!fits(b, recipe.getOutput())) return;
|
if (!menu.fits(recipe.getOutput()[0], getOutputSlots())) return;
|
||||||
|
|
||||||
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
|
for (Map.Entry<Integer, Integer> entry : found.entrySet()) {
|
||||||
menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
|
menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,9 +177,9 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private MachineRecipe findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
private MachineRecipe findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
|
||||||
for (MachineRecipe recipe: recipes) {
|
for (MachineRecipe recipe : recipes) {
|
||||||
for (ItemStack input: recipe.getInput()) {
|
for (ItemStack input : recipe.getInput()) {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), input, true)) {
|
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), input, true)) {
|
||||||
found.put(slot, input.getAmount());
|
found.put(slot, input.getAmount());
|
||||||
break;
|
break;
|
||||||
|
@ -19,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
|||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
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.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
||||||
@ -49,32 +50,36 @@ public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
|
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
progress.put(b, timeleft - 1);
|
progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.BUCKET_OF_OIL, true)) {
|
if (SlimefunManager.isItemSimilar(menu.getItemInSlot(slot), SlimefunItems.BUCKET_OF_OIL, true)) {
|
||||||
MachineRecipe r = new MachineRecipe(40, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_FUEL});
|
MachineRecipe r = new MachineRecipe(40, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_FUEL});
|
||||||
if (!fits(b, r.getOutput())) return;
|
if (!menu.fits(SlimefunItems.BUCKET_OF_FUEL, getOutputSlots())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
break;
|
break;
|
||||||
|
@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
|||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -25,6 +24,7 @@ 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.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
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;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -40,10 +40,10 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
|
|
||||||
protected int energyConsumption = 4096;
|
protected int energyConsumption = 4096;
|
||||||
|
|
||||||
public WitherAssembler(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public WitherAssembler(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(name, "&5Wither Assembler") {
|
new BlockMenuPreset(getID(), "&5Wither Assembler") {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -105,7 +105,7 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||||
@ -117,13 +117,15 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||||
if (reason == UnregisterReason.EXPLODE) return false;
|
if (reason == UnregisterReason.EXPLODE) return false;
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot: getSoulSandSlots()) {
|
for (int slot : getSoulSandSlots()) {
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
if (inv.getItemInSlot(slot) != null) {
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||||
inv.replaceExistingItem(slot, null);
|
inv.replaceExistingItem(slot, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int slot : getWitherSkullSlots()) {
|
for (int slot : getWitherSkullSlots()) {
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
if (inv.getItemInSlot(slot) != null) {
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||||
@ -216,7 +218,8 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
if (soulsand > 3 && skulls > 2) {
|
if (soulsand > 3 && skulls > 2) {
|
||||||
for (int slot : getSoulSandSlots()) {
|
for (int slot : getSoulSandSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
|
if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) {
|
||||||
final int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
|
int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
|
||||||
|
|
||||||
if (amount >= soulsand) {
|
if (amount >= soulsand) {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), soulsand));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), soulsand));
|
||||||
break;
|
break;
|
||||||
@ -230,7 +233,8 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
|
|
||||||
for (int slot : getWitherSkullSlots()) {
|
for (int slot : getWitherSkullSlots()) {
|
||||||
if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
|
if (SlimefunManager.isItemSimilar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true)) {
|
||||||
final int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
|
int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
|
||||||
|
|
||||||
if (amount >= skulls) {
|
if (amount >= skulls) {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), skulls));
|
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), skulls));
|
||||||
break;
|
break;
|
||||||
@ -243,10 +247,9 @@ public class WitherAssembler extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -energyConsumption);
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
|
double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
|
||||||
|
|
||||||
final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
|
Slimefun.runSync(() -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER));
|
||||||
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot: getOutputSlots()) {
|
for (int slot : getOutputSlots()) {
|
||||||
if (inv.getItemInSlot(slot) != null) {
|
if (inv.getItemInSlot(slot) != null) {
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
|
||||||
inv.replaceExistingItem(slot, null);
|
inv.replaceExistingItem(slot, null);
|
||||||
@ -70,10 +70,8 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void constructMenu(BlockMenuPreset preset) {
|
protected void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : border) {
|
for (int slot : border) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.PURPLE_STAINED_GLASS_PANE), " "),
|
preset.addItem(slot, new CustomItem(new ItemStack(Material.PURPLE_STAINED_GLASS_PANE), " "), (p, s, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,6 +110,7 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
int withdrawn = 0;
|
int withdrawn = 0;
|
||||||
BlockMenu menu = BlockStorage.getInventory(b);
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
for (int level = 0; level < getEXP(b); level = level + 10) {
|
for (int level = 0; level < getEXP(b); level = level + 10) {
|
||||||
if (menu.fits(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots())) {
|
if (menu.fits(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots())) {
|
||||||
withdrawn = withdrawn + 10;
|
withdrawn = withdrawn + 10;
|
||||||
@ -124,7 +123,9 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
private int getEXP(Block b) {
|
private int getEXP(Block b) {
|
||||||
Config cfg = BlockStorage.getLocationInfo(b.getLocation());
|
Config cfg = BlockStorage.getLocationInfo(b.getLocation());
|
||||||
if (cfg.contains("stored-exp")) return Integer.parseInt(cfg.getString("stored-exp"));
|
if (cfg.contains("stored-exp")) {
|
||||||
|
return Integer.parseInt(cfg.getString("stored-exp"));
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.addBlockInfo(b, "stored-exp", "0");
|
BlockStorage.addBlockInfo(b, "stored-exp", "0");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
|
public abstract class MagnesiumGenerator extends AGenerator {
|
||||||
|
|
||||||
|
public MagnesiumGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerDefaultRecipes() {
|
||||||
|
registerFuel(new MachineFuel(10, SlimefunItems.MAGNESIUM_SALT));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getProgressBar() {
|
||||||
|
return new ItemStack(Material.FLINT_AND_STEEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryTitle() {
|
||||||
|
return "&cMagnesium-powered Generator";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -55,8 +55,8 @@ public class GrindStone extends MultiBlockMachine {
|
|||||||
Dispenser disp = (Dispenser) dispBlock.getState();
|
Dispenser disp = (Dispenser) dispBlock.getState();
|
||||||
Inventory inv = disp.getInventory();
|
Inventory inv = disp.getInventory();
|
||||||
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
for (ItemStack current : inv.getContents()) {
|
||||||
for (ItemStack convert: RecipeType.getRecipeInputs(this)) {
|
for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
|
||||||
if (convert != null && SlimefunManager.isItemSimilar(current, convert, true)) {
|
if (convert != null && SlimefunManager.isItemSimilar(current, convert, true)) {
|
||||||
ItemStack output = RecipeType.getRecipeOutput(this, convert);
|
ItemStack output = RecipeType.getRecipeOutput(this, convert);
|
||||||
Inventory outputInv = findOutputInventory(output, dispBlock, inv);
|
Inventory outputInv = findOutputInventory(output, dispBlock, inv);
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -41,6 +43,11 @@ public class OreWasher extends MultiBlockMachine {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
return recipes.stream().map(items -> items[0]).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInteract(Player p, Block b) {
|
public void onInteract(Player p, Block b) {
|
||||||
Block dispBlock = b.getRelative(BlockFace.UP);
|
Block dispBlock = b.getRelative(BlockFace.UP);
|
||||||
@ -48,7 +55,7 @@ public class OreWasher extends MultiBlockMachine {
|
|||||||
Inventory inv = disp.getInventory();
|
Inventory inv = disp.getInventory();
|
||||||
ItemStack[] items = SlimefunPlugin.getUtilities().oreWasherOutputs;
|
ItemStack[] items = SlimefunPlugin.getUtilities().oreWasherOutputs;
|
||||||
|
|
||||||
for (ItemStack current: inv.getContents()) {
|
for (ItemStack current : inv.getContents()) {
|
||||||
if (current != null) {
|
if (current != null) {
|
||||||
if (SlimefunManager.isItemSimilar(current, SlimefunItems.SIFTED_ORE, true)) {
|
if (SlimefunManager.isItemSimilar(current, SlimefunItems.SIFTED_ORE, true)) {
|
||||||
ItemStack adding = items[new Random().nextInt(items.length)];
|
ItemStack adding = items[new Random().nextInt(items.length)];
|
||||||
|
@ -248,5 +248,6 @@ public final class ResearchSetup {
|
|||||||
Slimefun.registerResearch(new Research(250, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
Slimefun.registerResearch(new Research(250, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
||||||
Slimefun.registerResearch(new Research(251, "Nether Gold Pan", 8), SlimefunItems.NETHER_GOLD_PAN);
|
Slimefun.registerResearch(new Research(251, "Nether Gold Pan", 8), SlimefunItems.NETHER_GOLD_PAN);
|
||||||
Slimefun.registerResearch(new Research(252, "Electric Press", 16), SlimefunItems.ELECTRIC_PRESS, SlimefunItems.ELECTRIC_PRESS_2);
|
Slimefun.registerResearch(new Research(252, "Electric Press", 16), SlimefunItems.ELECTRIC_PRESS, SlimefunItems.ELECTRIC_PRESS_2);
|
||||||
|
Slimefun.registerResearch(new Research(253, "Power from Magnesium", 20), SlimefunItems.MAGNESIUM_SALT, SlimefunItems.MAGNESIUM_GENERATOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,6 +146,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generato
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.MagnesiumGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOMiner;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOMiner;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOScannerBlock;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOScannerBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.NetherDrill;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.NetherDrill;
|
||||||
@ -2092,6 +2093,20 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.MAGNESIUM_SALT, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
|
new ItemStack[] {SlimefunItems.MAGNESIUM_DUST, SlimefunItems.SALT, null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MagnesiumGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.MAGNESIUM_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.COMPRESSED_CARBON, new ItemStack(Material.WATER_BUCKET), SlimefunItems.COMPRESSED_CARBON, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT}) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnergyProduction() {
|
||||||
|
return 18;
|
||||||
|
}
|
||||||
|
|
||||||
|
}.registerUnrechargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoEnchanter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_ENCHANTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoEnchanter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_ENCHANTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
||||||
@ -2789,7 +2804,7 @@ public final class SlimefunSetup {
|
|||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BLISTERING_INGOT_3, RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BLISTERING_INGOT_3, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2,new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2, new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ENRICHED_NETHER_ICE, RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ENRICHED_NETHER_ICE, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
@ -3225,7 +3240,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY, "ELECTRIC_SMELTERY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricSmeltery(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_SMELTERY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3240,7 +3255,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY_2, "ELECTRIC_SMELTERY_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricSmeltery(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_SMELTERY_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3255,10 +3270,9 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new WitherAssembler(Categories.ELECTRICITY, SlimefunItems.WITHER_ASSEMBLER, "WITHER_ASSEMBLER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new WitherAssembler(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.WITHER_ASSEMBLER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, new ItemStack(Material.NETHER_STAR), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBONADO_EDGED_CAPACITOR})
|
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, new ItemStack(Material.NETHER_STAR), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBONADO_EDGED_CAPACITOR})
|
||||||
.registerChargeableBlock(true, 4096);
|
.registerChargeableBlock(true, 4096);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerPostHandler(PostSlimefunLoadingHandler handler) {
|
public static void registerPostHandler(PostSlimefunLoadingHandler handler) {
|
||||||
|
Loading…
Reference in New Issue
Block a user