From 99ae602ca5fa309e1d70b581b0b1ef7297ff492b Mon Sep 17 00:00:00 2001 From: zyxkad Date: Fri, 14 Jun 2024 09:17:43 -0600 Subject: [PATCH 01/17] clear owner after put memory card into inventory manager resolve IntelligenceModding/Advanced-Peripherals-Features#87 --- .../blockentities/InventoryManagerEntity.java | 52 ++++++++++++++++--- .../common/items/MemoryCardItem.java | 19 ++++--- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java b/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java index fad6ce3d7..e3a376a08 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java +++ b/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java @@ -8,6 +8,7 @@ import de.srendi.advancedperipherals.common.setup.BlockEntityTypes; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -15,11 +16,15 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.server.ServerLifecycleHooks; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.UUID; public class InventoryManagerEntity extends PeripheralBlockEntity implements IInventoryBlock { + private UUID owner = null; + public InventoryManagerEntity(BlockPos pos, BlockState state) { super(BlockEntityTypes.INVENTORY_MANAGER.get(), pos, state); } @@ -45,21 +50,52 @@ public boolean canPlaceItemThroughFace(int index, @NotNull ItemStack itemStackIn return itemStackIn.getItem() instanceof MemoryCardItem; } + @Override + public void setItem(int index, @NotNull ItemStack stack) { + if (stack.getItem() instanceof MemoryCardItem && stack.hasTag() && stack.getTag().contains("ownerId")) { + UUID owner = stack.getTag().getUUID("ownerId"); + this.owner = owner; + stack.getTag().remove("ownerId"); + stack.getTag().remove("owner"); + } else { + this.owner = null; + } + super.setItem(index, stack); + } + @NotNull @Override public Component getDisplayName() { return Component.translatable("block.advancedperipherals.inventory_manager"); } + @Override + public void load(CompoundTag data) { + if (data.contains("ownerId")) { + this.owner = data.getUUID("ownerId"); + } + super.load(data); + // Fresh the memory card for backward compatibility + this.setItem(0, this.getItem(0)); + } + + @Override + public void saveAdditional(CompoundTag data) { + super.saveAdditional(data); + if (this.owner != null) { + data.putUUID("ownerId", this.owner); + } + } + public Player getOwnerPlayer() { - //Checks if the tile entity has an item in his inventory - if (items.get(0).isEmpty()) return null; - ItemStack stack = items.get(0); - //Checks if the item contains the owner name - if (!stack.getOrCreateTag().contains("owner")) return null; - //Loop through all players and check if the player is online - for (Player entity : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { - if (entity.getName().getString().equals(stack.getOrCreateTag().getString("owner"))) return entity; + if (this.owner == null) { + return null; + } + // Loop through all players and check if the player is online + for (Player player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { + if (player.getUUID().equals(this.owner)) { + return player; + } } return null; } diff --git a/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java b/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java index 030862818..5a4d51344 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java +++ b/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java @@ -3,6 +3,7 @@ import de.srendi.advancedperipherals.common.configuration.APConfig; import de.srendi.advancedperipherals.common.items.base.BaseItem; import de.srendi.advancedperipherals.common.util.EnumColor; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; @@ -28,21 +29,27 @@ public boolean isEnabled() { @Override public void appendHoverText(ItemStack stack, @Nullable Level levelIn, List tooltip, TooltipFlag flagIn) { super.appendHoverText(stack, levelIn, tooltip, flagIn); - if (stack.getOrCreateTag().contains("owner")) - tooltip.add(EnumColor.buildTextComponent(Component.translatable("item.advancedperipherals.tooltip.memory_card.bound", stack.getOrCreateTag().getString("owner")))); - + CompoundTag data = stack.getOrCreateTag(); + // TODO: remove the owner name field + if (data.contains("ownerId") && data.contains("owner")) { + tooltip.add(EnumColor.buildTextComponent(Component.translatable("item.advancedperipherals.tooltip.memory_card.bound", data.getString("owner")))); + } } @Override public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { if (!worldIn.isClientSide) { ItemStack stack = playerIn.getItemInHand(handIn); - if (stack.getOrCreateTag().contains("owner")) { + CompoundTag data = stack.getOrCreateTag(); + // TODO: remove the owner name field + if (data.contains("ownerId") || data.contains("owner")) { playerIn.displayClientMessage(Component.translatable("text.advancedperipherals.removed_player"), true); - stack.getOrCreateTag().remove("owner"); + data.remove("ownerId"); + data.remove("owner"); } else { playerIn.displayClientMessage(Component.translatable("text.advancedperipherals.added_player"), true); - stack.getOrCreateTag().putString("owner", playerIn.getName().getString()); + data.putUUID("ownerId", playerIn.getUUID()); + data.putString("owner", playerIn.getName().getString()); } } return super.use(worldIn, playerIn, handIn); From 006c6c5947bfa21181dd6bb3b54658296204b31f Mon Sep 17 00:00:00 2001 From: zyxkad Date: Tue, 18 Jun 2024 14:58:31 -0600 Subject: [PATCH 02/17] improve TODO comment and player lookup logic --- .../blocks/blockentities/InventoryManagerEntity.java | 9 ++------- .../advancedperipherals/common/items/MemoryCardItem.java | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java b/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java index e3a376a08..c973be0ae 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java +++ b/src/main/java/de/srendi/advancedperipherals/common/blocks/blockentities/InventoryManagerEntity.java @@ -91,12 +91,7 @@ public Player getOwnerPlayer() { if (this.owner == null) { return null; } - // Loop through all players and check if the player is online - for (Player player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers()) { - if (player.getUUID().equals(this.owner)) { - return player; - } - } - return null; + Player player = ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayer(this.owner); + return player; } } diff --git a/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java b/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java index 5a4d51344..0bd126d4b 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java +++ b/src/main/java/de/srendi/advancedperipherals/common/items/MemoryCardItem.java @@ -30,7 +30,7 @@ public boolean isEnabled() { public void appendHoverText(ItemStack stack, @Nullable Level levelIn, List tooltip, TooltipFlag flagIn) { super.appendHoverText(stack, levelIn, tooltip, flagIn); CompoundTag data = stack.getOrCreateTag(); - // TODO: remove the owner name field + // TODO <0.8>: remove the owner name field if (data.contains("ownerId") && data.contains("owner")) { tooltip.add(EnumColor.buildTextComponent(Component.translatable("item.advancedperipherals.tooltip.memory_card.bound", data.getString("owner")))); } @@ -41,7 +41,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In if (!worldIn.isClientSide) { ItemStack stack = playerIn.getItemInHand(handIn); CompoundTag data = stack.getOrCreateTag(); - // TODO: remove the owner name field + // TODO <0.8>: remove the owner name field if (data.contains("ownerId") || data.contains("owner")) { playerIn.displayClientMessage(Component.translatable("text.advancedperipherals.removed_player"), true); data.remove("ownerId"); From 44c982aa16c42df39506c834401a4acdfe0a3ad6 Mon Sep 17 00:00:00 2001 From: lonevox Date: Fri, 28 Jun 2024 20:03:07 +1200 Subject: [PATCH 03/17] Add wandering trader config --- .../common/configuration/WorldConfig.java | 2 ++ .../common/village/VillagerTrades.java | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java b/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java index de050af71..08ca73158 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java +++ b/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java @@ -10,6 +10,7 @@ public class WorldConfig implements IAPConfig { public final ForgeConfigSpec.BooleanValue enableVillagerStructures; public final ForgeConfigSpec.BooleanValue givePlayerBookOnJoin; public final ForgeConfigSpec.IntValue villagerStructureWeight; + public final ForgeConfigSpec.BooleanValue enableWanderingTraderTrades; private final ForgeConfigSpec configSpec; public WorldConfig() { @@ -20,6 +21,7 @@ public WorldConfig() { enableVillagerStructures = builder.comment("Enable the villager structures for the computer scientist.").define("enableVillagerStructures", true); givePlayerBookOnJoin = builder.comment("Gives the ap documentation to new players.").define("givePlayerBookOnJoin", true); villagerStructureWeight = builder.comment("The weight of the villager structures.").defineInRange("villagerStructureWeight", 10, 0, 16000); + enableWanderingTraderTrades = builder.comment("Enable new wandering trader trades.").define("enableWanderingVillagerTrades", true); builder.pop(); configSpec = builder.build(); diff --git a/src/main/java/de/srendi/advancedperipherals/common/village/VillagerTrades.java b/src/main/java/de/srendi/advancedperipherals/common/village/VillagerTrades.java index 539e5089d..c53d97ab9 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/village/VillagerTrades.java +++ b/src/main/java/de/srendi/advancedperipherals/common/village/VillagerTrades.java @@ -2,6 +2,7 @@ import dan200.computercraft.shared.Registry; import de.srendi.advancedperipherals.AdvancedPeripherals; +import de.srendi.advancedperipherals.common.configuration.APConfig; import de.srendi.advancedperipherals.common.setup.Blocks; import de.srendi.advancedperipherals.common.setup.CCRegistration; import de.srendi.advancedperipherals.common.setup.Items; @@ -19,12 +20,14 @@ public class VillagerTrades { @SubscribeEvent public static void registerWanderingTrade(WandererTradesEvent event) { - TradeBuilder.createTrade(event, Blocks.PERIPHERAL_CASING.get(), VillagerTrade.Type.ITEM_FOR_EMERALD, 1, 1) - .setMaxUses(8) - .build(); - TradeBuilder.createTrade(event, Registry.ModBlocks.TURTLE_ADVANCED.get(), VillagerTrade.Type.ITEM_FOR_EMERALD, 2, 1) - .setMaxUses(8) - .build(); + if (APConfig.WORLD_CONFIG.enableWanderingTraderTrades.get()) { + TradeBuilder.createTrade(event, Blocks.PERIPHERAL_CASING.get(), VillagerTrade.Type.ITEM_FOR_EMERALD, 1, 1) + .setMaxUses(8) + .build(); + TradeBuilder.createTrade(event, Registry.ModBlocks.TURTLE_ADVANCED.get(), VillagerTrade.Type.ITEM_FOR_EMERALD, 2, 1) + .setMaxUses(8) + .build(); + } } @SubscribeEvent From b11b42b8005f62f85d8df45148a50e0d2b59e2dd Mon Sep 17 00:00:00 2001 From: lonevox Date: Fri, 28 Jun 2024 20:21:23 +1200 Subject: [PATCH 04/17] Fix config definition --- .../advancedperipherals/common/configuration/WorldConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java b/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java index 08ca73158..8ba81c97c 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java +++ b/src/main/java/de/srendi/advancedperipherals/common/configuration/WorldConfig.java @@ -21,7 +21,7 @@ public WorldConfig() { enableVillagerStructures = builder.comment("Enable the villager structures for the computer scientist.").define("enableVillagerStructures", true); givePlayerBookOnJoin = builder.comment("Gives the ap documentation to new players.").define("givePlayerBookOnJoin", true); villagerStructureWeight = builder.comment("The weight of the villager structures.").defineInRange("villagerStructureWeight", 10, 0, 16000); - enableWanderingTraderTrades = builder.comment("Enable new wandering trader trades.").define("enableWanderingVillagerTrades", true); + enableWanderingTraderTrades = builder.comment("Enable new wandering trader trades.").define("enableWanderingTraderTrades", true); builder.pop(); configSpec = builder.build(); From 2ae7cff625e96a3bd2b99dfec82a01e67f40a78d Mon Sep 17 00:00:00 2001 From: zyxkad Date: Tue, 9 Jul 2024 10:45:14 -0600 Subject: [PATCH 05/17] fix useOnBlock will returns PASS on some specific case fix #636 --- .../common/util/fakeplayer/APFakePlayer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java index 405713ddb..d6954e640 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java @@ -242,27 +242,27 @@ public InteractionResult use(boolean skipEntity, boolean skipBlock, @Nullable Pr if (event.isCanceled()) { return event.getCancellationResult(); } - boolean denied = event.getUseItem() == Event.Result.DENY; - if (!denied) { + boolean usedItem = event.getUseItem() != Event.Result.DENY; + boolean usedOnBlock = event.getUseBlock() != Event.Result.DENY; + if (usedItem) { InteractionResult result = stack.onItemUseFirst(new UseOnContext(level, this, InteractionHand.MAIN_HAND, stack, blockHit)); if (result != InteractionResult.PASS) { return result; } boolean bypass = getMainHandItem().doesSneakBypassUse(level, pos, this); - if (isShiftKeyDown() || bypass || event.getUseBlock() == Event.Result.ALLOW) { + if (isShiftKeyDown() || bypass || usedOnBlock) { InteractionResult useType = gameMode.useItemOn(this, level, stack, InteractionHand.MAIN_HAND, blockHit); - if (useType == InteractionResult.SUCCESS) { - return InteractionResult.SUCCESS; + if (useType.consumesAction()) { + return useType; } } } - if (stack.isEmpty() || getCooldowns().isOnCooldown(stack.getItem())) { + if (!stack.isEmpty() && getCooldowns().isOnCooldown(stack.getItem())) { return InteractionResult.PASS; } - if (stack.getItem() instanceof BlockItem blockItem) { Block block = blockItem.getBlock(); if (block instanceof CommandBlock || block instanceof StructureBlock) { @@ -270,12 +270,12 @@ public InteractionResult use(boolean skipEntity, boolean skipBlock, @Nullable Pr } } - if (denied) { + if (!usedItem && !usedOnBlock) { return InteractionResult.PASS; } ItemStack copyBeforeUse = stack.copy(); - InteractionResult result = stack.useOn(new UseOnContext(level, this, InteractionHand.MAIN_HAND, copyBeforeUse, blockHit)); + InteractionResult result = stack.useOn(new UseOnContext(level, this, InteractionHand.MAIN_HAND, stack, blockHit)); if (stack.isEmpty()) { ForgeEventFactory.onPlayerDestroyItem(this, copyBeforeUse, InteractionHand.MAIN_HAND); } From f2b5793ad304b40164d0082836bafb5c92c4e331 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sat, 13 Jul 2024 00:14:02 -0600 Subject: [PATCH 06/17] fix get inevntory on powah will always returns nil fix #645 --- .../addons/powah/FurnatorIntegration.java | 9 ++++- .../addons/powah/ReactorIntegration.java | 40 +++++++++++++------ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/powah/FurnatorIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/powah/FurnatorIntegration.java index c9522f4a9..f1f7a5771 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/powah/FurnatorIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/powah/FurnatorIntegration.java @@ -2,6 +2,7 @@ import dan200.computercraft.api.lua.LuaFunction; import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; +import de.srendi.advancedperipherals.common.util.LuaConverter; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import org.jetbrains.annotations.NotNull; @@ -44,7 +45,11 @@ public final double getCarbon() { } @LuaFunction(mainThread = true) - public final ItemStack getInventory() { - return blockEntity.getInventory().getStackInSlot(1); + public final Object getInventory() { + ItemStack stack = blockEntity.getInventory().getStackInSlot(1); + if (stack.isEmpty()) { + return null; + } + return LuaConverter.stackToObject(stack); } } diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/powah/ReactorIntegration.java b/src/main/java/de/srendi/advancedperipherals/common/addons/powah/ReactorIntegration.java index d8f1a9db8..150911521 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/powah/ReactorIntegration.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/powah/ReactorIntegration.java @@ -2,6 +2,7 @@ import dan200.computercraft.api.lua.LuaFunction; import de.srendi.advancedperipherals.lib.peripherals.BlockEntityIntegrationPeripheral; +import de.srendi.advancedperipherals.common.util.LuaConverter; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import org.jetbrains.annotations.NotNull; @@ -73,23 +74,38 @@ public final double getTemperature() { } @LuaFunction(mainThread = true) - public final ItemStack getInventoryUraninite() { - if (blockEntity.core().isEmpty()) - return ItemStack.EMPTY; - return blockEntity.core().get().getInventory().getStackInSlot(1); + public final Object getInventoryUraninite() { + if (blockEntity.core().isEmpty()) { + return null; + } + ItemStack stack = blockEntity.core().get().getStack(1); + if (stack.isEmpty()) { + return null; + } + return LuaConverter.stackToObject(stack); } @LuaFunction(mainThread = true) - public final ItemStack getInventoryRedstone() { - if (blockEntity.core().isEmpty()) - return ItemStack.EMPTY; - return blockEntity.core().get().getInventory().getStackInSlot(3); + public final Object getInventoryRedstone() { + if (blockEntity.core().isEmpty()) { + return null; + } + ItemStack stack = blockEntity.core().get().getStack(3); + if (stack.isEmpty()) { + return null; + } + return LuaConverter.stackToObject(stack); } @LuaFunction(mainThread = true) - public final ItemStack getInventoryCarbon() { - if (blockEntity.core().isEmpty()) - return ItemStack.EMPTY; - return blockEntity.core().get().getInventory().getStackInSlot(2); + public final Object getInventoryCarbon() { + if (blockEntity.core().isEmpty()) { + return null; + } + ItemStack stack = blockEntity.core().get().getStack(2); + if (stack.isEmpty()) { + return null; + } + return LuaConverter.stackToObject(stack); } } From e07ec4b596c1b83ddf092425f87c2951ab070d74 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sun, 21 Jul 2024 10:31:01 -0600 Subject: [PATCH 07/17] fix filters --- .../common/util/inventory/FluidFilter.java | 13 ++++++------- .../common/util/inventory/ItemFilter.java | 13 ++++++------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/inventory/FluidFilter.java b/src/main/java/de/srendi/advancedperipherals/common/util/inventory/FluidFilter.java index faad46a1f..393fac7da 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/inventory/FluidFilter.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/inventory/FluidFilter.java @@ -103,16 +103,15 @@ public boolean test(FluidStack stack) { return fingerprint.equals(testFingerprint); } - // If the filter does not have nbt values, a tag or a fingerprint, just test if the items are the same - if (fluid != Fluids.EMPTY) { - if (tag == null && nbt == null && fingerprint.isEmpty()) - return stack.getFluid().isSame(fluid); + if (fluid != Fluids.EMPTY && !stack.getFluid().isSame(fluid)) { + return false; } - if (tag != null && !stack.getFluid().is(tag)) + if (tag != null && !stack.getFluid().is(tag)) { return false; - if (nbt != null && !stack.getOrCreateTag().equals(nbt) && (fluid == Fluids.EMPTY || stack.getFluid().isSame(fluid))) + } + if (nbt != null && !stack.getOrCreateTag().equals(nbt)) { return false; - + } return true; } diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/inventory/ItemFilter.java b/src/main/java/de/srendi/advancedperipherals/common/util/inventory/ItemFilter.java index bd943c892..f8a8074cf 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/inventory/ItemFilter.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/inventory/ItemFilter.java @@ -118,16 +118,15 @@ public boolean test(ItemStack stack) { return fingerprint.equals(testFingerprint); } - // If the filter does not have nbt values, a tag or a fingerprint, just test if the items are the same - if (item != Items.AIR) { - if (tag == null && nbt == null && fingerprint.isEmpty()) - return stack.is(item); + if (item != Items.AIR && !stack.is(item)) { + return false; } - if (tag != null && !stack.is(tag)) + if (tag != null && !stack.is(tag)) { return false; - if (nbt != null && !stack.getOrCreateTag().equals(nbt) && (item == Items.AIR || stack.is(item))) + } + if (nbt != null && !stack.getOrCreateTag().equals(nbt)) { return false; - + } return true; } From 7ac8f696911aea506812f2cd2a206d3970de3b6d Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sun, 21 Jul 2024 11:04:55 -0600 Subject: [PATCH 08/17] remove some unnecessary ItemStack.copy()s --- .../peripheral/RsBridgePeripheral.java | 2 +- .../addons/refinedstorage/RefinedStorage.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java index a45b81086..b65ce5135 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java @@ -74,7 +74,7 @@ public final MethodResult listCraftableItems() { return notConnected(); List items = new ArrayList<>(); - RefinedStorage.getCraftableItems(getNetwork()).forEach(item -> items.add(RefinedStorage.getObjectFromStack(item.copy(), getNetwork()))); + RefinedStorage.getCraftableItems(getNetwork()).forEach(item -> items.add(RefinedStorage.getObjectFromStack(item, getNetwork()))); return MethodResult.of(items); } diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RefinedStorage.java b/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RefinedStorage.java index 9e13e7d8d..7f58105d6 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RefinedStorage.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RefinedStorage.java @@ -55,7 +55,7 @@ public static ItemStack findStackFromStack(INetwork network, @Nullable ICrafting public static ItemStack findStackFromFilter(INetwork network, @Nullable ICraftingManager crafting, ItemFilter filter) { for (StackListEntry temp : network.getItemStorageCache().getList().getStacks()) { - if (filter.test(temp.getStack().copy())) + if (filter.test(temp.getStack())) return temp.getStack().copy(); } @@ -64,7 +64,7 @@ public static ItemStack findStackFromFilter(INetwork network, @Nullable ICraftin for (ICraftingPattern pattern : crafting.getPatterns()) { for(ItemStack stack : pattern.getOutputs()) { - if (filter.test(stack.copy())) + if (filter.test(stack)) return stack.copy(); } } @@ -78,7 +78,7 @@ public static FluidStack findFluidFromStack(INetwork network, @Nullable ICraftin public static FluidStack findFluidFromFilter(INetwork network, @Nullable ICraftingManager crafting, FluidFilter filter) { for (StackListEntry temp : network.getFluidStorageCache().getList().getStacks()) { - if (filter.test(temp.getStack().copy())) + if (filter.test(temp.getStack())) return temp.getStack().copy(); } @@ -165,7 +165,7 @@ public static Object getObjectFromPattern(ICraftingPattern pattern, INetwork net List outputsList = pattern.getOutputs(); List outputs = new ArrayList<>(); for (ItemStack itemStack : outputsList) - outputs.add(getObjectFromStack(itemStack.copy(), network)); + outputs.add(getObjectFromStack(itemStack, network)); map.put("outputs", outputs); @@ -174,7 +174,7 @@ public static Object getObjectFromPattern(ICraftingPattern pattern, INetwork net for (List singleInputList : inputList) { List inputs1 = new ArrayList<>(); for (ItemStack stack : singleInputList) - inputs1.add(getObjectFromStack(stack.copy(), network)); + inputs1.add(getObjectFromStack(stack, network)); inputs.add(inputs1); } @@ -182,7 +182,7 @@ public static Object getObjectFromPattern(ICraftingPattern pattern, INetwork net if (!pattern.isProcessing()) { List byproductsList = pattern.getByproducts(); for (ItemStack stack : byproductsList) - byproducts.add(getObjectFromStack(stack.copy(), network)); + byproducts.add(getObjectFromStack(stack, network)); } map.put("inputs", inputs); @@ -228,7 +228,7 @@ public static Map getObjectFromFluid(@Nullable FluidStack fluidS public static Object getItem(INetwork network, ItemStack item) { for (ItemStack itemStack : getItems(network)) { if (itemStack.sameItem(item) && Objects.equals(itemStack.getTag(), item.getTag())) - return getObjectFromStack(itemStack.copy(), network); + return getObjectFromStack(itemStack, network); } return null; } From a80ac92f2ed8d27048f30317d09647fa500bd449 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sun, 21 Jul 2024 11:27:56 -0600 Subject: [PATCH 09/17] return nil instead of empty item for getItem --- .../peripheral/MeBridgePeripheral.java | 5 ++++- .../peripheral/RsBridgePeripheral.java | 13 ++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java index 731e451f4..2696ed9ed 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java @@ -420,7 +420,10 @@ public final MethodResult getItem(IArguments arguments) throws LuaException { if (parsedFilter.isEmpty()) return MethodResult.of(null, "EMPTY_FILTER"); - return MethodResult.of(AppEngApi.getObjectFromStack(AppEngApi.findAEStackFromFilter(monitor, getCraftingService(), parsedFilter), getCraftingService())); + Pair item = AppEngApi.findAEStackFromFilter(monitor, getCraftingService(), parsedFilter) + if (item.getRight().isEmpty()) + return MethodResult.of(null, "NOT_FOUND"); + return MethodResult.of(AppEngApi.getObjectFromStack(item, getCraftingService())); } @LuaFunction(mainThread = true) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java index b65ce5135..f9466bf80 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java @@ -296,10 +296,13 @@ public final MethodResult getItem(IArguments arguments) throws LuaException { return notConnected(); Pair filter = ItemFilter.parse(arguments.getTable(0)); - if (filter.rightPresent()) + if (filter.rightPresent()) return MethodResult.of(null, filter.getRight()); - return MethodResult.of(RefinedStorage.getObjectFromStack(RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()), getNetwork())); + ItemStack item = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()) + if (item.isEmpty()) + return MethodResult.of(null, "NOT_FOUND"); + return MethodResult.of(RefinedStorage.getObjectFromStack(item, getNetwork())); } @LuaFunction(mainThread = true) @@ -313,7 +316,7 @@ public final MethodResult craftItem(IArguments arguments) throws LuaException { return MethodResult.of(null, filter.getRight()); ItemStack stack = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()); - if (stack == null) + if (stack.isEmpty()) return MethodResult.of(null, "NOT_CRAFTABLE"); ICalculationResult result = getNetwork().getCraftingManager().create(stack, filter.getLeft().getCount()); @@ -334,7 +337,7 @@ public final MethodResult craftFluid(IArguments arguments) throws LuaException { return MethodResult.of(null, filter.getRight()); FluidStack stack = RefinedStorage.findFluidFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()); - if (stack == null) + if (stack.isEmpty()) return MethodResult.of(null, "NOT_CRAFTABLE"); ICalculationResult result = getNetwork().getCraftingManager().create(stack, filter.getLeft().getCount()); @@ -355,7 +358,7 @@ public final MethodResult isItemCrafting(IArguments arguments) throws LuaExcepti return MethodResult.of(null, filter.getRight()); ItemStack stack = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()); - if (stack == null) + if (stack.isEmpty()) return MethodResult.of(null, "NOT_CRAFTABLE"); for (ICraftingTask task : getNetwork().getCraftingManager().getTasks()) { From e61c391ec01254d3845f636bb6e894ed92e6056a Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sun, 21 Jul 2024 13:42:01 -0600 Subject: [PATCH 10/17] remove trailing space --- .../addons/computercraft/peripheral/RsBridgePeripheral.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java index f9466bf80..ee71949cb 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java @@ -296,7 +296,7 @@ public final MethodResult getItem(IArguments arguments) throws LuaException { return notConnected(); Pair filter = ItemFilter.parse(arguments.getTable(0)); - if (filter.rightPresent()) + if (filter.rightPresent()) return MethodResult.of(null, filter.getRight()); ItemStack item = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()) From a7c52ed1b2c9d3211ee4eb7633d15c4ddc783809 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Mon, 19 Aug 2024 13:42:46 -0600 Subject: [PATCH 11/17] make some change to fake player --- .../common/util/fakeplayer/APFakePlayer.java | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java index d6954e640..795a7fb3e 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java @@ -318,7 +318,7 @@ public HitResult findHit(boolean skipEntity, boolean skipBlock, @Nullable Predic if (skipEntity) return blockHit; - List entities = level.getEntities(this, getBoundingBox().expandTowards(look.x * range, look.y * range, look.z * range).inflate(1, 1, 1), collidablePredicate); + List entities = level.getEntities(this, getBoundingBox().expandTowards(look.x * range, look.y * range, look.z * range).inflate(1), collidablePredicate); LivingEntity closestEntity = null; Vec3 closestVec = null; @@ -328,29 +328,20 @@ public HitResult findHit(boolean skipEntity, boolean skipBlock, @Nullable Predic continue; // Add litter bigger that just pick radius AABB box = entityHit.getBoundingBox().inflate(entityHit.getPickRadius() + 0.5); - Optional clipResult = box.clip(origin, target); - if (box.contains(origin)) { - if (closestDistance >= 0.0D) { - closestEntity = (LivingEntity) entityHit; - closestVec = clipResult.orElse(origin); - closestDistance = 0.0D; - } - } else if (clipResult.isPresent()) { + closestEntity = (LivingEntity) entityHit; + closestVec = clipResult.orElse(origin); + closestDistance = 0; + break; + } + Optional clipResult = box.clip(origin, target); + if (clipResult.isPresent()) { Vec3 clipVec = clipResult.get(); double distance = origin.distanceTo(clipVec); - - if (distance < closestDistance || closestDistance == 0.0D) { - if (entityHit == entityHit.getRootVehicle() && !entityHit.canRiderInteract()) { - if (closestDistance == 0.0D) { - closestEntity = (LivingEntity) entityHit; - closestVec = clipVec; - } - } else { - closestEntity = (LivingEntity) entityHit; - closestVec = clipVec; - closestDistance = distance; - } + if (distance < closestDistance) { + closestEntity = (LivingEntity) entityHit; + closestVec = clipVec; + closestDistance = distance; } } } From fc79c30f5b6a17cb90b2e2464b965c9a2383b529 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Sat, 24 Aug 2024 13:14:57 -0600 Subject: [PATCH 12/17] fix entity operation does not have enough reach range than expected --- .../plugins/AutomataEntityHandPlugin.java | 2 +- .../plugins/AutomataSoulFeedingPlugin.java | 2 +- .../common/util/fakeplayer/APFakePlayer.java | 61 +++++++++++++------ 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataEntityHandPlugin.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataEntityHandPlugin.java index 14dd9e6f1..09731f3e2 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataEntityHandPlugin.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataEntityHandPlugin.java @@ -56,7 +56,7 @@ public final MethodResult useOnAnimal(@NotNull IArguments arguments) throws LuaE if (automataCore.hasAttribute(AutomataCorePeripheral.ATTR_STORING_TOOL_DURABILITY)) selectedTool.setDamageValue(previousDamageValue); - return MethodResult.of(true, result.toString()); + return MethodResult.of(result.consumesAction(), result.toString()); }); } diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataSoulFeedingPlugin.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataSoulFeedingPlugin.java index 79368507e..6f4035522 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataSoulFeedingPlugin.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataSoulFeedingPlugin.java @@ -24,7 +24,7 @@ public final MethodResult feedSoul() { InteractionResult result = owner.withPlayer(APFakePlayer::useOnEntity); automataCore.addRotationCycle(3); - return MethodResult.of(true, result.toString()); + return MethodResult.of(result.consumesAction(), result.toString()); } @Override diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java index 795a7fb3e..a98e8fb71 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java @@ -92,7 +92,6 @@ public boolean canAttack(@NotNull LivingEntity livingEntity) { public void openTextEdit(@NotNull SignBlockEntity sign) { } - @Override public boolean isSilent() { return true; @@ -322,33 +321,55 @@ public HitResult findHit(boolean skipEntity, boolean skipBlock, @Nullable Predic LivingEntity closestEntity = null; Vec3 closestVec = null; - double closestDistance = range; + double closestDistance = blockHit.getType() == HitResult.Type.MISS ? range * range : distanceToSqr(blockHit.getLocation()); for (Entity entityHit : entities) { - if (!(entityHit instanceof LivingEntity) || entityFilter != null && !entityFilter.test(entityHit)) + if (!(entityHit instanceof LivingEntity entity)) { + continue; + } + // TODO: maybe let entityFilter returns the priority of the entity, instead of only returns the closest one. + if (entityFilter != null && !entityFilter.test(entity)) { + continue; + } + + // Removed a lot logic here to make Automata cores interact like a player. + // However, the results for some edge cases may change. Need more review and tests. + + // Hit vehicle before passenger + if (entity.isPassenger()) { continue; - // Add litter bigger that just pick radius - AABB box = entityHit.getBoundingBox().inflate(entityHit.getPickRadius() + 0.5); + } + + AABB box = entity.getBoundingBox(); + Vec3 clipVec; if (box.contains(origin)) { - closestEntity = (LivingEntity) entityHit; - closestVec = clipResult.orElse(origin); - closestDistance = 0; - break; + clipVec = origin; + } else { + clipVec = box.clip(origin, target).orElse(null); + if (clipVec == null) { + continue; + } + } + double distance = origin.distanceToSqr(clipVec); + // Ignore small enough distance + if (distance <= 1e-6) { + distance = 0; } - Optional clipResult = box.clip(origin, target); - if (clipResult.isPresent()) { - Vec3 clipVec = clipResult.get(); - double distance = origin.distanceTo(clipVec); - if (distance < closestDistance) { - closestEntity = (LivingEntity) entityHit; - closestVec = clipVec; - closestDistance = distance; + if (distance > closestDistance) { + continue; + } + if (distance == closestDistance && closestEntity != null) { + // Hit larger entity before smaller + if (closestEntity.getBoundingBox().getSize() >= box.getSize()) { + continue; } } + closestEntity = entity; + closestVec = clipVec; + closestDistance = distance; } - if (closestEntity != null && closestDistance <= range && (blockHit.getType() == HitResult.Type.MISS || distanceToSqr(blockHit.getLocation()) > closestDistance * closestDistance)) { + if (closestEntity != null) { return new EntityHitResult(closestEntity, closestVec); - } else { - return blockHit; } + return blockHit; } } From 47af5f964e8b04946f29564db5f0af19b4f6537f Mon Sep 17 00:00:00 2001 From: endi Date: Wed, 28 Aug 2024 14:02:07 +0200 Subject: [PATCH 13/17] Fixed Checkstyle violation --- .../advancedperipherals/common/util/fakeplayer/APFakePlayer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java index a98e8fb71..a947a4c53 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java +++ b/src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java @@ -44,7 +44,6 @@ import java.lang.ref.WeakReference; import java.util.List; -import java.util.Optional; import java.util.UUID; import java.util.function.Function; import java.util.function.Predicate; From 2f3ee32517424b21bde92805a6411b96b232d176 Mon Sep 17 00:00:00 2001 From: endi Date: Sat, 7 Sep 2024 22:37:24 +0200 Subject: [PATCH 14/17] Fixed ClassCastException for the `listCells` function --- .../common/addons/appliedenergistics/AppEngApi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java index df44e2c86..60d5d9d02 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java @@ -562,11 +562,11 @@ public static List listCells(IGridNode node) { if (!iterator.hasNext()) return items; while (iterator.hasNext()) { - DriveBlockEntity entity = (DriveBlockEntity) iterator.next().getService(IStorageProvider.class); - if (entity == null) + IStorageProvider entity = iterator.next().getService(IStorageProvider.class); + if (entity == null || !(entity instanceof DriveBlockEntity drive)) continue; - InternalInventory inventory = entity.getInternalInventory(); + InternalInventory inventory = drive.getInternalInventory(); for (int i = 0; i < inventory.size(); i++) { ItemStack stack = inventory.getStackInSlot(i); From 647fd5b4192fa7dc71b0babe77e7bbed85c2eb35 Mon Sep 17 00:00:00 2001 From: Srendi Date: Sun, 6 Oct 2024 15:26:57 +0200 Subject: [PATCH 15/17] [#660] Fixed blank nbt when using some inventory manager functions --- .../computercraft/peripheral/InventoryManagerPeripheral.java | 4 ++-- .../addons/computercraft/peripheral/MeBridgePeripheral.java | 4 ++-- .../addons/computercraft/peripheral/RsBridgePeripheral.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/InventoryManagerPeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/InventoryManagerPeripheral.java index 66abb49fb..1a8002bd0 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/InventoryManagerPeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/InventoryManagerPeripheral.java @@ -189,12 +189,12 @@ public final int getFreeSlot() throws LuaException { @LuaFunction(mainThread = true) public final Map getItemInHand() throws LuaException { - return LuaConverter.stackToObject(getOwnerPlayer().getMainHandItem()); + return LuaConverter.stackToObject(getOwnerPlayer().getMainHandItem().copy()); } @LuaFunction(mainThread = true) public final Map getItemInOffHand() throws LuaException { - return LuaConverter.stackToObject(getOwnerPlayer().getOffhandItem()); + return LuaConverter.stackToObject(getOwnerPlayer().getOffhandItem().copy()); } private Player getOwnerPlayer() throws LuaException { diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java index 2696ed9ed..216e27702 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/MeBridgePeripheral.java @@ -420,8 +420,8 @@ public final MethodResult getItem(IArguments arguments) throws LuaException { if (parsedFilter.isEmpty()) return MethodResult.of(null, "EMPTY_FILTER"); - Pair item = AppEngApi.findAEStackFromFilter(monitor, getCraftingService(), parsedFilter) - if (item.getRight().isEmpty()) + Pair item = AppEngApi.findAEStackFromFilter(monitor, getCraftingService(), parsedFilter); + if (item.getRight() == null && item.getLeft() == 0) return MethodResult.of(null, "NOT_FOUND"); return MethodResult.of(AppEngApi.getObjectFromStack(item, getCraftingService())); } diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java index ee71949cb..87fd927b7 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RsBridgePeripheral.java @@ -299,7 +299,7 @@ public final MethodResult getItem(IArguments arguments) throws LuaException { if (filter.rightPresent()) return MethodResult.of(null, filter.getRight()); - ItemStack item = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()) + ItemStack item = RefinedStorage.findStackFromFilter(getNetwork(), getNetwork().getCraftingManager(), filter.getLeft()); if (item.isEmpty()) return MethodResult.of(null, "NOT_FOUND"); return MethodResult.of(RefinedStorage.getObjectFromStack(item, getNetwork())); From b969a1be9ad51ddf966229e37158974aa69971ee Mon Sep 17 00:00:00 2001 From: Srendi Date: Sun, 6 Oct 2024 15:31:01 +0200 Subject: [PATCH 16/17] Removed redundant null check --- .../common/addons/appliedenergistics/AppEngApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java index 60d5d9d02..3bc0c6d8e 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AppEngApi.java @@ -563,7 +563,7 @@ public static List listCells(IGridNode node) { if (!iterator.hasNext()) return items; while (iterator.hasNext()) { IStorageProvider entity = iterator.next().getService(IStorageProvider.class); - if (entity == null || !(entity instanceof DriveBlockEntity drive)) + if (!(entity instanceof DriveBlockEntity drive)) continue; InternalInventory inventory = drive.getInternalInventory(); From 6888ed52024fb10ef7ba3ccc717e51d125a8febb Mon Sep 17 00:00:00 2001 From: Srendi Date: Sun, 6 Oct 2024 16:29:01 +0200 Subject: [PATCH 17/17] 1.19.2-0.7.37r --- CHANGELOG.md | 14 ++++++++++++++ gradle.properties | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcca9a6e0..dde6f4283 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [1.19.2-0.7.37r] - 2024-10-06 + +### Added +- Wandering Trader config + +### Changed +- Safe the owner of the memory card to the inventory manager after a player places the card into the manager and clear the card after. Resolves a security issue where players could eventually steal memory cards from other players + +### Fixed +- [#660] Fixed that the inventory manager's `getItemInHand` function adds a blank nbt tag to the item +- [#636] Fixed that the automata's `useOnBlock` function will return PASS in some specific case +- [#645] Fixed that the inventory functions for the powah integration would always return nil +- Fixed that some entity operations don't have enough range + ## [1.19.2-0.7.36r] - 2024-06-11 ### Added diff --git a/gradle.properties b/gradle.properties index bc6264c70..26856c7ec 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ mod_id=advancedperipherals minecraft_version=1.19.2 forge_version=43.3.8 loader_version=43 -mod_version=0.7.37r +mod_version=0.7.38r release_type=release mappings_channel=parchment mappings_version=2022.11.27-1.19.2