Skip to content

Commit a32365a

Browse files
authored
Merge pull request #705 from zyxkad/smartglass-patch
allow equip distance detector in smartglasses
2 parents 708c1c7 + 34d9789 commit a32365a

File tree

54 files changed

+718
-401
lines changed

Some content is hidden

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

54 files changed

+718
-401
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
// 1.19.22024-05-28T14:53:16.655934Pocket Computer Upgrades
1+
// 1.19.22025-01-25T19:46:21.23515Pocket Computer Upgrades
22
b672635324c0df354e587efc81d0b19a581eae2f data/advancedperipherals/computercraft/pocket_upgrades/chatty_pocket.json
33
30b8f663613c7ce77048fd69631afcc11a682276 data/advancedperipherals/computercraft/pocket_upgrades/colony_pocket.json
4+
661dc77bd0442bfb2a5ed80cff271071817bb22d data/advancedperipherals/computercraft/pocket_upgrades/distance_pocket.json
45
d4647159c2f2693a9c5e8d12bf740635751d29a8 data/advancedperipherals/computercraft/pocket_upgrades/environment_pocket.json
56
8216a0a7d8ebe3ae738c8fc3626df25eb0a2e07a data/advancedperipherals/computercraft/pocket_upgrades/geoscanner_pocket.json
67
a38aa83593f7ad0ace98e01bb3b5f06f272ef734 data/advancedperipherals/computercraft/pocket_upgrades/player_pocket.json
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// 1.19.2 2025-01-20T07:50:09.44057Languages: en_us
2-
ebf2194b8fece940adb61f1ae317f68799bd498f assets/advancedperipherals/lang/en_us.json
1+
// 1.19.2 2025-01-25T19:46:21.234203Languages: en_us
2+
e858500d72e9279f0fe0e8b2d03f94469c8d1f65 assets/advancedperipherals/lang/en_us.json

src/generated/resources/assets/advancedperipherals/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
"keybind.advancedperipherals.description": "Show Description",
8181
"pocket.advancedperipherals.chatty_pocket": "Chatty",
8282
"pocket.advancedperipherals.colony_pocket": "Colony",
83+
"pocket.advancedperipherals.distance_pocket": "Distance Detector",
8384
"pocket.advancedperipherals.environment_pocket": "Environment",
8485
"pocket.advancedperipherals.geoscanner_pocket": "Geo",
8586
"pocket.advancedperipherals.player_pocket": "Player Detector",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "advancedperipherals:distance_pocket",
3+
"item": "advancedperipherals:distance_detector"
4+
}

src/main/java/de/srendi/advancedperipherals/client/renderer/DistanceDetectorRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public DistanceDetectorRenderer(BlockEntityRendererProvider.Context pContext) {
2828

2929
@Override
3030
public void render(@NotNull DistanceDetectorEntity pBlockEntity, float pPartialTick, @NotNull PoseStack pPoseStack, MultiBufferSource pBufferSource, int pPackedLight, int pPackedOverlay) {
31-
if (pBlockEntity.getLaserVisibility()) {
31+
if (pBlockEntity.getShowLaser()) {
3232
float distance = pBlockEntity.getCurrentDistance();
3333
float[] color = EnumColor.RED.getRgb();
3434
if (distance == -1) {

src/main/java/de/srendi/advancedperipherals/common/addons/APAddons.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,14 @@ public static ItemStack getCurioGlasses(Player player) {
9393
}
9494

9595
public static boolean isBlockOnShip(Level level, BlockPos pos) {
96-
if (!vs2Loaded) {
96+
if (level == null || !vs2Loaded) {
9797
return false;
9898
}
9999
return VSGameUtilsKt.isBlockInShipyard(level, pos);
100100
}
101101

102102
public static Ship getVS2Ship(Level level, BlockPos pos) {
103-
if (!vs2Loaded) {
103+
if (level == null || !vs2Loaded) {
104104
return null;
105105
}
106106
return VSGameUtilsKt.getShipObjectManagingPos(level, pos);

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/BlockEntityPeripheralOwner.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import dan200.computercraft.api.peripheral.IPeripheral;
44
import de.srendi.advancedperipherals.common.blocks.base.BaseBlock;
5-
import de.srendi.advancedperipherals.common.blocks.blockentities.InventoryManagerEntity;
65
import de.srendi.advancedperipherals.common.util.DataStorageUtil;
76
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
87
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralTileEntity;
@@ -12,16 +11,17 @@
1211
import net.minecraft.nbt.CompoundTag;
1312
import net.minecraft.network.chat.Component;
1413
import net.minecraft.world.Nameable;
14+
import net.minecraft.world.entity.Entity;
1515
import net.minecraft.world.entity.player.Player;
1616
import net.minecraft.world.item.ItemStack;
1717
import net.minecraft.world.level.Level;
1818
import net.minecraft.world.level.block.entity.BlockEntity;
19+
20+
import java.util.Objects;
1921
import org.apache.commons.lang3.NotImplementedException;
2022
import org.jetbrains.annotations.NotNull;
2123
import org.jetbrains.annotations.Nullable;
2224

23-
import java.util.Objects;
24-
2525
public class BlockEntityPeripheralOwner<T extends BlockEntity & IPeripheralTileEntity> extends BasePeripheralOwner {
2626

2727
public final T tileEntity;
@@ -70,11 +70,15 @@ public FrontAndTop getOrientation() {
7070
return tileEntity.getBlockState().getValue(BaseBlock.ORIENTATION);
7171
}
7272

73+
@Nullable
74+
@Override
75+
public Entity getHoldingEntity() {
76+
return null;
77+
}
78+
7379
@Nullable
7480
@Override
7581
public Player getOwner() {
76-
if (tileEntity instanceof InventoryManagerEntity inventoryManagerEntity)
77-
return inventoryManagerEntity.getOwnerPlayer();
7882
return null;
7983
}
8084

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/IPeripheralOwner.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
22

33
import dan200.computercraft.api.peripheral.IPeripheral;
4+
import de.srendi.advancedperipherals.common.addons.APAddons;
45
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
56
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralOperation;
67
import net.minecraft.core.BlockPos;
78
import net.minecraft.core.Direction;
89
import net.minecraft.core.FrontAndTop;
910
import net.minecraft.nbt.CompoundTag;
11+
import net.minecraft.world.entity.Entity;
12+
import net.minecraft.world.entity.OwnableEntity;
1013
import net.minecraft.world.entity.player.Player;
1114
import net.minecraft.world.item.ItemStack;
1215
import net.minecraft.world.level.Level;
1316
import net.minecraft.world.phys.Vec3;
14-
import org.jetbrains.annotations.NotNull;
15-
import org.jetbrains.annotations.Nullable;
17+
import org.joml.Vector3d;
18+
import org.valkyrienskies.core.api.ships.Ship;
1619

1720
import java.util.Collection;
21+
import java.util.HashSet;
22+
import java.util.Set;
23+
import org.jetbrains.annotations.NotNull;
24+
import org.jetbrains.annotations.Nullable;
1825

1926
public interface IPeripheralOwner {
2027

@@ -33,7 +40,37 @@ default Vec3 getCenterPos() {
3340

3441
@NotNull FrontAndTop getOrientation();
3542

36-
@Nullable Player getOwner();
43+
@NotNull
44+
default Vec3 getDirection() {
45+
Vec3 dir = Vec3.atLowerCornerOf(getFacing().getNormal());
46+
if (!APAddons.vs2Loaded) {
47+
return dir;
48+
}
49+
Ship ship = APAddons.getVS2Ship(getLevel(), getPos());
50+
if (ship == null) {
51+
return dir;
52+
}
53+
Vector3d newDir = ship.getShipToWorld().transformDirection(new Vector3d(dir.x, dir.y, dir.z));
54+
return new Vec3(newDir.x, newDir.y, newDir.z);
55+
}
56+
57+
@Nullable Entity getHoldingEntity();
58+
59+
@Nullable
60+
default Player getOwner() {
61+
Entity owner = getHoldingEntity();
62+
Set<Entity> checked = new HashSet<>();
63+
while (owner != null && checked.add(owner)) {
64+
if (owner instanceof Player player) {
65+
return (Player) player;
66+
}
67+
if (!(owner instanceof OwnableEntity ownable)) {
68+
break;
69+
}
70+
owner = ownable.getOwner();
71+
}
72+
return null;
73+
}
3774

3875
@NotNull CompoundTag getDataStorage();
3976

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
2+
3+
import de.srendi.advancedperipherals.common.blocks.blockentities.InventoryManagerEntity;
4+
import net.minecraft.world.entity.player.Player;
5+
import org.jetbrains.annotations.Nullable;
6+
7+
public class InventoryManagerOwner extends BlockEntityPeripheralOwner<InventoryManagerEntity> {
8+
public InventoryManagerOwner(InventoryManagerEntity tile) {
9+
super(tile);
10+
}
11+
12+
@Nullable
13+
@Override
14+
public Player getOwner() {
15+
return tileEntity.getOwnerPlayer();
16+
}
17+
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/PocketPeripheralOwner.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dan200.computercraft.api.peripheral.IPeripheral;
44
import dan200.computercraft.api.pocket.IPocketAccess;
5+
import dan200.computercraft.api.pocket.IPocketUpgrade;
56
import de.srendi.advancedperipherals.common.configuration.APConfig;
67
import de.srendi.advancedperipherals.common.util.DataStorageUtil;
78
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
@@ -11,7 +12,6 @@
1112
import net.minecraft.core.FrontAndTop;
1213
import net.minecraft.nbt.CompoundTag;
1314
import net.minecraft.world.entity.Entity;
14-
import net.minecraft.world.entity.player.Player;
1515
import net.minecraft.world.item.ItemStack;
1616
import net.minecraft.world.level.Level;
1717
import net.minecraft.world.phys.Vec3;
@@ -21,12 +21,15 @@
2121

2222
public class PocketPeripheralOwner extends BasePeripheralOwner {
2323
private final IPocketAccess pocket;
24+
private final IPocketUpgrade upgrade;
2425

25-
public PocketPeripheralOwner(IPocketAccess pocket) {
26+
public PocketPeripheralOwner(IPocketAccess pocket, IPocketUpgrade upgrade) {
2627
super();
2728
this.pocket = pocket;
28-
if(APConfig.PERIPHERALS_CONFIG.disablePocketFuelConsumption.get())
29+
this.upgrade = upgrade;
30+
if (APConfig.PERIPHERALS_CONFIG.disablePocketFuelConsumption.get()) {
2931
attachAbility(PeripheralOwnerAbility.FUEL, new InfinitePocketFuelAbility(this));
32+
}
3033
}
3134

3235
@Nullable
@@ -39,56 +42,58 @@ public String getCustomName() {
3942
@Override
4043
public Level getLevel() {
4144
Entity owner = pocket.getEntity();
42-
if (owner == null) return null;
43-
return owner.getCommandSenderWorld();
45+
return owner == null ? null : owner.getCommandSenderWorld();
4446
}
4547

4648
@NotNull
4749
@Override
4850
public BlockPos getPos() {
4951
Entity owner = pocket.getEntity();
50-
if (owner == null) return new BlockPos(0, 0, 0);
51-
return owner.blockPosition();
52+
return owner == null ? BlockPos.ZERO : new BlockPos(owner.getEyePosition());
5253
}
5354

5455
@NotNull
5556
@Override
5657
public Vec3 getCenterPos() {
5758
Entity owner = pocket.getEntity();
58-
if (owner == null) return new Vec3(0, 0, 0);
59-
return owner.position();
59+
return owner == null ? Vec3.ZERO : owner.getEyePosition();
6060
}
6161

6262
@NotNull
6363
@Override
6464
public Direction getFacing() {
65-
Entity owner = pocket.getEntity();
66-
if (owner == null) return Direction.NORTH;
67-
return owner.getDirection();
65+
Vec3 dir = getDirection();
66+
return Direction.getNearest(dir.x, dir.y, dir.z);
6867
}
6968

70-
71-
/**
72-
* Not used for pockets
73-
*/
7469
@NotNull
7570
@Override
7671
public FrontAndTop getOrientation() {
77-
return FrontAndTop.NORTH_UP;
72+
Entity owner = pocket.getEntity();
73+
if (owner == null) {
74+
return FrontAndTop.NORTH_UP;
75+
}
76+
Vec3 up = owner.getUpVector(1.0f);
77+
return FrontAndTop.fromFrontAndTop(getFacing(), Direction.getNearest(up.x, up.y, up.z));
7878
}
7979

80-
@Nullable
80+
@NotNull
8181
@Override
82-
public Player getOwner() {
82+
public Vec3 getDirection() {
8383
Entity owner = pocket.getEntity();
84-
if (owner instanceof Player player) return player;
85-
return null;
84+
return owner == null ? /* North */ new Vec3(0, 0, -1) : owner.getLookAngle();
85+
}
86+
87+
@Nullable
88+
@Override
89+
public Entity getHoldingEntity() {
90+
return pocket.getEntity();
8691
}
8792

8893
@NotNull
8994
@Override
9095
public CompoundTag getDataStorage() {
91-
return DataStorageUtil.getDataStorage(pocket);
96+
return DataStorageUtil.getDataStorage(pocket, upgrade);
9297
}
9398

9499
@Override

0 commit comments

Comments
 (0)