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);
}
}
@@ -4,5 +4,6 @@
"carpet.rule.maxVillagersInABlock.desc": "The maximum number of villagers that can be in a block, set to -1 to disable.",
"carpet.rule.creativeNoInfinitePickup.desc": "If my inventory is full, don't pick up items in creative mode.",
"carpet.rule.autoUrl.desc": "Automatically add click event to URLs in chat.",
"carpet.rule.noBatSpawning.desc": "Prevents bats from spawning."
"carpet.rule.noBatSpawning.desc": "Prevents bats from spawning.",
"carpet.rule.offlineFakePlayers.desc": "Using offline uuid and skin so that fake players wont cause extra network traffic."
}
@@ -4,5 +4,6 @@
"carpet.rule.skipTicksForJoblessVillager.desc": "村民没有工作时,跳过村民的tick",
"carpet.rule.creativeNoInfinitePickup.desc": "创造模式下,玩家不能无限制地拾取物品",
"carpet.rule.autoUrl.desc": "自动识别URL并添加点击事件",
"carpet.rule.noBatSpawning.desc": "禁止蝙蝠生成"
}
"carpet.rule.noBatSpawning.desc": "禁止蝙蝠生成",
"carpet.rule.offlineFakePlayers.desc": "假玩家使用离线皮肤和uuid"
}
@@ -7,6 +7,7 @@
"AccessorPlayerAbilities",
"MixinAbstractSignBlock",
"MixinBlock",
"MixinFakePlayer",
"MixinFallingBlockEntity",
"MixinItem",
"MixinItemEntity",