Skip to content

Commit

Permalink
Add integration for Origins mod climbing power
Browse files Browse the repository at this point in the history
  • Loading branch information
Techjar committed Jan 18, 2025
1 parent 21eab61 commit 69ca2ea
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 5 deletions.
12 changes: 12 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,18 @@ allprojects {
}
}

exclusiveContent {
forRepository {
maven {
name = "quiltmc"
url = "https://maven.quiltmc.org/repository/release"
}
}
filter {
includeGroup "org.quiltmc.parsers"
}
}

exclusiveContent {
forRepository {
ivy {
Expand Down
3 changes: 3 additions & 0 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ dependencies {
//for epic fight compat
modCompileOnly("maven.modrinth:epic-fight:20.6.3")

// for origins compat
modCompileOnlyApi "com.github.apace100:apoli:2.9.0"

// needed dependencies
compileOnly("com.google.code.findbugs:jsr305:3.0.2")
compileOnly('com.electronwill.night-config:toml:3.6.6')
Expand Down
4 changes: 4 additions & 0 deletions common/src/main/java/org/vivecraft/client/Xplat.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ enum ModLoader {
ModLoader(String name) {
this.name = name;
}

public boolean isFabric() {
return this == FABRIC || this == QUILT;
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.vivecraft.client_vr.provider.ControllerType;
import org.vivecraft.common.network.packet.c2s.ClimbingPayloadC2S;
import org.vivecraft.data.BlockTags;
import org.vivecraft.mod_compat_vr.origins.OriginsHelper;
import org.vivecraft.server.config.ClimbeyBlockmode;

import java.util.*;
Expand Down Expand Up @@ -94,7 +95,8 @@ public boolean isClimbeyClimb() {
*/
public static boolean hasClimbeyClimbEquipped(Player player) {
return ClientNetworking.SERVER_ALLOWS_CLIMBEY &&
(isClaws(player.getMainHandItem()) || isClaws(player.getOffhandItem()));
(isClaws(player.getMainHandItem()) || isClaws(player.getOffhandItem()) ||
(OriginsHelper.isLoaded() && OriginsHelper.hasClimbingPower(player)));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ public static void renderVRHand_Main(PoseStack poseStack, float partialTick) {
item = override;
}

// climbey override
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && !ClimbTracker.isClaws(item) && override == null) {
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && ClimbTracker.hasClimbeyClimbEquipped(MC.player) &&
!DATA_HOLDER.climbTracker.isClaws(item) && override == null) {
item = MC.player.getOffhandItem();
}

Expand Down Expand Up @@ -233,8 +233,8 @@ public static void renderVRHand_Offhand(PoseStack poseStack, float partialTick,
item = override;
}

// climbey override
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && !ClimbTracker.isClaws(item) && override == null) {
if (DATA_HOLDER.climbTracker.isClimbeyClimb() && ClimbTracker.hasClimbeyClimbEquipped(MC.player) &&
!DATA_HOLDER.climbTracker.isClaws(item) && override == null) {
item = MC.player.getMainHandItem();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.vivecraft.mod_compat_vr.origins;

import org.vivecraft.client.Xplat;
import io.github.apace100.apoli.component.PowerHolderComponent;
import io.github.apace100.apoli.power.ClimbingPower;
import io.github.apace100.apoli.power.TogglePower;
import net.minecraft.world.entity.LivingEntity;

public class OriginsHelper {
@SuppressWarnings("ConstantConditions")
public static boolean isLoaded() {
return Xplat.isModLoaded("origins") && Xplat.getModloader().isFabric();
}

public static boolean hasClimbingPower(LivingEntity entity) {
// assumes toggle is for climbing, which is correct at least for stock origins
return !PowerHolderComponent.KEY.get(entity).getPowers(ClimbingPower.class, true).isEmpty()
&& !PowerHolderComponent.KEY.get(entity).getPowers(TogglePower.class, false).isEmpty();
}
}

0 comments on commit 69ca2ea

Please sign in to comment.