Skip to content

Commit c4b14ab

Browse files
Add QuiltMC Compatibility
1 parent fc6ecc7 commit c4b14ab

File tree

5 files changed

+28
-12
lines changed

5 files changed

+28
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ MModding-Library is a custom library mainly used in the MModdingTeam's mods.
1212
![Java CI with Gradle](https://github.com/MModding/MModding-Library/workflows/Java%20CI%20with%20Gradle/badge.svg?branch=main)
1313

1414
## Usage
15-
MModding-Library provides detailed documentation in the form of a [Wiki](https://docs.mmodding.com). MModding-Library is avalaible for QuiltMC with Minecraft 1.18.2 & FabricMC with Minecraft 1.19.2.
15+
MModding-Library provides detailed documentation in the form of a [Wiki](https://docs.mmodding.com). MModding-Library is available for QuiltMC with Minecraft 1.18.2 & FabricMC with Minecraft 1.19.2.
1616

1717
Badge for Modders:
1818

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ dependencies {
3232
modImplementation libs.fabric.api
3333

3434
modImplementation libs.modmenu
35+
36+
// Quilt Compatibility
37+
modImplementation libs.compat.qsl
3538
}
3639

3740
loom {

gradle/libs.versions.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ fabric_loader = "0.16.4"
77
fabric_api = "0.77.0+1.19.2"
88
modmenu = "4.0.6"
99

10+
# Compatibility
11+
compat_qsl = "3.0.0-beta.19+1.19.2"
12+
1013
[libraries]
1114
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
1215
quilt_mappings = { module = "org.quiltmc:quilt-mappings", version.ref = "quilt_mappings" }
@@ -15,6 +18,9 @@ fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_l
1518
fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" }
1619
modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" }
1720

21+
# Compatibility
22+
compat_qsl = { module = "org.quiltmc.qsl:entity", version.ref = "compat_qsl" }
23+
1824
# If you have multiple similar dependencies, you can declare a dependency bundle and reference it on the build script with "libs.bundles.example".
1925
# [bundles]
2026
# example = ["example-a", "example-b", "example-c"]

src/main/java/com/mmodding/mmodding_lib/ducks/FabricOrQuiltEntityTypeBuilderDuckInterface.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.mmodding.mmodding_lib.library.utils.InternalOf;
55
import net.minecraft.entity.Entity;
66

7-
@InternalOf( CustomEntityType.class)
7+
@InternalOf(CustomEntityType.class)
88
public interface FabricOrQuiltEntityTypeBuilderDuckInterface<T extends Entity> {
99

1010
CustomEntityType<T> mmodding_lib$buildCustom();

src/main/java/com/mmodding/mmodding_lib/mixin/injectors/QuiltEntityTypeBuilderMixin.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@
1111
import net.minecraft.entity.mob.MobEntity;
1212
import net.minecraft.world.Heightmap;
1313
import org.jetbrains.annotations.NotNull;
14+
import org.quiltmc.qsl.entity.api.QuiltEntityTypeBuilder;
1415
import org.spongepowered.asm.mixin.Mixin;
1516
import org.spongepowered.asm.mixin.Pseudo;
1617
import org.spongepowered.asm.mixin.Shadow;
1718

1819
@Pseudo
19-
@Mixin(targets = "org.quiltmc.qsl.entity.api.QuiltEntityTypeBuilder", remap = false)
20+
@Mixin(value = QuiltEntityTypeBuilder.class, remap = false)
2021
public class QuiltEntityTypeBuilderMixin<T extends Entity> implements FabricOrQuiltEntityTypeBuilderDuckInterface<T> {
2122

2223
@Shadow
@@ -66,7 +67,7 @@ public class QuiltEntityTypeBuilderMixin<T extends Entity> implements FabricOrQu
6667
this.dimensions,
6768
this.maxTrackingRange,
6869
this.trackingTickInterval,
69-
this.alwaysUpdateVelocity
70+
this.alwaysUpdateVelocity != null ? this.alwaysUpdateVelocity : false
7071
);
7172
}
7273

@@ -76,16 +77,18 @@ public class QuiltEntityTypeBuilderMixin<T extends Entity> implements FabricOrQu
7677
public static class FabricBuilder<T extends LivingEntity> implements FabricOrQuiltEntityTypeBuilderDuckInterface<T> {
7778

7879
@Shadow
79-
private FabricOrQuiltEntityTypeBuilderDuckInterface<T> quiltBuilder;
80+
@SuppressWarnings("rawtypes")
81+
private QuiltEntityTypeBuilder quiltBuilder;
8082

8183
@Override
84+
@SuppressWarnings("unchecked")
8285
public CustomEntityType<T> mmodding_lib$buildCustom() {
83-
return this.quiltBuilder.mmodding_lib$buildCustom();
86+
return ((FabricOrQuiltEntityTypeBuilderDuckInterface<T>) this.quiltBuilder).mmodding_lib$buildCustom();
8487
}
8588
}
8689

8790
@Pseudo
88-
@Mixin(targets = "org.quiltmc.qsl.entity.api.QuiltEntityTypeBuilder$Living", remap = false)
91+
@Mixin(value = QuiltEntityTypeBuilder.Living.class, remap = false)
8992
public static class Living<T extends LivingEntity> extends QuiltEntityTypeBuilderMixin<T> {
9093

9194
@Shadow
@@ -104,7 +107,7 @@ public static class Living<T extends LivingEntity> extends QuiltEntityTypeBuilde
104107
}
105108

106109
@Pseudo
107-
@Mixin(targets = "org.quiltmc.qsl.entity.api.QuiltEntityTypeBuilder$Mob", remap = false)
110+
@Mixin(value = QuiltEntityTypeBuilder.Mob.class, remap = false)
108111
public static class Mob<T extends MobEntity> extends Living<T> {
109112

110113
@Shadow
@@ -134,11 +137,13 @@ public static class Mob<T extends MobEntity> extends Living<T> {
134137
public static class FabricLiving<T extends LivingEntity> implements FabricOrQuiltEntityTypeBuilderDuckInterface<T> {
135138

136139
@Shadow
137-
private FabricOrQuiltEntityTypeBuilderDuckInterface<T> quiltBuilder;
140+
@SuppressWarnings("rawtypes")
141+
private QuiltEntityTypeBuilder.Living quiltBuilder;
138142

139143
@Override
144+
@SuppressWarnings("unchecked")
140145
public CustomEntityType<T> mmodding_lib$buildCustom() {
141-
return this.quiltBuilder.mmodding_lib$buildCustom();
146+
return ((FabricOrQuiltEntityTypeBuilderDuckInterface<T>) this.quiltBuilder).mmodding_lib$buildCustom();
142147
}
143148
}
144149

@@ -147,11 +152,13 @@ public static class FabricLiving<T extends LivingEntity> implements FabricOrQuil
147152
public static class FabricMob<T extends LivingEntity> implements FabricOrQuiltEntityTypeBuilderDuckInterface<T> {
148153

149154
@Shadow
150-
private FabricOrQuiltEntityTypeBuilderDuckInterface<T> quiltBuilder;
155+
@SuppressWarnings("rawtypes")
156+
private QuiltEntityTypeBuilder.Mob quiltBuilder;
151157

152158
@Override
159+
@SuppressWarnings("unchecked")
153160
public CustomEntityType<T> mmodding_lib$buildCustom() {
154-
return this.quiltBuilder.mmodding_lib$buildCustom();
161+
return ((FabricOrQuiltEntityTypeBuilderDuckInterface<T>) this.quiltBuilder).mmodding_lib$buildCustom();
155162
}
156163
}
157164
}

0 commit comments

Comments
 (0)