Skip to content

Commit d4b8b97

Browse files
authored
Merge pull request #717 from zyxkad/vs-patch
fix crash when VS2 is not loaded
2 parents 8bf13da + 222b703 commit d4b8b97

File tree

9 files changed

+84
-77
lines changed

9 files changed

+84
-77
lines changed

build.gradle

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,12 @@ repositories {
201201
}
202202
}
203203
maven {
204-
name = "Modmaven Jei"
204+
name = "Modmaven"
205205
url = 'https://modmaven.dev/'
206206
content {
207-
includeGroup("mezz.jei")
208207
includeGroup("appeng")
209208
includeGroup("mekanism")
209+
includeGroup("mezz.jei")
210210
}
211211
}
212212
maven {
@@ -376,20 +376,15 @@ dependencies {
376376
// runtimeOnly fg.deobf("curse.maven:createaddition-439890:5099757")
377377

378378
// Valkyrien Skies 2
379-
implementation("org.joml:joml:1.10.4") {
380-
transitive = false
381-
}
382-
implementation("org.joml:joml-primitives:1.10.0") {
383-
transitive = false
384-
}
385-
// implementation fg.deobf("org.valkyrienskies:valkyrienskies-119-common:${vs2_version}")
386-
implementation fg.deobf("org.valkyrienskies:valkyrienskies-119-forge:${vs2_version}") {
387-
transitive = false
388-
}
379+
compileOnly("org.joml:joml:1.10.4")
380+
compileOnly("org.joml:joml-primitives:1.10.0")
381+
// compileOnly fg.deobf("org.valkyrienskies:valkyrienskies-119-common:${vs2_version}")
382+
compileOnly fg.deobf("org.valkyrienskies:valkyrienskies-119-forge:${vs2_version}")
389383
compileOnly "org.valkyrienskies.core:api:${vs_core_version}"
390384
compileOnly "org.valkyrienskies.core:api-game:${vs_core_version}"
391385
compileOnly "org.valkyrienskies.core:util:${vs_core_version}"
392386
compileOnly "org.valkyrienskies.core:impl:${vs_core_version}"
387+
runtimeOnly fg.deobf("org.valkyrienskies:valkyrienskies-119-forge:${vs2_version}")
393388
runtimeOnly fg.deobf("curse.maven:valkyrien-skies-258371:${valkyrien_skies_version}")
394389
runtimeOnly fg.deobf("curse.maven:eureka-ships-654384:${eureka_ships_version}")
395390
runtimeOnly fg.deobf("curse.maven:clockwork-807792:${clockwork_version}")
@@ -427,12 +422,12 @@ task setupServer(type: Copy) {
427422
}
428423

429424
["Client", "Server"].forEach { name ->
430-
tasks.register("test$name", JavaExec.class).configure {
425+
tasks.register("test${name}", JavaExec.class).configure {
431426
it.group('In-game tests')
432427
it.description("Runs tests on a temporary Minecraft instance.")
433-
it.dependsOn(setupServer, "prepareRunTest$name", "cleanTest$name", 'compileTestModJava')
428+
it.dependsOn(setupServer, "prepareRunTest${name}", "cleanTest${name}", 'compileTestModJava')
434429

435-
JavaExec exec = tasks.getByName("runTest$name")
430+
JavaExec exec = tasks.getByName("runTest${name}")
436431
exec.copyTo(it)
437432
it.setClasspath(exec.getClasspath())
438433
it.mainClass = exec.mainClass

gradle.properties

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
org.gradle.jvmargs=-Xmx4G
21
org.gradle.daemon=false
2+
org.gradle.jvmargs=-Xmx4G
33
org.gradle.logging.level=info
44

55
# Minecraft related
@@ -10,53 +10,57 @@ mod_id=advancedperipherals
1010
mod_version=0.8r
1111
minecraft_version=1.19.2
1212
mod_artifact_suffix=
13+
1314
forge_version=43.4.0
1415
loader_version=43
16+
1517
release_type=release
18+
1619
mappings_channel=parchment
1720
mappings_version=2022.11.20-1.19.2
18-
jb_annotations=21.0.1
1921

2022
# Test dependencies
21-
junit_version=5.7.2
2223
hamcrest_version=2.2
24+
jb_annotations=21.0.1
25+
junit_version=5.7.2
2326
kotlin_version=1.8.0
2427
kotlinx_coroutines_version=1.7.3
2528
ttoolkit_version=0.1.3
2629

2730
# Mod dependencies
2831
cc_version=1.101.3
29-
curios_version=1.19.2-5.1.4.1
30-
minecolonies_version=1.19.2-1.1.473-BETA
31-
appliedenergistics_version=12.9.9
32-
patchouli_version=1.19.2-77
33-
refinedstorage_version=1.11.7
32+
33+
ae2additions_version=4646599
34+
ae2things_version=4367610
35+
appliedenergistics_version=12.9.12
36+
appliedmekanistics_version=4734608
3437
botania_version=1.19.2-440-FORGE
38+
clockwork_version=5171528
3539
create_version=0.5.1.f-46
3640
createca_version=5099757
41+
curios_version=1.19.2-5.1.4.1
42+
dimstorage_version=3927875
43+
eureka_ships_version=5321628
44+
kotlinforforge_version=3.12.0
3745
mekanism_version=1.19.2-10.3.9.13
38-
ae2things_version=4367610
46+
minecolonies_version=1.19.2-1.1.473-BETA
47+
patchouli_version=1.19.2-77
3948
powah_version=4183078
40-
ae2additions_version=4646599
41-
kotlinforforge_version=3.12.0
42-
appliedmekanistics_version=4734608
43-
dimstorage_version=3927875
49+
refinedstorage_version=1.11.7
4450
valkyrien_skies_version=4994898
45-
eureka_ships_version=5321628
46-
clockwork_version=5171528
4751
vs2_version=2.1.2-beta.1+a04911c932
4852
vs_core_version=1.1.0+2a62e6a823
4953

5054
# Mod dependencies which are needed for other mods
5155
# For minecolonies
52-
structurize_version=1.19.2-1.0.649-BETA
53-
multipiston_version=1.19.2-1.2.21-ALPHA
5456
blockui_version=1.19.2-0.0.102-ALPHA
5557
domumornamentum_version=1.19-1.0.141-BETA
58+
multipiston_version=1.19.2-1.2.21-ALPHA
59+
structurize_version=1.19.2-1.0.649-BETA
5660

5761
# For DimStorage
5862
edivadlib_version=3927847
5963

60-
# Mod dependencies for testing stuff(Only used in the dev environment)
64+
# Mod dependencies for testing stuff (Only used in the dev environment)
65+
jade_version=4914105
6166
jei_version=1.19.2-forge:11.6.0.1016
62-
jade_version=4914105

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

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

33
import de.srendi.advancedperipherals.AdvancedPeripherals;
44
import de.srendi.advancedperipherals.common.addons.refinedstorage.RefinedStorage;
5+
import de.srendi.advancedperipherals.common.addons.valkyrienskies.ValkyrienSkies;
56
import net.minecraft.core.BlockPos;
67
import net.minecraft.resources.ResourceLocation;
78
import net.minecraft.world.entity.player.Player;
@@ -12,7 +13,6 @@
1213
import net.minecraftforge.fml.ModList;
1314
import net.minecraftforge.fml.common.Mod;
1415
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
15-
import org.valkyrienskies.mod.common.VSGameUtilsKt;
1616
import top.theillusivec4.curios.api.CuriosApi;
1717
import top.theillusivec4.curios.api.SlotResult;
1818
import top.theillusivec4.curios.api.SlotTypeMessage;
@@ -95,6 +95,6 @@ public static boolean isBlockOnShip(Level level, BlockPos pos) {
9595
if (!vs2Loaded) {
9696
return false;
9797
}
98-
return VSGameUtilsKt.isBlockInShipyard(level, pos);
98+
return ValkyrienSkies.isBlockOnShip(level, pos);
9999
}
100100
}

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

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

33
import dan200.computercraft.api.peripheral.IPeripheral;
44
import de.srendi.advancedperipherals.common.addons.APAddons;
5+
import de.srendi.advancedperipherals.common.addons.valkyrienskies.ValkyrienSkies;
56
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
67
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralOperation;
78
import net.minecraft.core.BlockPos;
@@ -14,9 +15,6 @@
1415
import net.minecraft.world.item.ItemStack;
1516
import net.minecraft.world.level.Level;
1617
import net.minecraft.world.phys.Vec3;
17-
import org.joml.Vector3d;
18-
import org.valkyrienskies.core.api.ships.Ship;
19-
import org.valkyrienskies.mod.common.VSGameUtilsKt;
2018

2119
import java.util.Collection;
2220
import java.util.HashSet;
@@ -47,12 +45,7 @@ default Vec3 getDirection() {
4745
if (!APAddons.vs2Loaded) {
4846
return dir;
4947
}
50-
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(getLevel(), getPos());
51-
if (ship == null) {
52-
return dir;
53-
}
54-
Vector3d newDir = ship.getShipToWorld().transformDirection(new Vector3d(dir.x, dir.y, dir.z));
55-
return new Vec3(newDir.x, newDir.y, newDir.z);
48+
return ValkyrienSkies.transformToWorldDir(getLevel(), getPos(), dir);
5649
}
5750

5851
@Nullable Entity getHoldingEntity();

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/EnvironmentDetectorPeripheral.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import dan200.computercraft.api.pocket.IPocketUpgrade;
99
import dan200.computercraft.api.turtle.ITurtleAccess;
1010
import dan200.computercraft.api.turtle.TurtleSide;
11+
1112
import de.srendi.advancedperipherals.common.addons.computercraft.operations.SphereOperationContext;
1213
import de.srendi.advancedperipherals.common.addons.computercraft.owner.BlockEntityPeripheralOwner;
1314
import de.srendi.advancedperipherals.common.addons.computercraft.owner.IPeripheralOwner;
@@ -18,6 +19,7 @@
1819
import de.srendi.advancedperipherals.common.util.LuaConverter;
1920
import de.srendi.advancedperipherals.lib.peripherals.BasePeripheral;
2021
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralPlugin;
22+
2123
import net.minecraft.resources.ResourceKey;
2224
import net.minecraft.util.Mth;
2325
import net.minecraft.world.entity.Entity;
@@ -35,7 +37,6 @@
3537
import net.minecraftforge.event.entity.player.SleepingTimeCheckEvent;
3638
import net.minecraftforge.eventbus.api.Event;
3739
import net.minecraftforge.server.ServerLifecycleHooks;
38-
import org.jetbrains.annotations.NotNull;
3940

4041
import java.util.ArrayList;
4142
import java.util.HashMap;
@@ -45,6 +46,7 @@
4546
import java.util.Optional;
4647
import java.util.Set;
4748
import java.util.function.Function;
49+
import org.jetbrains.annotations.NotNull;
4850

4951
import static de.srendi.advancedperipherals.common.addons.computercraft.operations.SphereOperation.SCAN_ENTITIES;
5052

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/plugins/AutomataLookPlugin.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import dan200.computercraft.core.apis.TableHelper;
88
import de.srendi.advancedperipherals.common.addons.APAddons;
99
import de.srendi.advancedperipherals.common.addons.computercraft.owner.TurtlePeripheralOwner;
10+
import de.srendi.advancedperipherals.common.addons.valkyrienskies.ValkyrienSkies;
1011
import de.srendi.advancedperipherals.common.util.LuaConverter;
1112
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
1213
import de.srendi.advancedperipherals.lib.peripherals.AutomataCorePeripheral;
14+
1315
import net.minecraft.core.BlockPos;
1416
import net.minecraft.resources.ResourceLocation;
1517
import net.minecraft.world.level.block.state.BlockState;
@@ -18,13 +20,11 @@
1820
import net.minecraft.world.phys.HitResult;
1921
import net.minecraft.world.phys.Vec3;
2022
import net.minecraftforge.registries.ForgeRegistries;
21-
import org.jetbrains.annotations.NotNull;
22-
import org.valkyrienskies.core.api.ships.Ship;
23-
import org.valkyrienskies.mod.common.VSGameUtilsKt;
2423

2524
import java.util.Collections;
2625
import java.util.HashMap;
2726
import java.util.Map;
27+
import org.jetbrains.annotations.NotNull;
2828

2929
public class AutomataLookPlugin extends AutomataCorePlugin {
3030

@@ -58,11 +58,7 @@ public final MethodResult lookAtBlock(@NotNull IArguments arguments) throws LuaE
5858
data.put("y", pos.y - origin.y);
5959
data.put("z", pos.z - origin.z);
6060
if (APAddons.vs2Loaded) {
61-
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(automataCore.getLevel(), blockPos);
62-
if (ship != null) {
63-
data.put("shipId", ship.getId());
64-
data.put("shipName", ship.getSlug());
65-
}
61+
ValkyrienSkies.encodeShipInfo(automataCore.getLevel(), blockPos, data);
6662
}
6763
return MethodResult.of(data);
6864
}

src/main/java/de/srendi/advancedperipherals/common/addons/valkyrienskies/ValkyrienSkies.java

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

33
import net.minecraft.core.BlockPos;
44
import net.minecraft.server.level.ServerLevel;
5+
import net.minecraft.world.level.Level;
56
import net.minecraft.world.phys.Vec3;
67
import org.joml.Vector3d;
78
import org.valkyrienskies.core.api.ships.ServerShip;
@@ -10,10 +11,42 @@
1011

1112
import java.util.ArrayList;
1213
import java.util.List;
14+
import java.util.Map;
1315

1416
public final class ValkyrienSkies {
1517
private ValkyrienSkies() {}
1618

19+
public static boolean isBlockOnShip(Level level, BlockPos pos) {
20+
return VSGameUtilsKt.isBlockInShipyard(level, pos);
21+
}
22+
23+
public static Vec3 transformToWorldPos(Level level, BlockPos blockPos, Vec3 pos) {
24+
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(level, blockPos);
25+
if (ship == null) {
26+
return pos;
27+
}
28+
Vector3d newPos = ship.getShipToWorld().transformPosition(new Vector3d(pos.x, pos.y, pos.z));
29+
return new Vec3(newPos.x, newPos.y, newPos.z);
30+
}
31+
32+
public static Vec3 transformToWorldDir(Level level, BlockPos blockPos, Vec3 dir) {
33+
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(level, blockPos);
34+
if (ship == null) {
35+
return dir;
36+
}
37+
Vector3d newDir = ship.getShipToWorld().transformDirection(new Vector3d(dir.x, dir.y, dir.z));
38+
return new Vec3(newDir.x, newDir.y, newDir.z);
39+
}
40+
41+
public static void encodeShipInfo(Level level, BlockPos blockPos, Map<String, Object> data) {
42+
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(level, blockPos);
43+
if (ship == null) {
44+
return;
45+
}
46+
data.put("shipId", ship.getId());
47+
data.put("shipName", ship.getSlug());
48+
}
49+
1750
public static List<ServerShip> getNearbyShips(ServerLevel level, Vec3 pos, double radius) {
1851
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(level, new BlockPos(pos));
1952
if (ship != null) {

src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/FakePlayerProviderTurtle.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import dan200.computercraft.api.turtle.ITurtleAccess;
55
import dan200.computercraft.shared.util.WorldUtil;
66
import de.srendi.advancedperipherals.common.addons.APAddons;
7+
import de.srendi.advancedperipherals.common.addons.valkyrienskies.ValkyrienSkies;
78
import net.minecraft.commands.arguments.EntityAnchorArgument;
89
import net.minecraft.core.BlockPos;
910
import net.minecraft.server.level.ServerLevel;
@@ -15,10 +16,6 @@
1516
import net.minecraft.world.phys.Vec3;
1617
import net.minecraftforge.items.ItemHandlerHelper;
1718
import net.minecraftforge.items.wrapper.InvWrapper;
18-
import org.joml.Matrix4dc;
19-
import org.joml.Vector3d;
20-
import org.valkyrienskies.core.api.ships.Ship;
21-
import org.valkyrienskies.mod.common.VSGameUtilsKt;
2219

2320
import java.util.WeakHashMap;
2421

@@ -46,14 +43,8 @@ public static void load(APFakePlayer player, ITurtleAccess turtle) {
4643
Vec3 direction = Vec3.atLowerCornerOf(turtle.getDirection().getNormal());
4744
Vec3 position = Vec3.atCenterOf(pos);
4845
if (APAddons.vs2Loaded) {
49-
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(level, pos);
50-
if (ship != null) {
51-
Matrix4dc matrix = ship.getShipToWorld();
52-
Vector3d newPos = matrix.transformPosition(new Vector3d(position.x, position.y, position.z));
53-
Vector3d newDir = matrix.transformDirection(new Vector3d(direction.x, direction.y, direction.z));
54-
position = new Vec3(newPos.x, newPos.y, newPos.z);
55-
direction = new Vec3(newDir.x, newDir.y, newDir.z);
56-
}
46+
position = ValkyrienSkies.transformToWorldPos(level, pos, position);
47+
direction = ValkyrienSkies.transformToWorldDir(level, pos, direction);
5748
}
5849
player.setPosRaw(position.x, position.y, position.z);
5950
player.lookAt(EntityAnchorArgument.Anchor.FEET, position.add(direction));

src/main/java/de/srendi/advancedperipherals/lib/peripherals/BasePeripheral.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,12 @@
1212
import de.srendi.advancedperipherals.common.addons.computercraft.owner.IPeripheralOwner;
1313
import de.srendi.advancedperipherals.common.addons.computercraft.owner.OperationAbility;
1414
import de.srendi.advancedperipherals.common.addons.computercraft.owner.PeripheralOwnerAbility;
15+
import de.srendi.advancedperipherals.common.addons.valkyrienskies.ValkyrienSkies;
1516
import de.srendi.advancedperipherals.common.util.CoordUtil;
1617
import net.minecraft.core.BlockPos;
1718
import net.minecraft.core.Direction;
1819
import net.minecraft.world.level.Level;
1920
import net.minecraft.world.phys.Vec3;
20-
import org.jetbrains.annotations.NotNull;
21-
import org.jetbrains.annotations.Nullable;
22-
import org.joml.Vector3d;
23-
import org.valkyrienskies.core.api.ships.Ship;
24-
import org.valkyrienskies.mod.common.VSGameUtilsKt;
2521

2622
import java.util.ArrayList;
2723
import java.util.Collections;
@@ -34,6 +30,8 @@
3430
import java.util.concurrent.ConcurrentHashMap;
3531
import java.util.function.BiConsumer;
3632
import java.util.function.Consumer;
33+
import org.jetbrains.annotations.NotNull;
34+
import org.jetbrains.annotations.Nullable;
3735

3836
public abstract class BasePeripheral<O extends IPeripheralOwner> implements IBasePeripheral<O>, IDynamicPeripheral {
3937

@@ -162,12 +160,7 @@ public Vec3 getPhysicsPos() {
162160
if (!APAddons.vs2Loaded) {
163161
return pos;
164162
}
165-
Ship ship = VSGameUtilsKt.getShipObjectManagingPos(owner.getLevel(), owner.getPos());
166-
if (ship == null) {
167-
return pos;
168-
}
169-
Vector3d newPos = ship.getShipToWorld().transformPosition(new Vector3d(pos.x, pos.y, pos.z));
170-
return new Vec3(newPos.x, newPos.y, newPos.z);
163+
return ValkyrienSkies.transformToWorldPos(owner.getLevel(), owner.getPos(), pos);
171164
}
172165

173166
public final BlockPos getPhysicsBlockPos() {

0 commit comments

Comments
 (0)