Skip to content

Commit 69ca2ea

Browse files
committed
Add integration for Origins mod climbing power
1 parent 21eab61 commit 69ca2ea

File tree

6 files changed

+46
-5
lines changed

6 files changed

+46
-5
lines changed

build.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,18 @@ allprojects {
152152
}
153153
}
154154

155+
exclusiveContent {
156+
forRepository {
157+
maven {
158+
name = "quiltmc"
159+
url = "https://maven.quiltmc.org/repository/release"
160+
}
161+
}
162+
filter {
163+
includeGroup "org.quiltmc.parsers"
164+
}
165+
}
166+
155167
exclusiveContent {
156168
forRepository {
157169
ivy {

common/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ dependencies {
4040
//for epic fight compat
4141
modCompileOnly("maven.modrinth:epic-fight:20.6.3")
4242

43+
// for origins compat
44+
modCompileOnlyApi "com.github.apace100:apoli:2.9.0"
45+
4346
// needed dependencies
4447
compileOnly("com.google.code.findbugs:jsr305:3.0.2")
4548
compileOnly('com.electronwill.night-config:toml:3.6.6')

common/src/main/java/org/vivecraft/client/Xplat.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ enum ModLoader {
4242
ModLoader(String name) {
4343
this.name = name;
4444
}
45+
46+
public boolean isFabric() {
47+
return this == FABRIC || this == QUILT;
48+
}
4549
}
4650

4751
/**

common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/ClimbTracker.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.vivecraft.client_vr.provider.ControllerType;
2626
import org.vivecraft.common.network.packet.c2s.ClimbingPayloadC2S;
2727
import org.vivecraft.data.BlockTags;
28+
import org.vivecraft.mod_compat_vr.origins.OriginsHelper;
2829
import org.vivecraft.server.config.ClimbeyBlockmode;
2930

3031
import java.util.*;
@@ -94,7 +95,8 @@ public boolean isClimbeyClimb() {
9495
*/
9596
public static boolean hasClimbeyClimbEquipped(Player player) {
9697
return ClientNetworking.SERVER_ALLOWS_CLIMBEY &&
97-
(isClaws(player.getMainHandItem()) || isClaws(player.getOffhandItem()));
98+
(isClaws(player.getMainHandItem()) || isClaws(player.getOffhandItem()) ||
99+
(OriginsHelper.isLoaded() && OriginsHelper.hasClimbingPower(player)));
98100
}
99101

100102
/**

common/src/main/java/org/vivecraft/client_vr/render/helpers/VRArmHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ public static void renderVRHand_Main(PoseStack poseStack, float partialTick) {
178178
item = override;
179179
}
180180

181-
// climbey override
182-
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && !ClimbTracker.isClaws(item) && override == null) {
181+
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && ClimbTracker.hasClimbeyClimbEquipped(MC.player) &&
182+
!DATA_HOLDER.climbTracker.isClaws(item) && override == null) {
183183
item = MC.player.getOffhandItem();
184184
}
185185

@@ -233,8 +233,8 @@ public static void renderVRHand_Offhand(PoseStack poseStack, float partialTick,
233233
item = override;
234234
}
235235

236-
// climbey override
237-
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && !ClimbTracker.isClaws(item) && override == null) {
236+
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && ClimbTracker.hasClimbeyClimbEquipped(MC.player) &&
237+
!DATA_HOLDER.climbTracker.isClaws(item) && override == null) {
238238
item = MC.player.getMainHandItem();
239239
}
240240

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.vivecraft.mod_compat_vr.origins;
2+
3+
import org.vivecraft.client.Xplat;
4+
import io.github.apace100.apoli.component.PowerHolderComponent;
5+
import io.github.apace100.apoli.power.ClimbingPower;
6+
import io.github.apace100.apoli.power.TogglePower;
7+
import net.minecraft.world.entity.LivingEntity;
8+
9+
public class OriginsHelper {
10+
@SuppressWarnings("ConstantConditions")
11+
public static boolean isLoaded() {
12+
return Xplat.isModLoaded("origins") && Xplat.getModloader().isFabric();
13+
}
14+
15+
public static boolean hasClimbingPower(LivingEntity entity) {
16+
// assumes toggle is for climbing, which is correct at least for stock origins
17+
return !PowerHolderComponent.KEY.get(entity).getPowers(ClimbingPower.class, true).isEmpty()
18+
&& !PowerHolderComponent.KEY.get(entity).getPowers(TogglePower.class, false).isEmpty();
19+
}
20+
}

0 commit comments

Comments
 (0)