Normalize indentation
This commit is contained in:
parent
8712c28b0e
commit
b803b794f8
14 changed files with 370 additions and 378 deletions
|
@ -3,5 +3,5 @@ package pm.c7.scout;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
public class ScoutNetworking {
|
public class ScoutNetworking {
|
||||||
public static final Identifier ENABLE_SLOTS = new Identifier(ScoutUtil.MOD_ID, "enable_slots");
|
public static final Identifier ENABLE_SLOTS = new Identifier(ScoutUtil.MOD_ID, "enable_slots");
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import net.minecraft.util.collection.DefaultedList;
|
||||||
import pm.c7.scout.screen.BagSlot;
|
import pm.c7.scout.screen.BagSlot;
|
||||||
|
|
||||||
public interface ScoutScreenHandler {
|
public interface ScoutScreenHandler {
|
||||||
DefaultedList<BagSlot> scout$getSatchelSlots();
|
DefaultedList<BagSlot> scout$getSatchelSlots();
|
||||||
DefaultedList<BagSlot> scout$getLeftPouchSlots();
|
DefaultedList<BagSlot> scout$getLeftPouchSlots();
|
||||||
DefaultedList<BagSlot> scout$getRightPouchSlots();
|
DefaultedList<BagSlot> scout$getRightPouchSlots();
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import net.minecraft.nbt.NbtCompound;
|
||||||
import net.minecraft.nbt.NbtList;
|
import net.minecraft.nbt.NbtList;
|
||||||
import net.minecraft.screen.PlayerScreenHandler;
|
import net.minecraft.screen.PlayerScreenHandler;
|
||||||
import net.minecraft.screen.slot.Slot;
|
import net.minecraft.screen.slot.Slot;
|
||||||
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.Pair;
|
import net.minecraft.util.Pair;
|
||||||
import net.minecraft.util.collection.DefaultedList;
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
|
@ -44,59 +45,59 @@ public class ScoutUtil {
|
||||||
public static final int BAG_SLOTS_END = RIGHT_POUCH_SLOT_START - MAX_POUCH_SLOTS;
|
public static final int BAG_SLOTS_END = RIGHT_POUCH_SLOT_START - MAX_POUCH_SLOTS;
|
||||||
|
|
||||||
public static ItemStack findBagItem(PlayerEntity player, BaseBagItem.BagType type, boolean right) {
|
public static ItemStack findBagItem(PlayerEntity player, BaseBagItem.BagType type, boolean right) {
|
||||||
ItemStack targetStack = ItemStack.EMPTY;
|
ItemStack targetStack = ItemStack.EMPTY;
|
||||||
|
|
||||||
boolean hasFirstPouch = false;
|
boolean hasFirstPouch = false;
|
||||||
Optional<TrinketComponent> _component = TrinketsApi.getTrinketComponent(player);
|
Optional<TrinketComponent> _component = TrinketsApi.getTrinketComponent(player);
|
||||||
if (_component.isPresent()) {
|
if (_component.isPresent()) {
|
||||||
TrinketComponent component = _component.get();
|
TrinketComponent component = _component.get();
|
||||||
for (Pair<SlotReference, ItemStack> pair : component.getAllEquipped()) {
|
for (Pair<SlotReference, ItemStack> pair : component.getAllEquipped()) {
|
||||||
ItemStack slotStack = pair.getRight();
|
ItemStack slotStack = pair.getRight();
|
||||||
|
|
||||||
if (slotStack.getItem() instanceof BaseBagItem bagItem) {
|
if (slotStack.getItem() instanceof BaseBagItem bagItem) {
|
||||||
if (bagItem.getType() == type) {
|
if (bagItem.getType() == type) {
|
||||||
if (type == BagType.POUCH) {
|
if (type == BagType.POUCH) {
|
||||||
if (right && !hasFirstPouch) {
|
if (right && !hasFirstPouch) {
|
||||||
hasFirstPouch = true;
|
hasFirstPouch = true;
|
||||||
} else {
|
} else {
|
||||||
targetStack = slotStack;
|
targetStack = slotStack;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
targetStack = slotStack;
|
targetStack = slotStack;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return targetStack;
|
return targetStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NbtList inventoryToTag(Inventory inventory) {
|
public static NbtList inventoryToTag(Inventory inventory) {
|
||||||
NbtList tag = new NbtList();
|
NbtList tag = new NbtList();
|
||||||
|
|
||||||
for(int i = 0; i < inventory.size(); i++) {
|
for(int i = 0; i < inventory.size(); i++) {
|
||||||
NbtCompound stackTag = new NbtCompound();
|
NbtCompound stackTag = new NbtCompound();
|
||||||
stackTag.putInt("Slot", i);
|
stackTag.putInt("Slot", i);
|
||||||
stackTag.put("Stack", inventory.getStack(i).writeNbt(new NbtCompound()));
|
stackTag.put("Stack", inventory.getStack(i).writeNbt(new NbtCompound()));
|
||||||
tag.add(stackTag);
|
tag.add(stackTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void inventoryFromTag(NbtList tag, Inventory inventory) {
|
public static void inventoryFromTag(NbtList tag, Inventory inventory) {
|
||||||
inventory.clear();
|
inventory.clear();
|
||||||
|
|
||||||
tag.forEach(element -> {
|
tag.forEach(element -> {
|
||||||
NbtCompound stackTag = (NbtCompound) element;
|
NbtCompound stackTag = (NbtCompound) element;
|
||||||
int slot = stackTag.getInt("Slot");
|
int slot = stackTag.getInt("Slot");
|
||||||
ItemStack stack = ItemStack.fromNbt(stackTag.getCompound("Stack"));
|
ItemStack stack = ItemStack.fromNbt(stackTag.getCompound("Stack"));
|
||||||
inventory.setStack(slot, stack);
|
inventory.setStack(slot, stack);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isBagSlot(int slot) {
|
public static boolean isBagSlot(int slot) {
|
||||||
return slot <= SATCHEL_SLOT_START && slot > BAG_SLOTS_END;
|
return slot <= SATCHEL_SLOT_START && slot > BAG_SLOTS_END;
|
||||||
|
|
|
@ -27,79 +27,79 @@ import pm.c7.scout.mixin.client.HandledScreenAccessor;
|
||||||
import pm.c7.scout.screen.BagSlot;
|
import pm.c7.scout.screen.BagSlot;
|
||||||
|
|
||||||
public class ScoutClient implements ClientModInitializer {
|
public class ScoutClient implements ClientModInitializer {
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient(ModContainer mod) {
|
public void onInitializeClient(ModContainer mod) {
|
||||||
ClientPlayNetworking.registerGlobalReceiver(ScoutNetworking.ENABLE_SLOTS, (client, handler, packet, sender) -> {
|
ClientPlayNetworking.registerGlobalReceiver(ScoutNetworking.ENABLE_SLOTS, (client, handler, packet, sender) -> {
|
||||||
client.execute(() -> {
|
client.execute(() -> {
|
||||||
assert client.player != null;
|
assert client.player != null;
|
||||||
ScoutScreenHandler screenHandler = (ScoutScreenHandler) client.player.playerScreenHandler;
|
ScoutScreenHandler screenHandler = (ScoutScreenHandler) client.player.playerScreenHandler;
|
||||||
|
|
||||||
ItemStack satchelStack = ScoutUtil.findBagItem(client.player, BagType.SATCHEL, false);
|
ItemStack satchelStack = ScoutUtil.findBagItem(client.player, BagType.SATCHEL, false);
|
||||||
DefaultedList<BagSlot> satchelSlots = screenHandler.scout$getSatchelSlots();
|
DefaultedList<BagSlot> satchelSlots = screenHandler.scout$getSatchelSlots();
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_SATCHEL_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_SATCHEL_SLOTS; i++) {
|
||||||
BagSlot slot = satchelSlots.get(i);
|
BagSlot slot = satchelSlots.get(i);
|
||||||
slot.setInventory(null);
|
slot.setInventory(null);
|
||||||
slot.setEnabled(false);
|
slot.setEnabled(false);
|
||||||
}
|
}
|
||||||
if (!satchelStack.isEmpty()) {
|
if (!satchelStack.isEmpty()) {
|
||||||
BaseBagItem satchelItem = (BaseBagItem) satchelStack.getItem();
|
BaseBagItem satchelItem = (BaseBagItem) satchelStack.getItem();
|
||||||
Inventory satchelInv = satchelItem.getInventory(satchelStack);
|
Inventory satchelInv = satchelItem.getInventory(satchelStack);
|
||||||
|
|
||||||
for (int i = 0; i < satchelItem.getSlotCount(); i++) {
|
for (int i = 0; i < satchelItem.getSlotCount(); i++) {
|
||||||
BagSlot slot = satchelSlots.get(i);
|
BagSlot slot = satchelSlots.get(i);
|
||||||
slot.setInventory(satchelInv);
|
slot.setInventory(satchelInv);
|
||||||
slot.setEnabled(true);
|
slot.setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack leftPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, false);
|
ItemStack leftPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, false);
|
||||||
DefaultedList<BagSlot> leftPouchSlots = screenHandler.scout$getLeftPouchSlots();
|
DefaultedList<BagSlot> leftPouchSlots = screenHandler.scout$getLeftPouchSlots();
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
||||||
BagSlot slot = leftPouchSlots.get(i);
|
BagSlot slot = leftPouchSlots.get(i);
|
||||||
slot.setInventory(null);
|
slot.setInventory(null);
|
||||||
slot.setEnabled(false);
|
slot.setEnabled(false);
|
||||||
}
|
}
|
||||||
if (!leftPouchStack.isEmpty()) {
|
if (!leftPouchStack.isEmpty()) {
|
||||||
BaseBagItem leftPouchItem = (BaseBagItem) leftPouchStack.getItem();
|
BaseBagItem leftPouchItem = (BaseBagItem) leftPouchStack.getItem();
|
||||||
Inventory leftPouchInv = leftPouchItem.getInventory(leftPouchStack);
|
Inventory leftPouchInv = leftPouchItem.getInventory(leftPouchStack);
|
||||||
|
|
||||||
for (int i = 0; i < leftPouchItem.getSlotCount(); i++) {
|
for (int i = 0; i < leftPouchItem.getSlotCount(); i++) {
|
||||||
BagSlot slot = leftPouchSlots.get(i);
|
BagSlot slot = leftPouchSlots.get(i);
|
||||||
slot.setInventory(leftPouchInv);
|
slot.setInventory(leftPouchInv);
|
||||||
slot.setEnabled(true);
|
slot.setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack rightPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, true);
|
ItemStack rightPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, true);
|
||||||
DefaultedList<BagSlot> rightPouchSlots = screenHandler.scout$getRightPouchSlots();
|
DefaultedList<BagSlot> rightPouchSlots = screenHandler.scout$getRightPouchSlots();
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
||||||
BagSlot slot = rightPouchSlots.get(i);
|
BagSlot slot = rightPouchSlots.get(i);
|
||||||
slot.setInventory(null);
|
slot.setInventory(null);
|
||||||
slot.setEnabled(false);
|
slot.setEnabled(false);
|
||||||
}
|
}
|
||||||
if (!rightPouchStack.isEmpty()) {
|
if (!rightPouchStack.isEmpty()) {
|
||||||
BaseBagItem rightPouchItem = (BaseBagItem) rightPouchStack.getItem();
|
BaseBagItem rightPouchItem = (BaseBagItem) rightPouchStack.getItem();
|
||||||
Inventory rightPouchInv = rightPouchItem.getInventory(rightPouchStack);
|
Inventory rightPouchInv = rightPouchItem.getInventory(rightPouchStack);
|
||||||
|
|
||||||
for (int i = 0; i < rightPouchItem.getSlotCount(); i++) {
|
for (int i = 0; i < rightPouchItem.getSlotCount(); i++) {
|
||||||
BagSlot slot = rightPouchSlots.get(i);
|
BagSlot slot = rightPouchSlots.get(i);
|
||||||
slot.setInventory(rightPouchInv);
|
slot.setInventory(rightPouchInv);
|
||||||
slot.setEnabled(true);
|
slot.setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
TooltipComponentCallback.EVENT.register(data -> {
|
TooltipComponentCallback.EVENT.register(data -> {
|
||||||
if (data instanceof BagTooltipData d) {
|
if (data instanceof BagTooltipData d) {
|
||||||
return new BagTooltipComponent(d);
|
return new BagTooltipComponent(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
LivingEntityFeatureRendererRegistrationCallback.EVENT.register((entityType, entityRenderer, registrationHelper, context) -> {
|
LivingEntityFeatureRendererRegistrationCallback.EVENT.register((entityType, entityRenderer, registrationHelper, context) -> {
|
||||||
if (entityType == EntityType.PLAYER) {
|
if (entityType == EntityType.PLAYER) {
|
||||||
|
@ -200,5 +200,5 @@ public class ScoutClient implements ClientModInitializer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,34 +12,34 @@ import pm.c7.scout.item.BaseBagItem.BagType;
|
||||||
import pm.c7.scout.mixin.client.HandledScreenAccessor;
|
import pm.c7.scout.mixin.client.HandledScreenAccessor;
|
||||||
|
|
||||||
public class ScoutEmiPlugin implements EmiPlugin {
|
public class ScoutEmiPlugin implements EmiPlugin {
|
||||||
@Override
|
@Override
|
||||||
public void register(EmiRegistry registry) {
|
public void register(EmiRegistry registry) {
|
||||||
registry.addExclusionArea(InventoryScreen.class, (screen, consumer) -> {
|
registry.addExclusionArea(InventoryScreen.class, (screen, consumer) -> {
|
||||||
MinecraftClient client = MinecraftClient.getInstance();
|
MinecraftClient client = MinecraftClient.getInstance();
|
||||||
ItemStack leftPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, false);
|
ItemStack leftPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, false);
|
||||||
if (!leftPouchStack.isEmpty()) {
|
if (!leftPouchStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
int columns = (int) Math.ceil(slots / 3);
|
int columns = (int) Math.ceil(slots / 3);
|
||||||
|
|
||||||
int x = ((HandledScreenAccessor) screen).getX() - (columns * 18);
|
int x = ((HandledScreenAccessor) screen).getX() - (columns * 18);
|
||||||
int y = ((HandledScreenAccessor) screen).getY() + 76;
|
int y = ((HandledScreenAccessor) screen).getY() + 76;
|
||||||
|
|
||||||
consumer.accept(new Bounds(x, y, columns * 18, 68));
|
consumer.accept(new Bounds(x, y, columns * 18, 68));
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack rightPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, true);
|
ItemStack rightPouchStack = ScoutUtil.findBagItem(client.player, BagType.POUCH, true);
|
||||||
if (!rightPouchStack.isEmpty()) {
|
if (!rightPouchStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) rightPouchStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) rightPouchStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
int columns = (int) Math.ceil(slots / 3);
|
int columns = (int) Math.ceil(slots / 3);
|
||||||
|
|
||||||
int x = ((HandledScreenAccessor) screen).getX() + 176;
|
int x = ((HandledScreenAccessor) screen).getX() + 176;
|
||||||
int y = ((HandledScreenAccessor) screen).getY() + 76;
|
int y = ((HandledScreenAccessor) screen).getY() + 76;
|
||||||
|
|
||||||
consumer.accept(new Bounds(x, y, columns * 18, 68));
|
consumer.accept(new Bounds(x, y, columns * 18, 68));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,19 +5,19 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.collection.DefaultedList;
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
|
|
||||||
public class BagTooltipData implements TooltipData {
|
public class BagTooltipData implements TooltipData {
|
||||||
private final DefaultedList<ItemStack> inventory;
|
private final DefaultedList<ItemStack> inventory;
|
||||||
private final int slotCount;
|
private final int slotCount;
|
||||||
|
|
||||||
public BagTooltipData(DefaultedList<ItemStack> inventory, int slots) {
|
public BagTooltipData(DefaultedList<ItemStack> inventory, int slots) {
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
this.slotCount = slots;
|
this.slotCount = slots;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DefaultedList<ItemStack> getInventory() {
|
public DefaultedList<ItemStack> getInventory() {
|
||||||
return this.inventory;
|
return this.inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSlotCount() {
|
public int getSlotCount() {
|
||||||
return this.slotCount;
|
return this.slotCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,85 +31,85 @@ import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class BaseBagItem extends TrinketItem {
|
public class BaseBagItem extends TrinketItem {
|
||||||
private static final String ITEMS_KEY = "Items";
|
private static final String ITEMS_KEY = "Items";
|
||||||
|
|
||||||
private final int slots;
|
private final int slots;
|
||||||
private final BagType type;
|
private final BagType type;
|
||||||
|
|
||||||
public BaseBagItem(Settings settings, int slots, BagType type) {
|
public BaseBagItem(Settings settings, int slots, BagType type) {
|
||||||
super(settings);
|
super(settings);
|
||||||
|
|
||||||
if (type == BagType.SATCHEL && slots > ScoutUtil.MAX_SATCHEL_SLOTS) {
|
if (type == BagType.SATCHEL && slots > ScoutUtil.MAX_SATCHEL_SLOTS) {
|
||||||
throw new IllegalArgumentException("Satchel has too many slots.");
|
throw new IllegalArgumentException("Satchel has too many slots.");
|
||||||
}
|
}
|
||||||
if (type == BagType.POUCH && slots > ScoutUtil.MAX_POUCH_SLOTS) {
|
if (type == BagType.POUCH && slots > ScoutUtil.MAX_POUCH_SLOTS) {
|
||||||
throw new IllegalArgumentException("Pouch has too many slots.");
|
throw new IllegalArgumentException("Pouch has too many slots.");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.slots = slots;
|
this.slots = slots;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSlotCount() {
|
public int getSlotCount() {
|
||||||
return this.slots;
|
return this.slots;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BagType getType() {
|
public BagType getType() {
|
||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
||||||
super.appendTooltip(stack, world, tooltip, context);
|
super.appendTooltip(stack, world, tooltip, context);
|
||||||
tooltip.add(Text.translatable("tooltip.scout.slots", Text.literal(String.valueOf(this.slots)).formatted(Formatting.BLUE)).formatted(Formatting.GRAY));
|
tooltip.add(Text.translatable("tooltip.scout.slots", Text.literal(String.valueOf(this.slots)).formatted(Formatting.BLUE)).formatted(Formatting.GRAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Inventory getInventory(ItemStack stack) {
|
public Inventory getInventory(ItemStack stack) {
|
||||||
SimpleInventory inventory = new SimpleInventory(this.slots) {
|
SimpleInventory inventory = new SimpleInventory(this.slots) {
|
||||||
@Override
|
@Override
|
||||||
public void markDirty() {
|
public void markDirty() {
|
||||||
stack.getOrCreateNbt().put(ITEMS_KEY, ScoutUtil.inventoryToTag(this));
|
stack.getOrCreateNbt().put(ITEMS_KEY, ScoutUtil.inventoryToTag(this));
|
||||||
super.markDirty();
|
super.markDirty();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
NbtCompound compound = stack.getOrCreateNbt();
|
NbtCompound compound = stack.getOrCreateNbt();
|
||||||
if (!compound.contains(ITEMS_KEY)) {
|
if (!compound.contains(ITEMS_KEY)) {
|
||||||
compound.put(ITEMS_KEY, new NbtList());
|
compound.put(ITEMS_KEY, new NbtList());
|
||||||
}
|
}
|
||||||
|
|
||||||
NbtList items = compound.getList(ITEMS_KEY, 10);
|
NbtList items = compound.getList(ITEMS_KEY, 10);
|
||||||
|
|
||||||
ScoutUtil.inventoryFromTag(items, inventory);
|
ScoutUtil.inventoryFromTag(items, inventory);
|
||||||
|
|
||||||
return inventory;
|
return inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<TooltipData> getTooltipData(ItemStack stack) {
|
public Optional<TooltipData> getTooltipData(ItemStack stack) {
|
||||||
DefaultedList<ItemStack> stacks = DefaultedList.of();
|
DefaultedList<ItemStack> stacks = DefaultedList.of();
|
||||||
Inventory inventory = getInventory(stack);
|
Inventory inventory = getInventory(stack);
|
||||||
|
|
||||||
for (int i = 0; i < slots; i++) {
|
for (int i = 0; i < slots; i++) {
|
||||||
stacks.add(inventory.getStack(i));
|
stacks.add(inventory.getStack(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stacks.stream().allMatch(ItemStack::isEmpty)) return Optional.empty();
|
if (stacks.stream().allMatch(ItemStack::isEmpty)) return Optional.empty();
|
||||||
|
|
||||||
return Optional.of(new BagTooltipData(stacks, slots));
|
return Optional.of(new BagTooltipData(stacks, slots));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEquip(ItemStack stack, SlotReference slotRef, LivingEntity entity) {
|
public void onEquip(ItemStack stack, SlotReference slotRef, LivingEntity entity) {
|
||||||
if (entity instanceof PlayerEntity player)
|
|
||||||
updateSlots(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUnequip(ItemStack stack, SlotReference slotRef, LivingEntity entity) {
|
|
||||||
if (entity instanceof PlayerEntity player)
|
if (entity instanceof PlayerEntity player)
|
||||||
updateSlots(player);
|
updateSlots(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUnequip(ItemStack stack, SlotReference slotRef, LivingEntity entity) {
|
||||||
|
if (entity instanceof PlayerEntity player)
|
||||||
|
updateSlots(player);
|
||||||
|
}
|
||||||
|
|
||||||
private void updateSlots(PlayerEntity player) {
|
private void updateSlots(PlayerEntity player) {
|
||||||
ScoutScreenHandler handler = (ScoutScreenHandler) player.playerScreenHandler;
|
ScoutScreenHandler handler = (ScoutScreenHandler) player.playerScreenHandler;
|
||||||
|
@ -177,37 +177,37 @@ public class BaseBagItem extends TrinketItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canEquip(ItemStack stack, SlotReference slot, LivingEntity entity) {
|
public boolean canEquip(ItemStack stack, SlotReference slot, LivingEntity entity) {
|
||||||
Item item = stack.getItem();
|
Item item = stack.getItem();
|
||||||
|
|
||||||
ItemStack slotStack = slot.inventory().getStack(slot.index());
|
ItemStack slotStack = slot.inventory().getStack(slot.index());
|
||||||
Item slotItem = slotStack.getItem();
|
Item slotItem = slotStack.getItem();
|
||||||
|
|
||||||
if (slotItem instanceof BaseBagItem) {
|
if (slotItem instanceof BaseBagItem) {
|
||||||
if (((BaseBagItem) item).getType() == BagType.SATCHEL) {
|
if (((BaseBagItem) item).getType() == BagType.SATCHEL) {
|
||||||
if (((BaseBagItem) slotItem).getType() == BagType.SATCHEL) {
|
if (((BaseBagItem) slotItem).getType() == BagType.SATCHEL) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.SATCHEL, false).isEmpty();
|
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.SATCHEL, false).isEmpty();
|
||||||
}
|
}
|
||||||
} else if (((BaseBagItem) item).getType() == BagType.POUCH) {
|
} else if (((BaseBagItem) item).getType() == BagType.POUCH) {
|
||||||
if (((BaseBagItem) slotItem).getType() == BagType.POUCH) {
|
if (((BaseBagItem) slotItem).getType() == BagType.POUCH) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.POUCH, true).isEmpty();
|
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.POUCH, true).isEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (((BaseBagItem) item).getType() == BagType.SATCHEL) {
|
if (((BaseBagItem) item).getType() == BagType.SATCHEL) {
|
||||||
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.SATCHEL, false).isEmpty();
|
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.SATCHEL, false).isEmpty();
|
||||||
} else if (((BaseBagItem) item).getType() == BagType.POUCH) {
|
} else if (((BaseBagItem) item).getType() == BagType.POUCH) {
|
||||||
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.POUCH, true).isEmpty();
|
return ScoutUtil.findBagItem((PlayerEntity) entity, BagType.POUCH, true).isEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
|
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
|
||||||
|
@ -219,8 +219,8 @@ public class BaseBagItem extends TrinketItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum BagType {
|
public enum BagType {
|
||||||
SATCHEL,
|
SATCHEL,
|
||||||
POUCH
|
POUCH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,14 +9,13 @@ import pm.c7.scout.item.BaseBagItem;
|
||||||
|
|
||||||
@Mixin(ItemStack.class)
|
@Mixin(ItemStack.class)
|
||||||
public class ItemStackMixin {
|
public class ItemStackMixin {
|
||||||
|
// Trinkets calls areEqual to check whether it should unequip old and equip new (https://github.com/emilyploszaj/trinkets/blob/7cb63ce0/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java#L155-L158)
|
||||||
// Trinkets calls areEqual to check whether it should unequip old and equip new (https://github.com/emilyploszaj/trinkets/blob/7cb63ce0/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java#L155-L158)
|
// Excluding ourselves from this check to force unequip/equip when switching bag items fixes a duplication bug
|
||||||
// Excluding ourselves from this check to force unequip/equip when switching bag items fixes a duplication bug
|
// Gross and hacky but oh well, can't mixin mixins.
|
||||||
// Gross and hacky but oh well, can't mixin mixins.
|
@Inject(method = "areEqual", at = @At("HEAD"), cancellable = true)
|
||||||
@Inject(method = "areEqual", at = @At("HEAD"), cancellable = true)
|
private static void scout$grossTrinketsEquipFix(ItemStack stack, ItemStack otherStack, CallbackInfoReturnable<Boolean> callbackInfo) {
|
||||||
private static void scout$grossTrinketsEquipFix(ItemStack stack, ItemStack otherStack, CallbackInfoReturnable<Boolean> callbackInfo) {
|
if (stack.getItem() instanceof BaseBagItem && otherStack.getItem() instanceof BaseBagItem) {
|
||||||
if (stack.getItem() instanceof BaseBagItem && otherStack.getItem() instanceof BaseBagItem) {
|
callbackInfo.setReturnValue(false);
|
||||||
callbackInfo.setReturnValue(false);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,84 +18,84 @@ import pm.c7.scout.screen.BagSlot;
|
||||||
@Mixin(value = PlayerScreenHandler.class, priority = 950)
|
@Mixin(value = PlayerScreenHandler.class, priority = 950)
|
||||||
@Transformer(PlayerScreenHandlerTransformer.class)
|
@Transformer(PlayerScreenHandlerTransformer.class)
|
||||||
public abstract class PlayerScreenHandlerMixin extends ScreenHandler implements ScoutScreenHandler {
|
public abstract class PlayerScreenHandlerMixin extends ScreenHandler implements ScoutScreenHandler {
|
||||||
protected PlayerScreenHandlerMixin() {
|
protected PlayerScreenHandlerMixin() {
|
||||||
super(null, 0);
|
super(null, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
public final DefaultedList<BagSlot> scout$satchelSlots = DefaultedList.ofSize(ScoutUtil.MAX_SATCHEL_SLOTS);
|
public final DefaultedList<BagSlot> scout$satchelSlots = DefaultedList.ofSize(ScoutUtil.MAX_SATCHEL_SLOTS);
|
||||||
@Unique
|
@Unique
|
||||||
public final DefaultedList<BagSlot> scout$leftPouchSlots = DefaultedList.ofSize(ScoutUtil.MAX_POUCH_SLOTS);
|
public final DefaultedList<BagSlot> scout$leftPouchSlots = DefaultedList.ofSize(ScoutUtil.MAX_POUCH_SLOTS);
|
||||||
@Unique
|
@Unique
|
||||||
public final DefaultedList<BagSlot> scout$rightPouchSlots = DefaultedList.ofSize(ScoutUtil.MAX_POUCH_SLOTS);
|
public final DefaultedList<BagSlot> scout$rightPouchSlots = DefaultedList.ofSize(ScoutUtil.MAX_POUCH_SLOTS);
|
||||||
|
|
||||||
@Inject(method = "<init>", at = @At("RETURN"))
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
private void scout$addSlots(PlayerInventory inventory, boolean onServer, PlayerEntity owner, CallbackInfo callbackInfo) {
|
private void scout$addSlots(PlayerInventory inventory, boolean onServer, PlayerEntity owner, CallbackInfo callbackInfo) {
|
||||||
// satchel
|
// satchel
|
||||||
int x = 8;
|
int x = 8;
|
||||||
int y = 168;
|
int y = 168;
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_SATCHEL_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_SATCHEL_SLOTS; i++) {
|
||||||
if (i % 9 == 0) {
|
if (i % 9 == 0) {
|
||||||
x = 8;
|
x = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
BagSlot slot = new BagSlot(i, x, y);
|
BagSlot slot = new BagSlot(i, x, y);
|
||||||
slot.id = ScoutUtil.SATCHEL_SLOT_START - i;
|
slot.id = ScoutUtil.SATCHEL_SLOT_START - i;
|
||||||
scout$satchelSlots.add(slot);
|
scout$satchelSlots.add(slot);
|
||||||
|
|
||||||
x += 18;
|
x += 18;
|
||||||
|
|
||||||
if ((i + 1) % 9 == 0) {
|
if ((i + 1) % 9 == 0) {
|
||||||
y += 18;
|
y += 18;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// left pouch
|
// left pouch
|
||||||
x = 8;
|
x = 8;
|
||||||
y = 66;
|
y = 66;
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
||||||
if (i % 3 == 0) {
|
if (i % 3 == 0) {
|
||||||
x -= 18;
|
x -= 18;
|
||||||
y += 54;
|
y += 54;
|
||||||
}
|
}
|
||||||
|
|
||||||
BagSlot slot = new BagSlot(i, x, y);
|
BagSlot slot = new BagSlot(i, x, y);
|
||||||
slot.id = ScoutUtil.LEFT_POUCH_SLOT_START - i;
|
slot.id = ScoutUtil.LEFT_POUCH_SLOT_START - i;
|
||||||
scout$leftPouchSlots.add(slot);
|
scout$leftPouchSlots.add(slot);
|
||||||
|
|
||||||
y -= 18;
|
y -= 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
// right pouch
|
// right pouch
|
||||||
x = 152;
|
x = 152;
|
||||||
y = 66;
|
y = 66;
|
||||||
|
|
||||||
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
for (int i = 0; i < ScoutUtil.MAX_POUCH_SLOTS; i++) {
|
||||||
if (i % 3 == 0) {
|
if (i % 3 == 0) {
|
||||||
x += 18;
|
x += 18;
|
||||||
y += 54;
|
y += 54;
|
||||||
}
|
}
|
||||||
|
|
||||||
BagSlot slot = new BagSlot(i, x, y);
|
BagSlot slot = new BagSlot(i, x, y);
|
||||||
slot.id = ScoutUtil.RIGHT_POUCH_SLOT_START - i;
|
slot.id = ScoutUtil.RIGHT_POUCH_SLOT_START - i;
|
||||||
scout$rightPouchSlots.add(slot);
|
scout$rightPouchSlots.add(slot);
|
||||||
|
|
||||||
y -= 18;
|
y -= 18;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final DefaultedList<BagSlot> scout$getSatchelSlots() {
|
public final DefaultedList<BagSlot> scout$getSatchelSlots() {
|
||||||
return scout$satchelSlots;
|
return scout$satchelSlots;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public final DefaultedList<BagSlot> scout$getLeftPouchSlots() {
|
public final DefaultedList<BagSlot> scout$getLeftPouchSlots() {
|
||||||
return scout$leftPouchSlots;
|
return scout$leftPouchSlots;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public final DefaultedList<BagSlot> scout$getRightPouchSlots() {
|
public final DefaultedList<BagSlot> scout$getRightPouchSlots() {
|
||||||
return scout$rightPouchSlots;
|
return scout$rightPouchSlots;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,8 @@ import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.gui.screen.ingame.AbstractFurnaceScreen;
|
import net.minecraft.client.gui.screen.ingame.AbstractFurnaceScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||||
import net.minecraft.client.gui.screen.recipe.book.RecipeBookProvider;
|
import net.minecraft.client.gui.screen.recipe.book.RecipeBookProvider;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.screen.AbstractFurnaceScreenHandler;
|
import net.minecraft.screen.AbstractFurnaceScreenHandler;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
|
|
@ -9,10 +9,10 @@ import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
@Mixin(HandledScreen.class)
|
@Mixin(HandledScreen.class)
|
||||||
public interface HandledScreenAccessor {
|
public interface HandledScreenAccessor {
|
||||||
@Accessor("x")
|
@Accessor("x")
|
||||||
int getX();
|
int getX();
|
||||||
@Accessor("y")
|
@Accessor("y")
|
||||||
int getY();
|
int getY();
|
||||||
@Accessor("backgroundWidth")
|
@Accessor("backgroundWidth")
|
||||||
int getBackgroundWidth();
|
int getBackgroundWidth();
|
||||||
@Accessor("backgroundHeight")
|
@Accessor("backgroundHeight")
|
||||||
|
|
|
@ -9,7 +9,6 @@ import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.ScreenHandlerProvider;
|
import net.minecraft.client.gui.screen.ingame.ScreenHandlerProvider;
|
||||||
import net.minecraft.client.gui.screen.ingame.ShulkerBoxScreen;
|
import net.minecraft.client.gui.screen.ingame.ShulkerBoxScreen;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.screen.ScreenHandler;
|
import net.minecraft.screen.ScreenHandler;
|
||||||
import net.minecraft.screen.slot.Slot;
|
import net.minecraft.screen.slot.Slot;
|
||||||
|
@ -277,7 +276,6 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen
|
||||||
for (int i = ScoutUtil.SATCHEL_SLOT_START; i > ScoutUtil.BAG_SLOTS_END; i--) {
|
for (int i = ScoutUtil.SATCHEL_SLOT_START; i > ScoutUtil.BAG_SLOTS_END; i--) {
|
||||||
BagSlot slot = (BagSlot) ScoutUtil.getBagSlot(i, this.client.player.playerScreenHandler);
|
BagSlot slot = (BagSlot) ScoutUtil.getBagSlot(i, this.client.player.playerScreenHandler);
|
||||||
if (slot != null && slot.isEnabled()) {
|
if (slot != null && slot.isEnabled()) {
|
||||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
|
||||||
this.drawSlot(graphics, slot);
|
this.drawSlot(graphics, slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,15 @@
|
||||||
package pm.c7.scout.mixin.client;
|
package pm.c7.scout.mixin.client;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen;
|
import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
|
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
|
||||||
import net.minecraft.client.gui.screen.recipe.book.RecipeBookProvider;
|
import net.minecraft.client.gui.screen.recipe.book.RecipeBookProvider;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.screen.PlayerScreenHandler;
|
import net.minecraft.screen.PlayerScreenHandler;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import pm.c7.scout.ScoutUtil;
|
import pm.c7.scout.ScoutUtil;
|
||||||
import pm.c7.scout.item.BaseBagItem;
|
import pm.c7.scout.item.BaseBagItem;
|
||||||
|
@ -22,45 +18,45 @@ import pm.c7.scout.item.BaseBagItem.BagType;
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
@Mixin(InventoryScreen.class)
|
@Mixin(InventoryScreen.class)
|
||||||
public abstract class InventoryScreenMixin extends AbstractInventoryScreen<PlayerScreenHandler> implements RecipeBookProvider {
|
public abstract class InventoryScreenMixin extends AbstractInventoryScreen<PlayerScreenHandler> implements RecipeBookProvider {
|
||||||
private InventoryScreenMixin() {
|
private InventoryScreenMixin() {
|
||||||
super(null, null, null);
|
super(null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "isClickOutsideBounds", at = @At("TAIL"), cancellable = true)
|
@Inject(method = "isClickOutsideBounds", at = @At("TAIL"), cancellable = true)
|
||||||
private void scout$adjustOutsideBounds(double mouseX, double mouseY, int left, int top, int button, CallbackInfoReturnable<Boolean> callbackInfo) {
|
private void scout$adjustOutsideBounds(double mouseX, double mouseY, int left, int top, int button, CallbackInfoReturnable<Boolean> callbackInfo) {
|
||||||
if (this.client != null && this.client.player != null) {
|
if (this.client != null && this.client.player != null) {
|
||||||
ItemStack backStack = ScoutUtil.findBagItem(this.client.player, BagType.SATCHEL, false);
|
ItemStack backStack = ScoutUtil.findBagItem(this.client.player, BagType.SATCHEL, false);
|
||||||
if (!backStack.isEmpty()) {
|
if (!backStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) backStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) backStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
int rows = (int) Math.ceil(slots / 9);
|
int rows = (int) Math.ceil(slots / 9);
|
||||||
|
|
||||||
if (mouseY < (top + this.backgroundHeight) + 8 + (18 * rows) && mouseY >= (top + this.backgroundHeight) && mouseX >= left && mouseY < (left + this.backgroundWidth)) {
|
if (mouseY < (top + this.backgroundHeight) + 8 + (18 * rows) && mouseY >= (top + this.backgroundHeight) && mouseX >= left && mouseY < (left + this.backgroundWidth)) {
|
||||||
callbackInfo.setReturnValue(false);
|
callbackInfo.setReturnValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack leftPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, false);
|
ItemStack leftPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, false);
|
||||||
if (!leftPouchStack.isEmpty()) {
|
if (!leftPouchStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
int columns = (int) Math.ceil(slots / 3);
|
int columns = (int) Math.ceil(slots / 3);
|
||||||
|
|
||||||
if (mouseX >= left - (columns * 18) && mouseX < left && mouseY >= (top + this.backgroundHeight) - 90 && mouseY < (top + this.backgroundHeight) - 22) {
|
if (mouseX >= left - (columns * 18) && mouseX < left && mouseY >= (top + this.backgroundHeight) - 90 && mouseY < (top + this.backgroundHeight) - 22) {
|
||||||
callbackInfo.setReturnValue(false);
|
callbackInfo.setReturnValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack rightPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, true);
|
ItemStack rightPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, true);
|
||||||
if (!rightPouchStack.isEmpty()) {
|
if (!rightPouchStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) rightPouchStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) rightPouchStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
int columns = (int) Math.ceil(slots / 3);
|
int columns = (int) Math.ceil(slots / 3);
|
||||||
|
|
||||||
if (mouseX >= (left + this.backgroundWidth) && mouseX < (left + this.backgroundWidth) + (columns * 18) && mouseY >= (top + this.backgroundHeight) - 90 && mouseY < (top + this.backgroundHeight) - 22) {
|
if (mouseX >= (left + this.backgroundWidth) && mouseX < (left + this.backgroundWidth) + (columns * 18) && mouseY >= (top + this.backgroundHeight) - 90 && mouseY < (top + this.backgroundHeight) - 22) {
|
||||||
callbackInfo.setReturnValue(false);
|
callbackInfo.setReturnValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,36 +19,36 @@ import pm.c7.scout.item.BaseBagItem.BagType;
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
@Mixin(value = RecipeBookWidget.class, priority = 950)
|
@Mixin(value = RecipeBookWidget.class, priority = 950)
|
||||||
public class RecipeBookWidgetMixin {
|
public class RecipeBookWidgetMixin {
|
||||||
@Shadow
|
@Shadow
|
||||||
protected MinecraftClient client;
|
protected MinecraftClient client;
|
||||||
@Shadow
|
@Shadow
|
||||||
private int leftOffset;
|
private int leftOffset;
|
||||||
|
|
||||||
@Inject(method = "findLeftEdge", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
|
@Inject(method = "findLeftEdge", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
|
||||||
private void scout$modifyRecipeBookPosition(int width, int backgroundWidth, CallbackInfoReturnable<Integer> callbackInfo, int x) {
|
private void scout$modifyRecipeBookPosition(int width, int backgroundWidth, CallbackInfoReturnable<Integer> callbackInfo, int x) {
|
||||||
if (this.client != null && this.client.player != null && this.isOpen()) {
|
if (this.client != null && this.client.player != null && this.isOpen()) {
|
||||||
ItemStack leftPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, false);
|
ItemStack leftPouchStack = ScoutUtil.findBagItem(this.client.player, BagType.POUCH, false);
|
||||||
if (!leftPouchStack.isEmpty()) {
|
if (!leftPouchStack.isEmpty()) {
|
||||||
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
BaseBagItem bagItem = (BaseBagItem) leftPouchStack.getItem();
|
||||||
int slots = bagItem.getSlotCount();
|
int slots = bagItem.getSlotCount();
|
||||||
|
|
||||||
int columns = (int) Math.ceil(slots / 3);
|
int columns = (int) Math.ceil(slots / 3);
|
||||||
|
|
||||||
// Realign as best we can when "Keep crafting screens centered" is enabled in Better Recipe Book
|
// Realign as best we can when "Keep crafting screens centered" is enabled in Better Recipe Book
|
||||||
if (this.leftOffset != 86) {
|
if (this.leftOffset != 86) {
|
||||||
int diff = this.leftOffset - 86;
|
int diff = this.leftOffset - 86;
|
||||||
x -= diff;
|
x -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
x += 18 * columns;
|
x += 18 * columns;
|
||||||
|
|
||||||
callbackInfo.setReturnValue(x);
|
callbackInfo.setReturnValue(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public boolean isOpen() {
|
public boolean isOpen() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue