Progress toward including Citizens plugin as proper dependency
This commit is contained in:
@@ -13,6 +13,7 @@ dependencies {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
|
compileOnly(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
|
||||||
|
compileOnly("Citizens2:Citizens:2.0.33:3367@jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
|
|||||||
@@ -4,6 +4,22 @@ dependencyResolutionManagement {
|
|||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
maven("https://repo.papermc.io/repository/maven-public/")
|
maven("https://repo.papermc.io/repository/maven-public/")
|
||||||
|
val citizensJenkins = ivy {
|
||||||
|
name = "citizensRepo"
|
||||||
|
url = uri("https://ci.citizensnpcs.co/job")
|
||||||
|
patternLayout {
|
||||||
|
artifact("/[organisation]/[classifier]/artifact/dist/target/[module]-[revision]-b[classifier].[ext]")
|
||||||
|
}
|
||||||
|
metadataSources {
|
||||||
|
artifact()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exclusiveContent {
|
||||||
|
forRepositories(citizensJenkins)
|
||||||
|
filter {
|
||||||
|
includeGroup("Citizens2")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
versionCatalogs {
|
versionCatalogs {
|
||||||
|
|||||||
@@ -20,35 +20,4 @@ import javax.annotation.Nullable;
|
|||||||
|
|
||||||
public interface IMixinChunkMapAccess {
|
public interface IMixinChunkMapAccess {
|
||||||
void gensouHacks$runOnTrackerMainThread(final Runnable runnable);
|
void gensouHacks$runOnTrackerMainThread(final Runnable runnable);
|
||||||
|
|
||||||
@Nullable
|
|
||||||
Class<?> gensouHacks$citizensPluginTrackedEntityClass = initCitizensPluginTrackedEntityClass();
|
|
||||||
@Nullable
|
|
||||||
Class<?> gensouHacks$citizensPluginHumanNPCEntityClass = initCitizensPluginHumanNPCEntityClass();
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static Class<?> initCitizensPluginTrackedEntityClass() {
|
|
||||||
try {
|
|
||||||
return Class.forName("net.citizensnpcs.nms.v1_20_R3.util.CitizensEntityTracker", false, ClassLoader.getSystemClassLoader());
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Nullable
|
|
||||||
private static Class<?> initCitizensPluginHumanNPCEntityClass() {
|
|
||||||
try {
|
|
||||||
return Class.forName("net.citizensnpcs.nms.v1_20_R3.entity.EntityHumanNPC", false, ClassLoader.getSystemClassLoader());
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
static Class<?> getGensouHacks$citizensPluginTrackedEntityClass() {
|
|
||||||
return gensouHacks$citizensPluginTrackedEntityClass;
|
|
||||||
}
|
|
||||||
@Nullable
|
|
||||||
static Class<?> getGensouHacks$citizensPluginHumanNPCEntityClass() {
|
|
||||||
return gensouHacks$citizensPluginHumanNPCEntityClass;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
||||||
import it.unimi.dsi.fastutil.objects.ReferenceSets;
|
import it.unimi.dsi.fastutil.objects.ReferenceSets;
|
||||||
|
import net.citizensnpcs.nms.v1_20_R3.util.CitizensEntityTracker;
|
||||||
|
import net.citizensnpcs.nms.v1_20_R3.entity.EntityHumanNPC;
|
||||||
//import net.gensokyoreimagined.nitori.plugins.NitoriConfig;
|
//import net.gensokyoreimagined.nitori.plugins.NitoriConfig;
|
||||||
import net.gensokyoreimagined.nitori.access.IMixinChunkMapAccess;
|
import net.gensokyoreimagined.nitori.access.IMixinChunkMapAccess;
|
||||||
import net.gensokyoreimagined.nitori.access.IMixinChunkMap_TrackedEntityAccess;
|
import net.gensokyoreimagined.nitori.access.IMixinChunkMap_TrackedEntityAccess;
|
||||||
@@ -133,7 +135,7 @@ public class ChunkMapMixin implements IMixinChunkMapAccess {
|
|||||||
@Redirect(method = "updatePlayers(Lcom/destroystokyo/paper/util/misc/PooledLinkedHashSets$PooledObjectLinkedOpenHashSet;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkMap$TrackedEntity;updatePlayer(Lnet/minecraft/server/level/ServerPlayer;)V"))
|
@Redirect(method = "updatePlayers(Lcom/destroystokyo/paper/util/misc/PooledLinkedHashSets$PooledObjectLinkedOpenHashSet;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkMap$TrackedEntity;updatePlayer(Lnet/minecraft/server/level/ServerPlayer;)V"))
|
||||||
private void handleCitizensPluginTracking(ChunkMap.TrackedEntity self, ServerPlayer serverPlayer) {
|
private void handleCitizensPluginTracking(ChunkMap.TrackedEntity self, ServerPlayer serverPlayer) {
|
||||||
// Nitori - Citizens tracker must run on the main thread to avoid cyclic wait
|
// Nitori - Citizens tracker must run on the main thread to avoid cyclic wait
|
||||||
if (IMixinChunkMapAccess.gensouHacks$citizensPluginTrackedEntityClass != null && IMixinChunkMapAccess.gensouHacks$citizensPluginHumanNPCEntityClass != null && ChunkMapMixin.gensouHacks$citizensPluginTrackedEntityClass.isInstance(this) && ChunkMapMixin.gensouHacks$citizensPluginHumanNPCEntityClass.isInstance(serverPlayer)) {
|
if (this instanceof CitizensEntityTracker && !(serverPlayer instanceof net.citizensnpcs.nms.v1_20_R3.entity.EntityHumanNPC)) {
|
||||||
((IMixinChunkMapAccess) (Object) ((ServerLevel) serverPlayer.level()).chunkSource.chunkMap).gensouHacks$runOnTrackerMainThread(() ->
|
((IMixinChunkMapAccess) (Object) ((ServerLevel) serverPlayer.level()).chunkSource.chunkMap).gensouHacks$runOnTrackerMainThread(() ->
|
||||||
this.updatePlayer(serverPlayer)
|
this.updatePlayer(serverPlayer)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user