Skip to content

Commit 8ff160c

Browse files
committed
fabric fluid salepoint implementation
1 parent 4480adc commit 8ff160c

File tree

47 files changed

+2333
-24
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2333
-24
lines changed

common/src/generated/resources/.cache/630af4bded938901e0e1fd57c58a2ac245292828

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.20.1 2024-08-04T19:37:15.035886867 Create: Numismatics/Numismatics' Advancements
1+
// 1.20.1 2024-08-05T17:31:05.743168034 Create: Numismatics/Numismatics' Advancements
22
4ab84595dc44460d6d89ff3608940dd8694b93d6 data/numismatics/advancements/is_this_legal.json
33
645c92e6e449889ed4cf617432fd6fa87ffe355b data/numismatics/advancements/questionable_investment.json
44
8f32fb49ef81058e2e660fac983dbef2f554db38 data/numismatics/advancements/root.json

common/src/generated/resources/.cache/6ba62358bf8e130d42215f5f9edbedd611809677

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.20.1 2024-08-04T19:37:15.034619492 Create: Numismatics/Numismatics Standard Recipes
1+
// 1.20.1 2024-08-05T17:31:05.737487381 Create: Numismatics/Numismatics Standard Recipes
22
0e1680b878cfa51c04809504b3542cb6312027a1 data/numismatics/recipes/crafting/gray_id_card.json
33
61954216f844eecdbee266da7e517a983993d2f8 data/numismatics/advancements/recipes/misc/crafting/brown_card.json
44
2c732f9c3bc02a29a4d86a0552f4dbbae986a34a data/numismatics/recipes/crafting/blue_authorized_card.json
@@ -26,8 +26,8 @@ ce32a3a7c2a5564e84b30bb1b71007ca4adc985d data/numismatics/recipes/crafting/lime_
2626
501f27ee03faeb675a05b63b0c8058f1473f02d5 data/numismatics/advancements/recipes/misc/crafting/purple_id_card.json
2727
8d863132d01d516db98d228e9038425923b7354d data/numismatics/recipes/crafting/black_card.json
2828
78af0a7f17e04133eae7172df3255aaa34034537 data/numismatics/advancements/recipes/misc/crafting/red_id_card.json
29-
86ccf10cd1549f633f99674b002c543bd46aefd0 data/numismatics/recipes/crafting/yellow_card.json
3029
e16d9a5134c226db94bb389c44e55a8b393ca6c4 data/numismatics/recipes/crafting/brass_depositor.json
30+
86ccf10cd1549f633f99674b002c543bd46aefd0 data/numismatics/recipes/crafting/yellow_card.json
3131
1d0c5ff8b555ba922b0699a93dceb4cb9d49c4f9 data/numismatics/advancements/recipes/misc/crafting/lime_card.json
3232
3cfbeee014050f945e5fa2299dbbcfbf120bf29a data/numismatics/recipes/crafting/red_authorized_card.json
3333
6d90141ba018612413149776136ccb11b26add7c data/numismatics/advancements/recipes/misc/crafting/light_gray_authorized_card.json
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// 1.20.1 2024-08-04T19:37:15.031552342 Create: Numismatics/Numismatics EMI excluded tags
1+
// 1.20.1 2024-08-05T17:31:05.725976583 Create: Numismatics/Numismatics EMI excluded tags
22
b57edab6f7e7a6e1b1211daa4c3b217ffd09ce62 assets/emi/tag/exclusions/numismatics.json
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
// 1.20.1 2024-08-04T19:37:15.035644417 Create: Numismatics/Numismatics' Sequenced Assembly Recipes
1+
// 1.20.1 2024-08-05T17:31:05.741816291 Create: Numismatics/Numismatics' Sequenced Assembly Recipes

common/src/generated/resources/.cache/d6a1ec2d08c6d6d7facbde77dda6f0158c00bbd6

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// 1.20.1 2024-08-04T19:37:15.03270554 Create: Numismatics/Registrate Provider for numismatics [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
1+
// 1.20.1 2024-08-05T17:31:05.729416827 Create: Numismatics/Registrate Provider for numismatics [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
22
2f1dad2a2e0086d54cf4b88378feacc04341d87f data/numismatics/tags/items/internal/ingots/iron_ingots.json
33
dc5c60bbbaf3a5d7bc1f9bc0c9377757dbd8de49 data/numismatics/loot_tables/blocks/bank_terminal.json
44
5b0244502972f49d063d98fa0cb3f6fc65af82b2 data/numismatics/tags/items/internal/string.json
@@ -8,7 +8,7 @@ a96d3d02794064cd9be1bca25a9ba6217675e6c5 assets/numismatics/models/item/white_id
88
bb2a77462e6213eddde134f3cc3e9a3f07f07f3f assets/numismatics/models/item/yellow_authorized_card.json
99
74a4c7ca7a48382782e5dba33018dfc8255192c5 assets/numismatics/models/block/brass_depositor_locked.json
1010
3f0d912779200aaaf55bef102d9b96acead1a636 data/numismatics/tags/items/internal/dyes/purple_dyes.json
11-
7792957fb81474e92aea29bb69c435866fcc25ae assets/numismatics/lang/en_us.json
11+
3346bd25775d94025b9cc65c03d9a7151d316355 assets/numismatics/lang/en_us.json
1212
377e460c0dcf6d7de1b7ae235959105a7c45e4c4 assets/numismatics/models/item/cyan_authorized_card.json
1313
bde18ccd9c21484154597c6271750c0406082f61 data/forge/tags/blocks/relocation_not_supported.json
1414
eca751589c40725750e2c2baa6607e83255fd5f4 assets/numismatics/models/item/brown_authorized_card.json
@@ -18,7 +18,7 @@ ad712dd2a2a7268dfa773f38a50d526952758d5c data/numismatics/tags/items/internal/dy
1818
8550097149cebbfd50bdeac2003327b60a4aee9a assets/numismatics/models/item/light_gray_card.json
1919
95b492bd9230dc90fca9395c823cef39e644d8f2 assets/numismatics/models/item/sprocket.json
2020
70c481f36a9718ac48632e6939ac6ba785be4c9e assets/numismatics/models/item/black_id_card.json
21-
d780766e58a270fc111ee7517399d209168b8e8f assets/numismatics/lang/en_ud.json
21+
8343a58fb3d5ce9eeecabdeaa911eccae29409d1 assets/numismatics/lang/en_ud.json
2222
1e78f650091a4a2c43e36fb815f23d0591e058a6 assets/numismatics/models/item/magenta_card.json
2323
909f5d14f23199c064f6b91a421bb7b15e0f1a7d assets/numismatics/models/item/orange_authorized_card.json
2424
d6f017479b3cc538f73d7fb0a1e65d1742bab266 assets/numismatics/models/item/light_blue_id_card.json
@@ -56,8 +56,8 @@ d048d04208faa63f0014d614d6026a66fe118c11 data/numismatics/loot_tables/blocks/bra
5656
790ff3c5da6a67a5de1ceb7138fa3e1c0fe97f80 data/numismatics/tags/items/internal/dyes/lime_dyes.json
5757
5cfb64f42dbeaa0720a7dd952e47d638c17a1056 assets/numismatics/models/block/salepoint.json
5858
a8cb82f19034a0e724e12df45c883e9cd469c210 assets/numismatics/models/item/green_card.json
59-
e1087e56db7b4d8812ab4617344f0ac8b0f0e6c7 assets/numismatics/models/item/light_gray_authorized_card.json
6059
390db78c5393fca4f90018df51d1a79d11a64f72 assets/numismatics/models/item/light_blue_authorized_card.json
60+
e1087e56db7b4d8812ab4617344f0ac8b0f0e6c7 assets/numismatics/models/item/light_gray_authorized_card.json
6161
c09892d2d189f147997d77f4ce39b0570729f030 assets/numismatics/models/item/lime_authorized_card.json
6262
06ecd28cd97f4e8200dc396858695cad57b871c8 assets/numismatics/blockstates/blaze_banker.json
6363
95ef415a564eba1d212053195d25b199427b94e3 assets/numismatics/blockstates/creative_vendor.json

common/src/generated/resources/assets/numismatics/lang/en_ud.json

+4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,14 @@
6666
"gui.numismatics.limit.none": "ʇıɯıן oN",
6767
"gui.numismatics.salepoint.cancel": "uoıʇɔɐsuɐɹʇ ןǝɔuɐƆ",
6868
"gui.numismatics.salepoint.count": "sʇıu∩",
69+
"gui.numismatics.salepoint.fluid_empty": "ʎʇdɯƎ",
70+
"gui.numismatics.salepoint.fluid_filter_empty.0": "ɹǝʇןıℲ pınןℲ",
71+
"gui.numismatics.salepoint.fluid_filter_empty.1": "ǝןʇʇoq ɐ ɹo ʇǝʞɔnq ɐ sɐ ɥɔns ɯǝʇı buıpןoɥ-pınןɟ ɐ ɥʇıʍ ʞɔıןƆ",
6972
"gui.numismatics.salepoint.go": "uoıʇɔɐsuɐɹʇ ʇɹɐʇS",
7073
"gui.numismatics.salepoint.insufficient_space": "ןןnɟ sı ʇǝbɹɐ⟘",
7174
"gui.numismatics.salepoint.invalid_state": "ǝʇɐʇs pıןɐʌuI",
7275
"gui.numismatics.salepoint.no_card": "pɹɐɔ oN",
76+
"gui.numismatics.salepoint.no_filter": "ɹǝʇןıɟ oN",
7377
"gui.numismatics.salepoint.no_state": "pǝɹnbıɟuoɔ ʇoN",
7478
"gui.numismatics.salepoint.no_target": "punoɟ ʇou ʇǝbɹɐ⟘",
7579
"gui.numismatics.salepoint.price": "¤%s '%s %s :ʇıu∩/ǝɔıɹԀ",

common/src/generated/resources/assets/numismatics/lang/en_us.json

+4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,14 @@
6666
"gui.numismatics.limit.none": "No limit",
6767
"gui.numismatics.salepoint.cancel": "Cancel transaction",
6868
"gui.numismatics.salepoint.count": "Units",
69+
"gui.numismatics.salepoint.fluid_empty": "Empty",
70+
"gui.numismatics.salepoint.fluid_filter_empty.0": "Fluid Filter",
71+
"gui.numismatics.salepoint.fluid_filter_empty.1": "Click with a fluid-holding item such as a bucket or a bottle",
6972
"gui.numismatics.salepoint.go": "Start transaction",
7073
"gui.numismatics.salepoint.insufficient_space": "Target is full",
7174
"gui.numismatics.salepoint.invalid_state": "Invalid state",
7275
"gui.numismatics.salepoint.no_card": "No card",
76+
"gui.numismatics.salepoint.no_filter": "No filter",
7377
"gui.numismatics.salepoint.no_state": "Not configured",
7478
"gui.numismatics.salepoint.no_target": "Target not found",
7579
"gui.numismatics.salepoint.price": "Price/Unit: %s %s, %s¤",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Numismatics
3+
* Copyright (c) 2024 The Railways Team
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package dev.ithundxr.createnumismatics.base.client.rendering;
20+
21+
import net.minecraft.world.item.ItemStack;
22+
23+
public interface IItemApplicableWidget {
24+
void onItemApplied(ItemStack stack);
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Numismatics
3+
* Copyright (c) 2024 The Railways Team
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package dev.ithundxr.createnumismatics.base.client.rendering;
20+
21+
import dev.ithundxr.createnumismatics.content.salepoint.states.ISalepointState;
22+
23+
public interface ISalepointStateUpdatingWidget {
24+
void updateState(ISalepointState<?> state);
25+
}

common/src/main/java/dev/ithundxr/createnumismatics/content/salepoint/SalepointConfigMenu.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public SalepointConfigMenu(MenuType<?> type, int id, Inventory inv, SalepointBlo
6161
}
6262

6363
@Override
64+
@SuppressWarnings("DataFlowIssue")
6465
protected SalepointBlockEntity createOnClient(FriendlyByteBuf extraData) {
6566
ClientLevel world = Minecraft.getInstance().level;
6667
BlockEntity blockEntity = world.getBlockEntity(extraData.readBlockPos());
@@ -122,7 +123,7 @@ public boolean canTakeItemForPickAll(@NotNull ItemStack stack, Slot slot) {
122123
}
123124

124125
@Override
125-
public void clicked(int slotId, int button, ClickType clickType, Player player) {
126+
public void clicked(int slotId, int button, @NotNull ClickType clickType, Player player) {
126127
ItemStack held = getCarried();
127128
Inventory inventory = player.getInventory();
128129
ISalepointState<?> salepointState = getSalepointState();
@@ -217,7 +218,7 @@ public void setSynchronizer(@NotNull ContainerSynchronizer synchronizer) {
217218
super.setSynchronizer(synchronizer);
218219
}
219220

220-
protected @Nullable ISalepointState<?> getSalepointState() {
221+
public @Nullable ISalepointState<?> getSalepointState() {
221222
if (contentHolder.salepointState == null)
222223
return null;
223224
return contentHolder.salepointState.state();

common/src/main/java/dev/ithundxr/createnumismatics/content/salepoint/SalepointConfigScreen.java

+62-4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.simibubi.create.foundation.gui.widget.ScrollInput;
3030
import com.simibubi.create.foundation.utility.Components;
3131
import com.simibubi.create.foundation.utility.Couple;
32+
import dev.ithundxr.createnumismatics.base.client.rendering.IItemApplicableWidget;
33+
import dev.ithundxr.createnumismatics.base.client.rendering.ISalepointStateUpdatingWidget;
3234
import dev.ithundxr.createnumismatics.config.NumismaticsConfig;
3335
import dev.ithundxr.createnumismatics.content.backend.Coin;
3436
import dev.ithundxr.createnumismatics.content.backend.behaviours.SliderStylePriceConfigurationPacket;
@@ -39,6 +41,10 @@
3941
import dev.ithundxr.createnumismatics.registry.packets.ScrollSlotPacket;
4042
import dev.ithundxr.createnumismatics.util.TextUtils;
4143
import net.minecraft.client.gui.GuiGraphics;
44+
import net.minecraft.client.gui.components.AbstractWidget;
45+
import net.minecraft.client.gui.components.Renderable;
46+
import net.minecraft.client.gui.components.events.GuiEventListener;
47+
import net.minecraft.client.gui.narration.NarratableEntry;
4248
import net.minecraft.client.renderer.Rect2i;
4349
import net.minecraft.network.chat.Component;
4450
import net.minecraft.world.entity.player.Inventory;
@@ -62,6 +68,8 @@ public class SalepointConfigScreen extends AbstractSimiContainerScreen<Salepoint
6268
private final Label[] coinLabels = new Label[COIN_COUNT];
6369
private final ScrollInput[] coinScrollInputs = new ScrollInput[COIN_COUNT];
6470

71+
private boolean wasDragging;
72+
6573
private List<Rect2i> extraAreas = Collections.emptyList();
6674

6775
public SalepointConfigScreen(SalepointConfigMenu container, Inventory inv, Component title) {
@@ -82,9 +90,7 @@ protected void init() {
8290
int y = topPos;
8391

8492
trustListButton = new IconButton(x + 16, y + background.height - 24, AllIcons.I_VIEW_SCHEDULE);
85-
trustListButton.withCallback(() -> {
86-
menu.contentHolder.openTrustList();
87-
});
93+
trustListButton.withCallback(() -> menu.contentHolder.openTrustList());
8894
addRenderableWidget(trustListButton);
8995

9096
confirmButton = new IconButton(x + background.width - 33, y + background.height - 24, AllIcons.I_CONFIRM);
@@ -118,11 +124,19 @@ protected void init() {
118124

119125
ISalepointState<?> salepointState = getSalepointState();
120126
if (salepointState != null)
121-
salepointState.createConfigWidgets(this::addRenderableWidget);
127+
salepointState.createConfigWidgets(this::addRenderableWidgetOffset);
122128

123129
extraAreas = ImmutableList.of(new Rect2i(x + background.width, y + background.height - 68, 84, 84));
124130
}
125131

132+
private <T extends GuiEventListener & Renderable & NarratableEntry> T addRenderableWidgetOffset(T widget) {
133+
if (widget instanceof AbstractWidget abstractWidget) {
134+
abstractWidget.setX(abstractWidget.getX() + leftPos);
135+
abstractWidget.setY(abstractWidget.getY() + topPos);
136+
}
137+
return addRenderableWidget(widget);
138+
}
139+
126140
@Override
127141
public List<Rect2i> getExtraAreas() {
128142
return extraAreas;
@@ -185,6 +199,50 @@ public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
185199
return super.mouseScrolled(mouseX, mouseY, delta);
186200
}
187201

202+
@Override
203+
public boolean mouseClicked(double mouseX, double mouseY, int button) {
204+
if (button == 0 && !menu.getCarried().isEmpty()) {
205+
for (GuiEventListener widget : this.children()) {
206+
if (widget.isMouseOver(mouseX, mouseY) && widget instanceof IItemApplicableWidget itemApplicableWidget) {
207+
itemApplicableWidget.onItemApplied(menu.getCarried());
208+
}
209+
}
210+
}
211+
212+
return super.mouseClicked(mouseX, mouseY, button);
213+
}
214+
215+
@Override
216+
public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY) {
217+
wasDragging = true;
218+
return super.mouseDragged(mouseX, mouseY, button, dragX, dragY);
219+
}
220+
221+
@Override
222+
public boolean mouseReleased(double mouseX, double mouseY, int button) {
223+
if (button == 0 && wasDragging && !menu.getCarried().isEmpty()) {
224+
for (GuiEventListener widget : this.children()) {
225+
if (widget.isMouseOver(mouseX, mouseY) && widget instanceof IItemApplicableWidget itemApplicableWidget) {
226+
itemApplicableWidget.onItemApplied(menu.getCarried());
227+
}
228+
}
229+
}
230+
231+
wasDragging = false;
232+
233+
return super.mouseReleased(mouseX, mouseY, button);
234+
}
235+
236+
@Override
237+
protected void containerTick() {
238+
super.containerTick();
239+
for (GuiEventListener widget : this.children()) {
240+
if (widget instanceof ISalepointStateUpdatingWidget salepointStateUpdatingWidget) {
241+
salepointStateUpdatingWidget.updateState(getSalepointState());
242+
}
243+
}
244+
}
245+
188246
@Override
189247
public void removed() {
190248
NumismaticsPackets.PACKETS.send(new SliderStylePriceConfigurationPacket(menu.contentHolder));

common/src/main/java/dev/ithundxr/createnumismatics/content/salepoint/SalepointPurchaseScreen.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
import dev.ithundxr.createnumismatics.registry.packets.SalepointPurchasePacket;
4141
import dev.ithundxr.createnumismatics.util.TextUtils;
4242
import net.minecraft.client.gui.GuiGraphics;
43+
import net.minecraft.client.gui.components.AbstractWidget;
44+
import net.minecraft.client.gui.components.Renderable;
45+
import net.minecraft.client.gui.components.events.GuiEventListener;
46+
import net.minecraft.client.gui.narration.NarratableEntry;
4347
import net.minecraft.client.renderer.Rect2i;
4448
import net.minecraft.network.chat.Component;
4549
import net.minecraft.util.FormattedCharSequence;
@@ -107,12 +111,20 @@ protected void init() {
107111

108112
ISalepointState<?> salepointState = getSalepointState();
109113
if (salepointState != null)
110-
salepointState.createPurchaseWidgets(this::addRenderableWidget);
114+
salepointState.createPurchaseWidgets(this::addRenderableWidgetOffset);
111115

112116
extraAreas = ImmutableList.of(new Rect2i(x + background.width, y + background.height - 68, 84, 84));
113117
updateAction();
114118
}
115119

120+
private <T extends GuiEventListener & Renderable & NarratableEntry> T addRenderableWidgetOffset(T widget) {
121+
if (widget instanceof AbstractWidget abstractWidget) {
122+
abstractWidget.setX(abstractWidget.getX() + leftPos);
123+
abstractWidget.setY(abstractWidget.getY() + topPos);
124+
}
125+
return addRenderableWidget(widget);
126+
}
127+
116128
@Override
117129
public List<Rect2i> getExtraAreas() {
118130
return extraAreas;
@@ -233,7 +245,6 @@ private void onAction() {
233245
}
234246
}
235247

236-
@SuppressWarnings("DataFlowIssue")
237248
private void updateAction() {
238249
action = Action.GO;
239250
Component alert = Components.translatable("gui.numismatics.salepoint.go");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Numismatics
3+
* Copyright (c) 2024 The Railways Team
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package dev.ithundxr.createnumismatics.content.salepoint.behaviours;
20+
21+
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
22+
import dev.ithundxr.createnumismatics.content.salepoint.states.ISalepointState;
23+
import dev.ithundxr.createnumismatics.content.salepoint.states.SalepointTypes;
24+
import dev.ithundxr.createnumismatics.multiloader.fluid.MultiloaderFluidStack;
25+
import org.jetbrains.annotations.NotNull;
26+
import org.jetbrains.annotations.Nullable;
27+
28+
public abstract class FluidSalepointTargetBehaviour extends SalepointTargetBehaviour<MultiloaderFluidStack> {
29+
public FluidSalepointTargetBehaviour(SmartBlockEntity be) {
30+
super(be);
31+
}
32+
33+
@Override
34+
protected @Nullable ISalepointState<?> tryBindToSalepointInternal() {
35+
return SalepointTypes.FLUID.create();
36+
}
37+
38+
@Override
39+
protected @NotNull Class<MultiloaderFluidStack> getContentType() {
40+
return MultiloaderFluidStack.class;
41+
}
42+
}

common/src/main/java/dev/ithundxr/createnumismatics/content/salepoint/behaviours/ItemSalepointTargetBehaviour.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import dev.ithundxr.createnumismatics.content.salepoint.states.ISalepointState;
2323
import dev.ithundxr.createnumismatics.content.salepoint.states.SalepointTypes;
2424
import net.minecraft.world.item.ItemStack;
25+
import org.jetbrains.annotations.NotNull;
2526
import org.jetbrains.annotations.Nullable;
2627

2728
public abstract class ItemSalepointTargetBehaviour extends SalepointTargetBehaviour<ItemStack> {
@@ -36,7 +37,7 @@ public ItemSalepointTargetBehaviour(SmartBlockEntity be) {
3637
}
3738

3839
@Override
39-
protected Class<ItemStack> getContentType() {
40+
protected @NotNull Class<ItemStack> getContentType() {
4041
return ItemStack.class;
4142
}
4243
}

0 commit comments

Comments
 (0)