Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
6 changes: 5 additions & 1 deletion src/main/java/io/github/pylonmc/pylon/Pylon.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.github.pylonmc.pylon.command.PylonCommand;
import io.github.pylonmc.pylon.content.building.Immobilizer;
import io.github.pylonmc.pylon.content.machines.fluid.Sprinkler;
import io.github.pylonmc.pylon.content.machines.hydraulics.HydraulicPurifier;
import io.github.pylonmc.pylon.content.machines.simple.Grindstone;
import io.github.pylonmc.pylon.content.machines.smelting.Bloomery;
import io.github.pylonmc.pylon.content.talismans.*;
Expand Down Expand Up @@ -39,6 +40,9 @@ public void onEnable() {

metrics = new Metrics(this, BSTATS_ID);

PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new HydraulicPurifier.PurificationRecipe.Registrar(), this);

registerWithRebar();

saveDefaultConfig();
Expand All @@ -53,7 +57,7 @@ public void onEnable() {
PylonFluids.initialize();
PylonRecipes.initialize();

PluginManager pm = Bukkit.getPluginManager();


pm.registerEvents(new Sprinkler.SprinklerPlaceListener(), this);
pm.registerEvents(new Immobilizer.FreezeListener(), 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.PurificationRecipe.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,80 @@
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.event.RebarRegisterEvent;
import io.github.pylonmc.rebar.guide.button.FluidButton;
import io.github.pylonmc.rebar.guide.button.ItemButton;
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.event.EventHandler;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
import xyz.xenondevs.invui.gui.Gui;

import java.util.List;

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

public interface HydraulicPurifier extends RebarTickingBlock {
double getPurificationSpeed();
double getPurificationEfficiency();

record PurificationRecipe(
NamespacedKey key
) implements RebarRecipe {

public static final RecipeType<PurificationRecipe> RECIPE_TYPE = new RecipeType<>(pylonKey("hydraulic_purification"));

@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', ItemButton.from(RebarRegistry.ITEMS.get(key).getItemStack()))
.addIngredient('h', new FluidButton(PylonFluids.HYDRAULIC_FLUID))
.build();
}

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

public static class Registrar implements Listener {
@EventHandler
public void onRegister(RebarRegisterEvent registerEvent) {
if (!registerEvent.getRegistry().equals(RebarRegistry.BLOCKS)) return;
var keyed = registerEvent.getValue();
if (!(keyed instanceof RebarBlockSchema schema)) return;

var clazz = schema.getBlockClass();
if (!HydraulicPurifier.class.isAssignableFrom(clazz)) return;
RECIPE_TYPE.addRecipe(new PurificationRecipe(schema.getKey()));
}
}
}
}
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