Skip to content

Commit

Permalink
changed machine event to use IGuiHandler instead of TileEntityMachine…
Browse files Browse the repository at this point in the history
…, and started work on removing Content event
  • Loading branch information
Trinsdar committed Oct 7, 2023
1 parent d266aee commit 1d33a4d
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import muramasa.antimatter.capability.machine.MachineEnergyHandler;
import muramasa.antimatter.cover.CoverOutput;
import muramasa.antimatter.cover.ICover;
import muramasa.antimatter.gui.SlotType;
import muramasa.antimatter.machine.event.ContentEvent;
import muramasa.antimatter.machine.event.IMachineEvent;
import muramasa.antimatter.machine.event.MachineEvent;
Expand Down Expand Up @@ -91,12 +92,11 @@ public void onMachineEvent(IMachineEvent event, Object... data) {
if (isClientSide())
return;
super.onMachineEvent(event, data);
if (event instanceof ContentEvent) {
if (event instanceof SlotType<?>) {
componentHandler.map(ComponentHandler::getControllers).orElse(Collections.emptyList())
.forEach(controller -> {
switch ((ContentEvent) event) {
case ITEM_INPUT_CHANGED, ITEM_OUTPUT_CHANGED, ITEM_CELL_CHANGED, FLUID_INPUT_CHANGED, FLUID_OUTPUT_CHANGED ->
controller.onMachineEvent(event, data);
if (event == SlotType.IT_IN || event == SlotType.IT_OUT || event == SlotType.CELL_IN || event == SlotType.CELL_OUT || event == SlotType.FL_IN || event == SlotType.FL_OUT) {
controller.onMachineEvent(event, data);
}
});
} else if (event instanceof MachineEvent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ public int getSlotLimit(int slot) {
public void onContentsChanged(int slot) {
if (tile instanceof BlockEntityMachine<?> machine){
machine.setChanged();
machine.onMachineEvent(contentEvent, slot);
machine.onMachineEvent(type, slot);
} else if (tile instanceof ICover cover){
cover.source().getTile().setChanged();
cover.onMachineEvent(cover, type, slot);
}

}

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import muramasa.antimatter.capability.Dispatch;
import muramasa.antimatter.capability.EnergyHandler;
import muramasa.antimatter.capability.IMachineHandler;
import muramasa.antimatter.gui.SlotType;
import muramasa.antimatter.machine.event.ContentEvent;
import muramasa.antimatter.machine.event.IMachineEvent;
import muramasa.antimatter.machine.event.MachineEvent;
Expand Down Expand Up @@ -261,7 +262,7 @@ public boolean canChargeItem() {

@Override
public void onMachineEvent(IMachineEvent event, Object... data) {
if (event == ContentEvent.ENERGY_SLOT_CHANGED) {
if (event == SlotType.ENERGY) {
tile.itemHandler.ifPresent(h -> {
cachedItems = h.getChargeableItems();
offsetInsert = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,18 +128,14 @@ public FluidContainer copy() {
@Override
public void onMachineEvent(IMachineEvent event, Object... data) {
super.onMachineEvent(event, data);
if (event instanceof ContentEvent) {
switch ((ContentEvent) event) {
case ITEM_CELL_CHANGED:
if (data[0] instanceof Integer) tryFillCell((Integer) data[0], -1);
break;
case FLUID_INPUT_CHANGED:
case FLUID_OUTPUT_CHANGED:
if (data[0] instanceof Integer) tryFillCell((Integer) data[0], -1);
if (this.tile.getMachineType().renderContainerLiquids()) {
tile.sidedSync(true);
}
break;
if (event instanceof SlotType<?>) {
if (event == SlotType.CELL_IN || event == SlotType.CELL_OUT) {
if (data[0] instanceof Integer) tryFillCell((Integer) data[0], -1);
} else if (event == SlotType.FL_IN || event == SlotType.FL_OUT) {
if (data[0] instanceof Integer) tryFillCell((Integer) data[0], -1);
if (this.tile.getMachineType().renderContainerLiquids()) {
tile.sidedSync(true);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import muramasa.antimatter.capability.Dispatch;
import muramasa.antimatter.capability.IMachineHandler;
import muramasa.antimatter.capability.rf.RFHandler;
import muramasa.antimatter.gui.SlotType;
import muramasa.antimatter.machine.event.ContentEvent;
import muramasa.antimatter.machine.event.IMachineEvent;
import muramasa.antimatter.machine.event.MachineEvent;
Expand Down Expand Up @@ -132,7 +133,7 @@ public boolean canChargeItem() {

@Override
public void onMachineEvent(IMachineEvent event, Object... data) {
if (event == ContentEvent.ENERGY_SLOT_CHANGED) {
if (event == SlotType.ENERGY) {
tile.itemHandler.ifPresent(h -> {
cachedItems = h.getRFChargeableItems();
offsetInsert = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import java.util.Optional;

import static muramasa.antimatter.machine.MachineState.*;
import static muramasa.antimatter.machine.event.ContentEvent.ENERGY_SLOT_CHANGED;

//TODO: This needs some look into, a bit of spaghetti code sadly.
public class MachineRecipeHandler<T extends BlockEntityMachine<T>> implements IMachineHandler, Dispatch.Sided<MachineRecipeHandler<?>> {
Expand Down Expand Up @@ -550,7 +549,7 @@ public void onRemove() {
@Override
public void onMachineEvent(IMachineEvent event, Object... data) {
if (tickingRecipe) return;
if (event instanceof ContentEvent) {
if (event instanceof SlotType<?>) {
if (tile.getMachineState() == ACTIVE)
return;
if (tile.getMachineState() == POWER_LOSS) {
Expand All @@ -559,12 +558,12 @@ public void onMachineEvent(IMachineEvent event, Object... data) {
if (activeRecipe != null && !consumeResourceForRecipe(true)) {
return;
}
if (event == ENERGY_SLOT_CHANGED) {
if (event == SlotType.ENERGY) {
if (tile.itemHandler.map(t -> t.inventories.get(SlotType.ENERGY).getItem((int) data[0]).isEmpty()).orElse(true)) {
return;
}
}
if ((event == ContentEvent.ITEM_OUTPUT_CHANGED || event == ContentEvent.FLUID_OUTPUT_CHANGED) && tile.getMachineState() == OUTPUT_FULL && tickTimer == 0 && canOutput()) {
if ((event == SlotType.IT_OUT || event == SlotType.FL_OUT) && tile.getMachineState() == OUTPUT_FULL && tickTimer == 0 && canOutput()) {
tickingRecipe = true;
tile.setMachineState(recipeFinish());
tickingRecipe = false;
Expand All @@ -575,7 +574,7 @@ public void onMachineEvent(IMachineEvent event, Object... data) {
tile.setMachineState(NO_POWER);
} else if (tile.getMachineState() != POWER_LOSS && tickTimer == 0) {
checkRecipe();
} else if (event == ContentEvent.ITEM_INPUT_CHANGED || event == ContentEvent.FLUID_INPUT_CHANGED) {
} else if (event == SlotType.IT_IN || event == SlotType.FL_IN) {
checkRecipe();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import muramasa.antimatter.blockentity.BlockEntityFakeBlock;
import muramasa.antimatter.blockentity.BlockEntityMachine;
import muramasa.antimatter.capability.ICoverHandler;
import muramasa.antimatter.capability.IGuiHandler;
import muramasa.antimatter.data.AntimatterDefaultTools;
import muramasa.antimatter.gui.event.GuiEvents;
import muramasa.antimatter.gui.event.IGuiEvent;
Expand Down Expand Up @@ -161,7 +162,7 @@ public void onGuiEvent(IGuiEvent event, Player player) {
}

@Override
public void onMachineEvent(BlockEntityMachine<?> tile, IMachineEvent event, int... data) {
public void onMachineEvent(IGuiHandler tile, IMachineEvent event, int... data) {
// TODO: Tesseract stuff?
if (event == MachineEvent.ITEMS_OUTPUTTED && ejectItems) {
processItemOutput();
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/java/muramasa/antimatter/cover/ICover.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ default String handlerDomain() {
return getDomain();
}

default void onMachineEvent(BlockEntityMachine<?> tile, IMachineEvent event, int... data) {
default void onMachineEvent(IGuiHandler tile, IMachineEvent event, int... data) {
// NOOP
}

Expand Down
3 changes: 2 additions & 1 deletion common/src/main/java/muramasa/antimatter/gui/SlotType.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import muramasa.antimatter.capability.machine.MachineFluidHandler;
import muramasa.antimatter.gui.slot.*;
import muramasa.antimatter.machine.event.ContentEvent;
import muramasa.antimatter.machine.event.IMachineEvent;
import muramasa.antimatter.registration.IAntimatterObject;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.Slot;
Expand All @@ -21,7 +22,7 @@
import java.util.Map;
import java.util.function.BiPredicate;

public class SlotType<T extends Slot> implements IAntimatterObject {
public class SlotType<T extends Slot> implements IAntimatterObject, IMachineEvent {

public static SlotType<SlotInput> IT_IN = new SlotType<>("item_in", (type, gui, inv, i, d) -> new SlotInput(type, gui, inv.getOrDefault(type, new EmptyContainer()), i, d.getX(), d.getY()), new ItIn(), ContentEvent.ITEM_INPUT_CHANGED, true, false);
public static SlotType<SlotOutput> IT_OUT = new SlotType<>("item_out", (type, gui, inv, i, d) -> new SlotOutput(type, gui, inv.getOrDefault(type, new EmptyContainer()), i, d.getX(), d.getY()), (t, i) -> false, ContentEvent.ITEM_OUTPUT_CHANGED, false, true);
Expand Down

0 comments on commit 1d33a4d

Please sign in to comment.