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;
}
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);
}
}
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;
}
Aggregations