diff --git a/gradle.properties b/gradle.properties index 090abf2..5810807 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.14.9 # Mod Properties - mod_version = 0.3 + mod_version = 0.4 maven_group = com.github.zly2006 archives_base_name = carpet-sls-addition diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java b/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java index 930f6ce..a13fdcb 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java @@ -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; } diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/MixinFakePlayer.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/MixinFakePlayer.java new file mode 100644 index 0000000..d4f98d6 --- /dev/null +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/MixinFakePlayer.java @@ -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 onCreate(UserCache instance, String name) { + if (SLSCarpetSettings.offlineFakePlayers) { + UUID uuid = DynamicSerializableUuid.getOfflinePlayerUuid(name); + return Optional.of(new GameProfile(uuid, name)); + } + return instance.findByName(name); + } +} diff --git a/src/main/resources/assets/slsaddition/lang/en_us.json b/src/main/resources/assets/slsaddition/lang/en_us.json index 6ae0a7d..de2977c 100644 --- a/src/main/resources/assets/slsaddition/lang/en_us.json +++ b/src/main/resources/assets/slsaddition/lang/en_us.json @@ -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." } diff --git a/src/main/resources/assets/slsaddition/lang/zh_cn.json b/src/main/resources/assets/slsaddition/lang/zh_cn.json index b499b18..b30e283 100644 --- a/src/main/resources/assets/slsaddition/lang/zh_cn.json +++ b/src/main/resources/assets/slsaddition/lang/zh_cn.json @@ -4,5 +4,6 @@ "carpet.rule.skipTicksForJoblessVillager.desc": "村民没有工作时,跳过村民的tick", "carpet.rule.creativeNoInfinitePickup.desc": "创造模式下,玩家不能无限制地拾取物品", "carpet.rule.autoUrl.desc": "自动识别URL并添加点击事件", - "carpet.rule.noBatSpawning.desc": "禁止蝙蝠生成" -} \ No newline at end of file + "carpet.rule.noBatSpawning.desc": "禁止蝙蝠生成", + "carpet.rule.offlineFakePlayers.desc": "假玩家使用离线皮肤和uuid" +} diff --git a/src/main/resources/slsaddition.mixins.json b/src/main/resources/slsaddition.mixins.json index f11db13..8ab9924 100644 --- a/src/main/resources/slsaddition.mixins.json +++ b/src/main/resources/slsaddition.mixins.json @@ -7,6 +7,7 @@ "AccessorPlayerAbilities", "MixinAbstractSignBlock", "MixinBlock", + "MixinFakePlayer", "MixinFallingBlockEntity", "MixinItem", "MixinItemEntity",