Search in sources :

Example 1 with Reactor

use of io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor in project Slimefun4 by Slimefun.

the class Reactor method hasEnoughCoolant.

/**
 * This method cools the given {@link Reactor}.
 *
 * @param reactor
 *            The {@link Location} of this {@link Reactor}
 * @param menu
 *            The {@link Inventory} of this {@link Reactor}
 * @param accessPort
 *            The {@link ReactorAccessPort}, if available
 * @param operation
 *            The {@link FuelOperation} of this {@link Reactor}
 *
 * @return Whether the {@link Reactor} was successfully cooled, if not it should explode
 */
private boolean hasEnoughCoolant(@Nonnull Location reactor, @Nonnull BlockMenu menu, @Nullable BlockMenu accessPort, @Nonnull FuelOperation operation) {
    boolean requiresCoolant = operation.getProgress() % COOLANT_DURATION == 0;
    if (requiresCoolant) {
        ItemStack coolant = ItemStackWrapper.wrap(getCoolant());
        if (accessPort != null) {
            for (int slot : getCoolantSlots()) {
                if (SlimefunUtils.isItemSimilar(accessPort.getItemInSlot(slot), coolant, true, false)) {
                    ItemStack remainingItem = menu.pushItem(accessPort.getItemInSlot(slot), getCoolantSlots());
                    accessPort.replaceExistingItem(slot, remainingItem);
                }
            }
        }
        for (int slot : getCoolantSlots()) {
            if (SlimefunUtils.isItemSimilar(menu.getItemInSlot(slot), coolant, true, false)) {
                menu.consumeItem(slot);
                updateHologram(reactor.getBlock(), "&b\u2744 &7100%");
                return true;
            }
        }
        return false;
    } else {
        updateHologram(reactor.getBlock(), "&b\u2744 &7" + getPercentage(operation.getRemainingTicks(), operation.getTotalTicks()) + "%");
    }
    return true;
}
Also used : ItemStack(org.bukkit.inventory.ItemStack) SlimefunItemStack(io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack) CustomItemStack(io.github.bakedlibs.dough.items.CustomItemStack)

Example 2 with Reactor

use of io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor in project GlobalWarming by poma123.

the class PollutionListener method onMachineOperationComplete.

@EventHandler
public void onMachineOperationComplete(AsyncMachineOperationFinishEvent e) {
    World world = e.getPosition().getWorld();
    if (!GlobalWarmingPlugin.getRegistry().isWorldEnabled(world.getName())) {
        return;
    }
    if (e.getProcessor() == null) {
        return;
    }
    String id = null;
    ItemStack[] inputs = new ItemStack[] {};
    if ((e.getProcessor().getOwner() instanceof Reactor || e.getProcessor().getOwner() instanceof AGenerator) && e.getOperation() instanceof FuelOperation) {
        id = e.getProcessor().getOwner().getId();
        FuelOperation operation = (FuelOperation) e.getOperation();
        inputs = new ItemStack[] { operation.getIngredient() };
    } else if (e.getProcessor().getOwner() instanceof AContainer && e.getOperation() instanceof CraftingOperation) {
        id = e.getProcessor().getOwner().getId();
        CraftingOperation operation = (CraftingOperation) e.getOperation();
        inputs = operation.getIngredients();
    }
    if (id != null) {
        risePollutionTry(world, id, inputs);
        descendPollutionTry(world, id);
    }
}
Also used : AGenerator(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator) CraftingOperation(io.github.thebusybiscuit.slimefun4.implementation.operations.CraftingOperation) FuelOperation(io.github.thebusybiscuit.slimefun4.implementation.operations.FuelOperation) AContainer(me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer) World(org.bukkit.World) ItemStack(org.bukkit.inventory.ItemStack) Reactor(io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor) EventHandler(org.bukkit.event.EventHandler)

Example 3 with Reactor

use of io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor in project Slimefun4 by Slimefun.

the class ReactorAccessPort method getReactor.

@Nullable
private BlockMenu getReactor(@Nonnull Location l) {
    Location location = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ());
    SlimefunItem item = BlockStorage.check(location.getBlock());
    if (item instanceof Reactor) {
        return BlockStorage.getInventory(location);
    }
    return null;
}
Also used : SlimefunItem(io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem) Reactor(io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor) Location(org.bukkit.Location) Nullable(javax.annotation.Nullable)

Aggregations

Reactor (io.github.thebusybiscuit.slimefun4.implementation.items.electric.reactors.Reactor)2 ItemStack (org.bukkit.inventory.ItemStack)2 CustomItemStack (io.github.bakedlibs.dough.items.CustomItemStack)1 SlimefunItem (io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem)1 SlimefunItemStack (io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack)1 CraftingOperation (io.github.thebusybiscuit.slimefun4.implementation.operations.CraftingOperation)1 FuelOperation (io.github.thebusybiscuit.slimefun4.implementation.operations.FuelOperation)1 Nullable (javax.annotation.Nullable)1 AContainer (me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer)1 AGenerator (me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator)1 Location (org.bukkit.Location)1 World (org.bukkit.World)1 EventHandler (org.bukkit.event.EventHandler)1