Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: setup jdk
uses: actions/setup-java@v4
with:
java-version: '21'
java-version: '25'
distribution: 'microsoft'
- name: make gradle wrapper executable
run: chmod +x ./gradlew
Expand Down
21 changes: 10 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
plugins {
id 'fabric-loom' version "${loom_version}"
id 'net.fabricmc.fabric-loom' version "${loom_version}"
id 'maven-publish'
}

version = project.mod_version
group = project.maven_group

base {
archivesName = "${archives_base_name}-fabric-${minecraft_version}"
archivesName = "${archives_base_name}-fabric-${release_name}"
}

repositories {
Expand All @@ -21,17 +21,16 @@ repositories {

dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"

modImplementation "com.github.ForwarD-NerN:fconfiglib:${project.fconfig_version}"
modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {
implementation "com.github.ForwarD-NerN:fconfiglib:${project.fconfig_version}"
api("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
modApi "com.terraformersmc:modmenu:${modmenu_version}"
api "com.terraformersmc:modmenu:${modmenu_version}"

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

}

Expand All @@ -44,7 +43,7 @@ processResources {
}

tasks.withType(JavaCompile).configureEach {
it.options.release = 21
it.options.release = 25
}

java {
Expand All @@ -53,8 +52,8 @@ java {
// If you remove this line, sources will not be generated.
withSourcesJar()

sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}

jar {
Expand Down
16 changes: 8 additions & 8 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21.10
yarn_mappings=1.21.10+build.3
loader_version=0.18.1
loom_version=1.13-SNAPSHOT
minecraft_version=26.1.2
release_name=26.x
loader_version=0.19.3
loom_version=1.17.7

# Mod Properties
mod_version=0.7.4
mod_version=0.7.5
maven_group=ru.nern
archives_base_name=playerladder

# Dependencies
fabric_version=0.138.3+1.21.10
cloth_config_version=20.0.149
modmenu_version=16.0.0-rc.1
fabric_version=0.151.0+26.1.2
cloth_config_version=26.1.154
modmenu_version=18.0.0-beta.1
fconfig_version=1.1.1
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
7 changes: 2 additions & 5 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 10 additions & 22 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 8 additions & 7 deletions src/main/java/ru/nern/playerladder/SharedHandler.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package ru.nern.playerladder;

import com.google.common.collect.Sets;
import net.minecraft.ResourceLocationException;
import net.minecraft.IdentifierException;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.tags.TagKey;
import net.minecraft.world.InteractionHand;
Expand Down Expand Up @@ -66,7 +67,7 @@ private static boolean canPickUpOrRideLiving(Entity entity) {

return config().server.interactWithAnyLiving &&
!entityTypesToExclude.contains(entity.getType()) &&
entityTagsToExclude.stream().noneMatch(tag -> entity.getType().is(tag));
entityTagsToExclude.stream().noneMatch(tag -> entity.is(tag));
}

public static void onMount(Entity vehicle, Entity passenger) {
Expand Down Expand Up @@ -97,16 +98,16 @@ public static void onGameModeChange(Player player, GameType gameMode) {

private static void addExcludedEntityType(String entity) {
try {
Optional<EntityType<?>> type = EntityType.byString(entity);
Optional<EntityType<?>> type = BuiltInRegistries.ENTITY_TYPE.getOptional(Identifier.parse(entity));
type.ifPresent(entityTypesToExclude::add);
} catch (ResourceLocationException ignored) {}
} catch (IdentifierException ignored) {}
}

private static void addExcludedEntityTag(String tag) {
try {
TagKey<EntityType<?>> tagKey = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation.parse(tag.substring(1)));
TagKey<EntityType<?>> tagKey = TagKey.create(Registries.ENTITY_TYPE, Identifier.parse(tag.substring(1)));
entityTagsToExclude.add(tagKey);
} catch (ResourceLocationException ignored) {}
} catch (IdentifierException ignored) {}
}

public static void setExcludedEntries(List<String> entries) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -27,7 +29,7 @@ public class EntityMixin {
method = "startRiding(Lnet/minecraft/world/entity/Entity;ZZ)Z",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/EntityType;canSerialize()Z")
)
private boolean playerladder$allowRidingPlayers(EntityType instance, Operation<Boolean> original) {
return instance == EntityType.PLAYER || original.call(instance);
private boolean playerladder$allowRidingPlayers(EntityType instance, Operation<Boolean> original, @Local(argsOnly = true) Entity vehicle) {
return vehicle instanceof Player || original.call(instance);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
package ru.nern.playerladder.mixin.shared;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.minecraft.server.commands.RideCommand;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import ru.nern.playerladder.PlayerLadder;

@Mixin(RideCommand.class)
public class RideCommandMixin {

@Redirect(method = "mount",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getType()Lnet/minecraft/world/entity/EntityType;"))
private static EntityType<?> playerladder$rideExtension(Entity entity) {
return PlayerLadder.config().server.rideExtension ? null : entity.getType();
@ModifyExpressionValue(method = "mount",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;is(Ljava/lang/Object;)Z"))
private static boolean playerladder$rideExtension(boolean isPlayer) {
return isPlayer && !PlayerLadder.config().server.rideExtension;
}
}
6 changes: 3 additions & 3 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
"playerladder.mixins.json"
],
"depends": {
"fabricloader": ">=0.16.0",
"minecraft": ">=1.21.10",
"java": ">=21",
"fabricloader": ">=0.18.4",
"minecraft": ">=26.1 <26.4",
"java": ">=25",
"fabric-api": "*",
"fconfiglib": ">=1.1.1"
}
Expand Down