Skip to content

Commit 16b254b

Browse files
committed
- fix inventory slots
1 parent 2404141 commit 16b254b

22 files changed

+83
-1361
lines changed

common/src/main/java/smartin/miapi/client/MiapiClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import net.minecraft.util.Identifier;
1414
import smartin.miapi.Miapi;
1515
import smartin.miapi.blocks.ModularWorkBenchRenderer;
16-
import smartin.miapi.client.gui.rework.CraftingScreen;
16+
import smartin.miapi.client.gui.crafting.CraftingScreen;
1717
import smartin.miapi.client.model.CustomColorProvider;
1818
import smartin.miapi.client.model.ModularModelPredicateProvider;
1919
import smartin.miapi.effects.CryoStatusEffect;

common/src/main/java/smartin/miapi/client/gui/SimpleButton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import net.minecraft.client.render.GameRenderer;
88
import net.minecraft.text.Text;
99
import net.minecraft.util.math.ColorHelper;
10-
import smartin.miapi.client.gui.rework.CraftingScreen;
10+
import smartin.miapi.client.gui.crafting.CraftingScreen;
1111

1212
import java.util.function.Consumer;
1313

common/src/main/java/smartin/miapi/client/gui/crafting/CraftingGUI.java

Lines changed: 0 additions & 141 deletions
This file was deleted.

common/src/main/java/smartin/miapi/client/gui/rework/CraftingScreen.java renamed to common/src/main/java/smartin/miapi/client/gui/crafting/CraftingScreen.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package smartin.miapi.client.gui.rework;
1+
package smartin.miapi.client.gui.crafting;
22

33
import com.mojang.blaze3d.systems.RenderSystem;
44
import net.minecraft.client.MinecraftClient;
@@ -18,10 +18,9 @@
1818
import smartin.miapi.client.gui.ParentHandledScreen;
1919
import smartin.miapi.client.gui.SimpleScreenHandlerListener;
2020
import smartin.miapi.client.gui.TransformableWidget;
21-
import smartin.miapi.client.gui.crafting.CraftingScreenHandler;
2221
import smartin.miapi.client.gui.crafting.crafter.ModuleCrafter;
2322
import smartin.miapi.client.gui.crafting.slotdisplay.SlotDisplay;
24-
import smartin.miapi.client.gui.rework.stat.StatDisplay;
23+
import smartin.miapi.client.gui.crafting.statdisplay.StatDisplay;
2524
import smartin.miapi.item.ModularItemStackConverter;
2625
import smartin.miapi.modules.ItemModule;
2726
import smartin.miapi.modules.edit_options.EditOption;

common/src/main/java/smartin/miapi/client/gui/crafting/CraftingScreenHandler.java

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package smartin.miapi.client.gui.crafting;
22

3+
import com.mojang.datafixers.util.Pair;
34
import net.minecraft.block.entity.BlockEntity;
5+
import net.minecraft.enchantment.EnchantmentHelper;
6+
import net.minecraft.entity.EquipmentSlot;
7+
import net.minecraft.entity.mob.MobEntity;
48
import net.minecraft.entity.player.PlayerEntity;
59
import net.minecraft.entity.player.PlayerInventory;
610
import net.minecraft.inventory.Inventory;
711
import net.minecraft.inventory.SimpleInventory;
812
import net.minecraft.item.ItemStack;
913
import net.minecraft.network.PacketByteBuf;
10-
import net.minecraft.screen.ArrayPropertyDelegate;
11-
import net.minecraft.screen.PropertyDelegate;
12-
import net.minecraft.screen.ScreenHandler;
13-
import net.minecraft.screen.ScreenHandlerContext;
14+
import net.minecraft.screen.*;
1415
import net.minecraft.screen.slot.Slot;
1516
import net.minecraft.server.network.ServerPlayerEntity;
17+
import net.minecraft.util.Identifier;
1618
import net.minecraft.util.math.BlockPos;
1719
import org.jetbrains.annotations.Nullable;
1820
import smartin.miapi.Miapi;
@@ -30,6 +32,9 @@
3032
import java.util.ArrayList;
3133
import java.util.List;
3234

35+
import static net.minecraft.screen.PlayerScreenHandler.BLOCK_ATLAS_TEXTURE;
36+
import static net.minecraft.screen.PlayerScreenHandler.EMPTY_OFFHAND_ARMOR_SLOT;
37+
3338
/**
3439
* This is the screen handler class for miapis default Crafting Screen.
3540
*/
@@ -46,6 +51,9 @@ public class CraftingScreenHandler extends ScreenHandler {
4651
public final String packetIDSlotRemove;
4752
public CraftingScreenHandler craftingScreenHandler;
4853

54+
static final Identifier[] EMPTY_ARMOR_SLOT_TEXTURES = new Identifier[]{PlayerScreenHandler.EMPTY_BOOTS_SLOT_TEXTURE, PlayerScreenHandler.EMPTY_LEGGINGS_SLOT_TEXTURE, PlayerScreenHandler.EMPTY_CHESTPLATE_SLOT_TEXTURE, PlayerScreenHandler.EMPTY_HELMET_SLOT_TEXTURE};
55+
private static final EquipmentSlot[] EQUIPMENT_SLOT_ORDER = new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET};
56+
4957
/**
5058
* Constructs a new CraftingScreenHandler instance with the specified sync ID and player inventory.
5159
*
@@ -213,12 +221,55 @@ public void markDirty() {
213221
}
214222

215223
this.addSlot(new ModifyingSlot(inventory, 0, 112 - 61, 118 + 71, blockEntity));
216-
217-
for (int i = 0; i < 4; i++) {
224+
for (int i = 0; i < 4; ++i) {
225+
final EquipmentSlot equipmentSlot = EQUIPMENT_SLOT_ORDER[i];
218226
int offset = i < 2 ? 0 : 1;
219-
this.addSlot(new PlayerInventorySlot(playerInventory, 39 - i, 69 + i * 18 - offset, 118 + 71));
227+
this.addSlot(new Slot(playerInventory, 39 - i, 69 + i * 18 - offset, 118 + 71) {
228+
229+
@Override
230+
public void setStack(ItemStack stack) {
231+
//PlayerScreenHandler.onEquipStack(owner, equipmentSlot, stack, this.getStack());
232+
super.setStack(stack);
233+
}
234+
235+
@Override
236+
public int getMaxItemCount() {
237+
return 1;
238+
}
239+
240+
@Override
241+
public boolean canInsert(ItemStack stack) {
242+
return equipmentSlot == MobEntity.getPreferredEquipmentSlot(stack);
243+
}
244+
245+
@Override
246+
public boolean canTakeItems(PlayerEntity playerEntity) {
247+
ItemStack itemStack = this.getStack();
248+
if (!itemStack.isEmpty() && !playerEntity.isCreative() && EnchantmentHelper.hasBindingCurse(itemStack)) {
249+
return false;
250+
}
251+
return super.canTakeItems(playerEntity);
252+
}
253+
254+
@Override
255+
public Pair<Identifier, Identifier> getBackgroundSprite() {
256+
return Pair.of(BLOCK_ATLAS_TEXTURE, EMPTY_ARMOR_SLOT_TEXTURES[equipmentSlot.getEntitySlotId()]);
257+
}
258+
});
220259
}
221-
this.addSlot(new PlayerInventorySlot(playerInventory, 40, 112 - 61 + 5 * 18, 118 + 71));
260+
this.addSlot(new Slot(playerInventory, 40, 111 - 61 + 5 * 18, 118 + 71){
261+
262+
@Override
263+
public void setStack(ItemStack stack) {
264+
//PlayerScreenHandler.onEquipStack(owner, EquipmentSlot.OFFHAND, stack, this.getStack());
265+
super.setStack(stack);
266+
}
267+
268+
@Override
269+
public Pair<Identifier, Identifier> getBackgroundSprite() {
270+
return Pair.of(BLOCK_ATLAS_TEXTURE, EMPTY_OFFHAND_ARMOR_SLOT);
271+
}
272+
});
222273
this.addProperties(delegate);
223274
}
224275

common/src/main/java/smartin/miapi/client/gui/crafting/crafter/DetailView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import smartin.miapi.client.gui.InteractAbleWidget;
1111
import smartin.miapi.client.gui.ScrollList;
1212
import smartin.miapi.client.gui.ScrollingTextWidget;
13-
import smartin.miapi.client.gui.rework.CraftingScreen;
13+
import smartin.miapi.client.gui.crafting.CraftingScreen;
1414
import smartin.miapi.item.modular.StatResolver;
1515
import smartin.miapi.modules.ItemModule;
1616
import smartin.miapi.modules.properties.SlotProperty;

common/src/main/java/smartin/miapi/client/gui/crafting/crafter/replace/ReplaceView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import net.minecraft.util.math.ColorHelper;
1111
import smartin.miapi.Miapi;
1212
import smartin.miapi.client.gui.*;
13-
import smartin.miapi.client.gui.rework.CraftingScreen;
13+
import smartin.miapi.client.gui.crafting.CraftingScreen;
1414
import smartin.miapi.item.modular.StatResolver;
1515
import smartin.miapi.modules.ItemModule;
1616
import smartin.miapi.modules.properties.AllowedSlots;

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/StatDisplay.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import smartin.miapi.client.gui.InteractAbleWidget;
1818
import smartin.miapi.client.gui.ScrollList;
1919
import smartin.miapi.client.gui.TransformableWidget;
20+
import smartin.miapi.client.gui.crafting.statdisplay.*;
2021
import smartin.miapi.modules.properties.*;
2122

2223
import java.util.ArrayList;
@@ -144,16 +145,24 @@ public class StatDisplay extends InteractAbleWidget {
144145
.builder(WaterDragProperty.property)
145146
.setMax(1)
146147
.setTranslationKey(WaterDragProperty.KEY).build());
148+
addStatDisplay(AttributeSingleDisplay
149+
.builder(AttributeRegistry.BOW_DRAW_TIME)
150+
.setMax(30)
151+
.setMin(1)
152+
.setDefault(20)
153+
.setTranslationKey("bow_draw_time")
154+
.inverseNumber(true)
155+
.setFormat("##.##").build());
147156
}
148157

149158
public StatDisplay(int x, int y, int width, int height) {
150159
super(x, y, width, height, Text.empty());
151160
transformableWidget = new TransformableWidget(x, y, width, height, Text.empty());
152-
boxList = new BoxList(0, 0, width * 2, height * 2, Text.empty(), new ArrayList<>());
153-
ScrollList list = new ScrollList(x * 2, y * 2, width * 2, height * 2, List.of(boxList));
161+
boxList = new BoxList(x , y, width, height, Text.empty(), new ArrayList<>());
162+
ScrollList list = new ScrollList(x , y , width, height, List.of(boxList));
154163
transformableWidget.addChild(list);
155164
transformableWidget.rawProjection = new Matrix4f();
156-
transformableWidget.rawProjection.scale(0.5f, 0.5f, 0.5f);
165+
//transformableWidget.rawProjection.scale(0.5f, 0.5f, 0.5f);
157166
addChild(transformableWidget);
158167
hoverText = new TransformableWidget(x, y, width, height, Text.empty());
159168
hoverText.rawProjection = new Matrix4f().scale(0.667f, 0.667f, 0.667f);
@@ -178,7 +187,7 @@ public void render(DrawContext drawContext, int mouseX, int mouseY, float delta)
178187
}
179188
}
180189
if (hoverDisplay != null && isMouseOver(mouseX, mouseY)) {
181-
float scale = 0.667f;
190+
float scale = 1.0f;
182191
hoverDisplay.setX((int) ((mouseX + 5) * (1 / scale)));
183192
hoverDisplay.setY((int) ((mouseY - hoverDisplay.getHeight() / 2 * scale) * (1 / scale)));
184193
hoverText.renderWidget(hoverDisplay, drawContext, mouseX, mouseY, delta);
@@ -203,7 +212,7 @@ private <T extends InteractAbleWidget & SingleStatDisplay> void update() {
203212

204213
}
205214
}
206-
boxList.setWidgets(widgets, 1);
215+
boxList.setWidgets(widgets, 0);
207216
}
208217

209218
public interface StatWidgetSupplier {

0 commit comments

Comments
 (0)