Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable transfernodes to transfer fluids #2021

Open
wants to merge 1 commit into
base: 1.18.2
Choose a base branch
from
Open
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
7 changes: 6 additions & 1 deletion src/generated/resources/assets/bloodmagic/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,9 @@
"item.bloodmagic.experiencebook": "Tome of Peritia",
"item.bloodmagic.explosivepowder": "Explosive Powder",
"item.bloodmagic.firescribetool": "Inscription Tool: Fire",
"item.bloodmagic.fluidrouterfilterexact": "Standard Fluid Filter",
"item.bloodmagic.fluidrouterfiltermod": "Mod Fluid Filter",
"item.bloodmagic.collectionfilter": "Collection Filter",
"item.bloodmagic.fortune_anointment": "Fortuna Extract",
"item.bloodmagic.fortune_anointment_2": "Fortuna Extract II",
"item.bloodmagic.fortune_anointment_3": "Fortuna Extract III",
Expand Down Expand Up @@ -651,6 +654,7 @@
"tooltip.bloodmagic.basicnodeupgrade": "Increases a Master Routing Node's speed.",
"tooltip.bloodmagic.blockeddoor": "The lock breaks and fizzles out of existence!",
"tooltip.bloodmagic.blood_provider.slate.desc": "A simple ampoule containing 500LP.",
"tooltip.bloodmagic.collectionfilter.desc": "Allows to filter different types",
"tooltip.bloodmagic.compositefilter.desc": "Filters based off of contained filters.",
"tooltip.bloodmagic.config.disabled": "Currently disabled in the Config.",
"tooltip.bloodmagic.contained_filters": "Contained Filters:",
Expand Down Expand Up @@ -694,7 +698,8 @@
"tooltip.bloodmagic.filter.enchant_combination": "%s: %s",
"tooltip.bloodmagic.filter.from_mod": "From: %s",
"tooltip.bloodmagic.filter.whitelist": "Allow:",
"tooltip.bloodmagic.ghost.amount": "Ghost item amount: %d.",
"tooltip.bloodmagic.fluidfilter.desc": "Will make sure the fluids match.",
"tooltip.bloodmagic.ghost.amount": "Ghost amount: %d.",
"tooltip.bloodmagic.ghost.everything": "Everything",
"tooltip.bloodmagic.hellforgedparts": "These parts are currently beyond your crafting capabilities...",
"tooltip.bloodmagic.holdShiftForInfo": "Press shift for extra info.",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "bloodmagic:item/fluidrouterfilterexact"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"type": "bloodmagic:alchemytable",
"input": [
{
"item": "bloodmagic:componentframeparts"
},
{
"item": "bloodmagic:infusedslate"
},
{
"tag": "forge:dusts/redstone"
},
{
"tag": "forge:gems/lapis"
}
],
"output": {
"item": "bloodmagic:collectionfilter"
},
"syphon": 500,
"ticks": 100,
"upgradeLevel": 3
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"type": "bloodmagic:alchemytable",
"input": [
{
"item": "bloodmagic:componentframeparts"
},
{
"item": "minecraft:bucket"
},
{
"tag": "forge:dusts/redstone"
},
{
"tag": "forge:dyes/yellow"
}
],
"output": {
"item": "bloodmagic:fluidrouterfiltermod"
},
"syphon": 500,
"ticks": 100,
"upgradeLevel": 3
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"type": "bloodmagic:alchemytable",
"input": [
{
"item": "bloodmagic:componentframeparts"
},
{
"item": "minecraft:bucket"
},
{
"tag": "forge:dusts/redstone"
},
{
"tag": "forge:dyes/red"
}
],
"output": {
"item": "bloodmagic:fluidrouterfilterexact"
},
"syphon": 500,
"ticks": 100,
"upgradeLevel": 3
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.minecraft.client.gui.components.Button;
import wayoftime.bloodmagic.common.container.item.ContainerFilter;
import wayoftime.bloodmagic.common.item.routing.IItemFilterProvider;
import wayoftime.bloodmagic.common.item.routing.IRoutingFilterProvider;
import wayoftime.bloodmagic.network.BloodMagicPacketHandler;
import wayoftime.bloodmagic.network.FilterButtonPacket;

Expand All @@ -23,13 +23,13 @@ public void onPress(Button button)
if (button.active)
{
int currentGhostSlot = container.lastGhostSlotClicked;
if (container.filterStack.getItem() instanceof IItemFilterProvider)
if (container.filterStack.getItem() instanceof IRoutingFilterProvider)
{
int currentButtonState = ((IItemFilterProvider) container.filterStack.getItem()).getCurrentButtonState(container.filterStack, buttonKey, currentGhostSlot);
int currentButtonState = ((IRoutingFilterProvider) container.filterStack.getItem()).getCurrentButtonState(container.filterStack, buttonKey, currentGhostSlot);

BloodMagicPacketHandler.INSTANCE.sendToServer(new FilterButtonPacket(container.player.getInventory().selected, currentGhostSlot, buttonKey, currentButtonState));

((IItemFilterProvider) container.filterStack.getItem()).receiveButtonPress(container.filterStack, buttonKey, currentGhostSlot, currentButtonState);
((IRoutingFilterProvider) container.filterStack.getItem()).receiveButtonPress(container.filterStack, buttonKey, currentGhostSlot, currentButtonState);
}
}
}
Expand Down
67 changes: 56 additions & 11 deletions src/main/java/wayoftime/bloodmagic/client/screens/ScreenFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import org.apache.commons.lang3.tuple.Pair;

import com.google.common.collect.Lists;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;

Expand All @@ -23,19 +24,27 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil;
import wayoftime.bloodmagic.BloodMagic;
import wayoftime.bloodmagic.common.container.item.ContainerFilter;
import wayoftime.bloodmagic.common.item.routing.IItemFilterProvider;
import wayoftime.bloodmagic.common.item.routing.IRoutingFilterProvider;
import wayoftime.bloodmagic.common.item.routing.ItemCollectionFilter;
import wayoftime.bloodmagic.common.item.routing.ItemFluidRouterFilter;
import wayoftime.bloodmagic.common.item.routing.ItemItemRouterFilter;
import wayoftime.bloodmagic.network.RouterFilterPacket;
import wayoftime.bloodmagic.util.GhostItemHelper;

public class ScreenFilter extends ScreenBase<ContainerFilter>
{
private static final ResourceLocation background = BloodMagic.rl("textures/gui/routingfilter.png");
private static ResourceLocation background = BloodMagic.rl("textures/gui/routingfilter.png");
public Container filterInventory;
private Player player;
private int left, top;

// 0 mixed, 1 item, 2 fluid
private int filterType = 0;

private EditBox textBox;

private int numberOfAddedButtons = 0;
Expand Down Expand Up @@ -71,10 +80,18 @@ public void init()
buttonKeyList.clear();

ItemStack filterStack = this.container.filterStack;
this.filterType = filterStack.getItem() instanceof ItemFluidRouterFilter ? 2 : filterStack.getItem() instanceof ItemItemRouterFilter ? 1 : 0;

if (filterStack.getItem() instanceof IItemFilterProvider)
if (filterStack.getItem() instanceof ItemCollectionFilter)
{
IItemFilterProvider provider = (IItemFilterProvider) filterStack.getItem();
this.textBox.setVisible(false);
this.background = BloodMagic.rl("textures/gui/routingfilter_notext.png");
return;
}

if (filterStack.getItem() instanceof IRoutingFilterProvider)
{
IRoutingFilterProvider provider = (IRoutingFilterProvider) filterStack.getItem();
List<Pair<String, Button.OnPress>> buttonActionList = provider.getButtonAction(this.container);

for (Pair<String, Button.OnPress> pair : buttonActionList)
Expand Down Expand Up @@ -206,9 +223,9 @@ private void setValueOfGhostItemInSlot(int ghostItemSlot, int amount)
{
GhostItemHelper.setItemGhostAmount(ghostStack, amount);
GhostItemHelper.setItemGhostAmount(container.inventoryFilter.getItem(ghostItemSlot), amount);
if (container.filterStack.getItem() instanceof IItemFilterProvider)
if (container.filterStack.getItem() instanceof IRoutingFilterProvider)
{
((IItemFilterProvider) container.filterStack.getItem()).setGhostItemAmount(container.filterStack, ghostItemSlot, amount);
((IRoutingFilterProvider) container.filterStack.getItem()).setGhostItemAmount(container.filterStack, ghostItemSlot, amount);

}
}
Expand Down Expand Up @@ -274,13 +291,13 @@ protected void renderLabels(PoseStack stack, int mouseX, int mouseY)
this.font.draw(stack, new TranslatableComponent("container.inventory"), 8, 93, 4210752);
this.font.draw(stack, container.filterStack.getHoverName(), 8, 4, 4210752);

if (container.filterStack.getItem() instanceof IItemFilterProvider)
if (container.filterStack.getItem() instanceof IRoutingFilterProvider)
{
for (int i = 0; i < numberOfAddedButtons; i++)
{
int currentButtonState = ((IItemFilterProvider) container.filterStack.getItem()).getCurrentButtonState(container.filterStack, buttonKeyList.get(i), container.lastGhostSlotClicked);
int currentButtonState = ((IRoutingFilterProvider) container.filterStack.getItem()).getCurrentButtonState(container.filterStack, buttonKeyList.get(i), container.lastGhostSlotClicked);
Pair<Integer, Integer> buttonLocation = getButtonLocation(i);
Pair<Integer, Integer> textureLocation = ((IItemFilterProvider) container.filterStack.getItem()).getTexturePositionForState(container.filterStack, buttonKeyList.get(i), currentButtonState);
Pair<Integer, Integer> textureLocation = ((IRoutingFilterProvider) container.filterStack.getItem()).getTexturePositionForState(container.filterStack, buttonKeyList.get(i), currentButtonState);

int w = 20;
int h = 20;
Expand Down Expand Up @@ -333,6 +350,30 @@ protected void renderBg(PoseStack stack, float partialTicks, int mouseX, int mou

}

@Override
public List<Component> getTooltipFromItem(ItemStack itemStack)
{
List<Component> list = super.getTooltipFromItem(itemStack);
if (filterType == 1)
{
return list;
}

Optional<FluidStack> opt = FluidUtil.getFluidContained(itemStack);
if (opt.isPresent())
{
List<Component> newlist = Lists.newArrayList();
newlist.add(opt.get().getDisplayName());
if (list.size() > 1)
{
newlist.add(list.get(1));
}
list = newlist;
}

return list;
}

@Override
public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks)
{
Expand All @@ -343,7 +384,7 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT

List<Component> tooltip = new ArrayList<>();

if (container.filterStack.getItem() instanceof IItemFilterProvider)
if (container.filterStack.getItem() instanceof IRoutingFilterProvider)
{
for (int i = 0; i < numberOfAddedButtons; i++)
{
Expand All @@ -356,7 +397,7 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT

if (mouseX >= x && mouseX < x + w && mouseY >= y && mouseY < y + h)
{
List<Component> components = ((IItemFilterProvider) container.filterStack.getItem()).getTextForHoverItem(container.filterStack, buttonKeyList.get(i), container.lastGhostSlotClicked);
List<Component> components = ((IRoutingFilterProvider) container.filterStack.getItem()).getTextForHoverItem(container.filterStack, buttonKeyList.get(i), container.lastGhostSlotClicked);
if (components != null && !components.isEmpty())
tooltip.addAll(components);
}
Expand All @@ -368,4 +409,8 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT
// GuiUtils.drawHoveringText(matrixStack, tooltip, mouseX, mouseY, width, height, -1, font);
}

public int getFilterType()
{
return this.filterType;
}
}
Loading