Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/main/java/io/github/pylonmc/pylon/Pylon.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,9 @@ public void onEnable() {
PylonFluids.initialize();
PylonRecipes.initialize();

PluginManager pm = Bukkit.getPluginManager();


PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new Sprinkler.SprinklerPlaceListener(), this);
pm.registerEvents(new Immobilizer.FreezeListener(), this);
pm.registerEvents(new Rune.RuneListener(), this);
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/io/github/pylonmc/pylon/PylonRecipes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.pylonmc.pylon;

import io.github.pylonmc.pylon.content.machines.hydraulics.HydraulicPurifier;
import io.github.pylonmc.pylon.recipes.*;


Expand Down Expand Up @@ -28,5 +29,6 @@ public static void initialize() {
PitKilnRecipe.RECIPE_TYPE.register();
StrainingRecipe.RECIPE_TYPE.register();
TableSawRecipe.RECIPE_TYPE.register();
HydraulicPurifier.RECIPE_TYPE.register();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class CoalFiredPurificationTower extends RebarBlock implements
RebarGuiBlock,
RebarVirtualInventoryBlock,
RebarLogisticBlock,
RebarTickingBlock {
HydraulicPurifier {

public final double purificationSpeed = getSettings().getOrThrow("purification-speed", ConfigAdapter.INTEGER);
public final double purificationEfficiency = getSettings().getOrThrow("purification-efficiency", ConfigAdapter.DOUBLE);
Expand Down Expand Up @@ -256,4 +256,14 @@ public void onBreak(@NotNull List<@NotNull ItemStack> drops, @NotNull BlockBreak
RebarFluidBufferBlock.super.onBreak(drops, context);
RebarVirtualInventoryBlock.super.onBreak(drops, context);
}

@Override
public double getPurificationSpeed() {
return purificationSpeed;
}

@Override
public double getPurificationEfficiency() {
return purificationEfficiency;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package io.github.pylonmc.pylon.content.machines.hydraulics;

import io.github.pylonmc.pylon.PylonFluids;
import io.github.pylonmc.rebar.block.RebarBlockSchema;
import io.github.pylonmc.rebar.block.base.RebarTickingBlock;
import io.github.pylonmc.rebar.guide.button.FluidButton;
import io.github.pylonmc.rebar.guide.button.ItemButton;
import io.github.pylonmc.rebar.item.RebarItemSchema;
import io.github.pylonmc.rebar.recipe.FluidOrItem;
import io.github.pylonmc.rebar.recipe.RebarRecipe;
import io.github.pylonmc.rebar.recipe.RecipeInput;
import io.github.pylonmc.rebar.recipe.RecipeType;
import io.github.pylonmc.rebar.registry.RebarRegistry;
import io.github.pylonmc.rebar.util.gui.GuiItems;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import xyz.xenondevs.invui.gui.Gui;

import java.util.ArrayList;
import java.util.List;

import static io.github.pylonmc.pylon.util.PylonUtils.pylonKey;

public interface HydraulicPurifier extends RebarTickingBlock {
NamespacedKey HYDRAULIC_PURIFICATION_KEY = pylonKey("hydraulic_purification");

RecipeType<RebarRecipe> RECIPE_TYPE = new RecipeType<>(HYDRAULIC_PURIFICATION_KEY) {{
addRecipe(
new RebarRecipe() {
@Override
public @NotNull List<@NotNull RecipeInput> getInputs() {
return List.of(RecipeInput.of(PylonFluids.DIRTY_HYDRAULIC_FLUID, 1));
}

@Override
public @NotNull List<@NotNull FluidOrItem> getResults() {
return List.of(FluidOrItem.of(PylonFluids.HYDRAULIC_FLUID, 1));
}

@Override
public @NotNull Gui display() {
return Gui.builder()
.setStructure(
"# # # # # # # # #",
"# # # # # # # # #",
"# d # # x # # h #",
"# # # # # # # # #",
"# # # # # # # # #"
)
.addIngredient('#', GuiItems.backgroundBlack())
.addIngredient('d', new FluidButton(PylonFluids.DIRTY_HYDRAULIC_FLUID))
.addIngredient('x', new ItemButton(getPurifiers()))
.addIngredient('h', new FluidButton(PylonFluids.HYDRAULIC_FLUID))
.build();
}

@Override
public @NotNull NamespacedKey getKey() {
return HYDRAULIC_PURIFICATION_KEY;
}
}
);
}};

double getPurificationSpeed();
double getPurificationEfficiency();

static List<ItemStack> getPurifiers() {
List<ItemStack> purifiers = new ArrayList<>();
for (RebarBlockSchema blockSchema : RebarRegistry.BLOCKS.getValues()) {
var clazz = blockSchema.getBlockClass();
if (!HydraulicPurifier.class.isAssignableFrom(clazz)) continue;

RebarItemSchema itemSchema = RebarRegistry.ITEMS.get(blockSchema.getKey());
if (itemSchema == null) continue; // should never happen

purifiers.add(itemSchema.getItemStack());
}

return purifiers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import io.github.pylonmc.rebar.block.base.RebarDirectionalBlock;
import io.github.pylonmc.rebar.block.base.RebarFluidBufferBlock;
import io.github.pylonmc.rebar.block.base.RebarSimpleMultiblock;
import io.github.pylonmc.rebar.block.base.RebarTickingBlock;
import io.github.pylonmc.rebar.block.context.BlockCreateContext;
import io.github.pylonmc.rebar.config.adapter.ConfigAdapter;
import io.github.pylonmc.rebar.fluid.FluidPointType;
Expand All @@ -32,9 +31,9 @@

public class SolarPurificationTower extends RebarBlock implements
RebarSimpleMultiblock,
RebarTickingBlock,
RebarDirectionalBlock,
RebarFluidBufferBlock {
RebarFluidBufferBlock,
HydraulicPurifier {

public final double purificationSpeed = getSettings().getOrThrow("purification-speed", ConfigAdapter.DOUBLE);
public final double purificationEfficiency = getSettings().getOrThrow("purification-efficiency", ConfigAdapter.DOUBLE);
Expand Down Expand Up @@ -124,6 +123,16 @@ public void tick() {
addFluid(PylonFluids.HYDRAULIC_FLUID, toPurify * purificationEfficiency);
}

@Override
public double getPurificationSpeed() {
return purificationSpeed;
}

@Override
public double getPurificationEfficiency() {
return purificationEfficiency;
}

@Override
public @Nullable WailaDisplay getWaila(@NotNull Player player) {
return new WailaDisplay(getDefaultWailaTranslationKey().arguments(
Expand Down
Loading