feat: offlineFakePlayers

This commit is contained in:
zly2006 committed 2024-07-11 12:14:01 +08:00
1 parent cbb5e7760b
commit 9dc306f18a
6 files changed
+35 -7

No files matched your search

@@ -1,11 +1,9 @@
package com.github.zly2006.carpetslsaddition;
import carpet.CarpetSettings;
import carpet.api.settings.CarpetRule;
import carpet.api.settings.Rule;
import carpet.api.settings.RuleCategory;
import static com.github.zly2006.carpetslsaddition.ServerMain.*;
import static com.github.zly2006.carpetslsaddition.ServerMain.CARPET_ID;
public class SLSCarpetSettings {
@Rule(categories = {CARPET_ID})
@@ -20,4 +18,6 @@ public class SLSCarpetSettings {
public static boolean autoUrl = false;
@Rule(categories = {CARPET_ID})
public static boolean noBatSpawning = false;
@Rule(categories = {CARPET_ID})
public static boolean offlineFakePlayers = false;
}
@@ -0,0 +1,25 @@
package com.github.zly2006.carpetslsaddition.mixin;
import carpet.patches.EntityPlayerMPFake;
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
import com.mojang.authlib.GameProfile;
import net.minecraft.util.UserCache;
import net.minecraft.util.dynamic.DynamicSerializableUuid;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import java.util.Optional;
import java.util.UUID;
@Mixin(value = EntityPlayerMPFake.class)
public class MixinFakePlayer {
@Redirect(method = "createFake", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/UserCache;findByName(Ljava/lang/String;)Ljava/util/Optional;"))
private static Optional<GameProfile> onCreate(UserCache instance, String name) {
if (SLSCarpetSettings.offlineFakePlayers) {
UUID uuid = DynamicSerializableUuid.getOfflinePlayerUuid(name);
return Optional.of(new GameProfile(uuid, name));
}
return instance.findByName(name);
}
}