diff --git a/build.gradle b/build.gradle index d2facec..c5e0f19 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ plugins { repositories { maven { url "https://maven.shedaniel.me/" } maven { url "https://repo.maven.apache.org"} + maven { url 'https://masa.dy.fi/maven' } mavenCentral() maven { url "https://www.cursemaven.com" @@ -27,8 +28,12 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "curse.maven:charm-318872:3358030" + + modApi("me.sargunvohra.mcmods:autoconfig1u:3.3.1") + + modImplementation "curse.maven:charm-318872:3393290" modImplementation "curse.maven:simple-utilities-356722:3349846" + modImplementation "curse.maven:litematica-308892:3387062" implementation "com.moandjiezana.toml:toml4j:0.7.2" implementation "com.electronwill.night-config:core:3.6.2" implementation "com.electronwill.night-config:toml:3.6.2" diff --git a/gradle.properties b/gradle.properties index d6768c5..bab1801 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,17 +3,17 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.17 -yarn_mappings=1.17+build.13 +minecraft_version=1.17.1 +yarn_mappings=1.17.1+build.46 loader_version=0.11.6 # Mod Properties - mod_version = 1.4.1 + mod_version = 1.4.2 maven_group = net.fabricmc archives_base_name = time-and-wind # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.36.0+1.17 +fabric_version=0.39.2+1.17 diff --git a/src/main/java/ru/aiefu/timeandwind/LitematicaIntegration.java b/src/main/java/ru/aiefu/timeandwind/LitematicaIntegration.java new file mode 100644 index 0000000..8a641cb --- /dev/null +++ b/src/main/java/ru/aiefu/timeandwind/LitematicaIntegration.java @@ -0,0 +1,10 @@ +package ru.aiefu.timeandwind; + +import fi.dy.masa.litematica.world.WorldSchematic; +import net.minecraft.world.World; + +public class LitematicaIntegration { + public static boolean checkInstance(World instance){ + return instance instanceof WorldSchematic; + } +} diff --git a/src/main/java/ru/aiefu/timeandwind/TAWCommands.java b/src/main/java/ru/aiefu/timeandwind/TAWCommands.java index 57ae640..966d7f4 100644 --- a/src/main/java/ru/aiefu/timeandwind/TAWCommands.java +++ b/src/main/java/ru/aiefu/timeandwind/TAWCommands.java @@ -1,28 +1,43 @@ package ru.aiefu.timeandwind; +import com.google.gson.GsonBuilder; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import io.netty.buffer.Unpooled; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.passive.VillagerEntity; +import net.minecraft.network.PacketByteBuf; import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.LiteralText; +import net.minecraft.util.Identifier; +import java.io.File; +import java.util.ArrayList; import java.util.List; public class TAWCommands { - public static void reloadCfgReg(CommandDispatcher dispatcher){ + public static void registerCommands(CommandDispatcher dispatcher){ dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("reload").executes(context -> reloadCfg(context.getSource())))); + dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("get-current-world-id").executes(context -> printCurrentWorldId(context.getSource())))); + + dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("parse-worlds-ids").executes(context -> parseWorldsIds(context.getSource())))); + + dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("get-ambient-darkness").executes(context -> printAmbientDarkness(context.getSource())))); + dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("get-light-level").executes(context -> getLightLevel(context.getSource())))); + + dispatcher.register(CommandManager.literal("taw").then(CommandManager.literal("get-time-data").executes(context -> getTimeConfig(context.getSource())))); } public static int reloadCfg(ServerCommandSource source) throws CommandSyntaxException { - if(source.hasPermissionLevel(4) || source.getMinecraftServer().isHost(source.getPlayer().getGameProfile())) { - MinecraftServer server = source.getMinecraftServer(); + if(source.hasPermissionLevel(4) || source.getServer().isHost(source.getPlayer().getGameProfile())) { + MinecraftServer server = source.getServer(); IOManager.readTimeData(); - source.getMinecraftServer().getWorlds().forEach(serverWorld -> { + source.getServer().getWorlds().forEach(serverWorld -> { String id = serverWorld.getRegistryKey().getValue().toString(); if (TimeAndWind.timeDataMap.containsKey(id)) { ((IDimType) serverWorld.getDimension()).setCycleDuration(TimeAndWind.timeDataMap.get(id).dayDuration, TimeAndWind.timeDataMap.get(id).nightDuration); @@ -44,5 +59,43 @@ public static int reloadCfg(ServerCommandSource source) throws CommandSyntaxExce } return 0; } + public static int printCurrentWorldId(ServerCommandSource source) throws CommandSyntaxException { + String id = source.getPlayer().world.getRegistryKey().getValue().toString(); + source.sendFeedback(new LiteralText(id), false); + ServerPlayNetworking.send(source.getPlayer(), new Identifier(TimeAndWind.MOD_ID, "world_id_clipboard"), new PacketByteBuf(Unpooled.buffer()).writeString(id)); + return 0; + } + public static int printAmbientDarkness(ServerCommandSource source) throws CommandSyntaxException { + source.sendFeedback(new LiteralText("Ambient Darkness: " + source.getPlayer().world.getAmbientDarkness()), false); + return 0; + } + public static int parseWorldsIds(ServerCommandSource source) throws CommandSyntaxException { + if(source.hasPermissionLevel(4) || source.getServer().isHost(source.getPlayer().getGameProfile())) { + List ids = new ArrayList<>(); + source.getServer().getWorlds().forEach(serverWorld -> ids.add(serverWorld.getRegistryKey().getValue().toString())); + File file = new File("taw-worlds-ids.json"); + new IOManager().fileWriter(file, new GsonBuilder().setPrettyPrinting().create().toJson(ids)); + source.sendFeedback(new LiteralText("Saved to " + file.getAbsolutePath()), false); + } else source.sendError(new LiteralText("[Time & Wind] Permission level of 4 is required to run this command")); + return 0; + } + public static int getLightLevel(ServerCommandSource source) throws CommandSyntaxException { + source.sendFeedback(new LiteralText("Light Level: " + source.getPlayer().world.getLightLevel(source.getPlayer().getBlockPos())), false); + return 0; + } + + public static int getTimeConfig(ServerCommandSource source) throws CommandSyntaxException { + ServerPlayerEntity player = source.getPlayer(); + String worldId = player.world.getRegistryKey().getValue().toString(); + if(player.world.getDimension().hasFixedTime()){ + source.sendFeedback(new LiteralText("Current dimension has fixed time, custom configuration is useless"), false); + } else source.sendFeedback(new LiteralText("Current dimension does not has fixed time, custom configuration should work fine"), false); + if(TimeAndWind.timeDataMap.containsKey(worldId)) { + TimeDataStorage storage = TimeAndWind.timeDataMap.get(worldId); + source.sendFeedback(new LiteralText("Server config for current world: Day Duration: " + storage.dayDuration + " Night Duration: " + storage.nightDuration), true); + ServerPlayNetworking.send(player, new Identifier(TimeAndWind.MOD_ID, "cfg_debug_info"), new PacketByteBuf(Unpooled.buffer())); + } else source.sendError(new LiteralText("No Data found for current world on server side")); + return 0; + } } diff --git a/src/main/java/ru/aiefu/timeandwind/TimeAndWind.java b/src/main/java/ru/aiefu/timeandwind/TimeAndWind.java index 209f4bb..edf6945 100644 --- a/src/main/java/ru/aiefu/timeandwind/TimeAndWind.java +++ b/src/main/java/ru/aiefu/timeandwind/TimeAndWind.java @@ -11,6 +11,8 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.Identifier; import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.IOException; import java.nio.file.Files; @@ -20,17 +22,17 @@ public class TimeAndWind implements ModInitializer { public static final String MOD_ID = "timeandwind"; + public static final Logger LOGGER = LogManager.getLogger(); public static HashMap timeDataMap; @Override public void onInitialize() { + LOGGER.info("[Time & Wind] Initializing..."); craftPaths(); - ServerLifecycleEvents.SERVER_STARTING.register(server -> { - IOManager.readTimeData(); - }); - CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> { - TAWCommands.reloadCfgReg(dispatcher); - }); + registerReceivers(); + ServerLifecycleEvents.SERVER_STARTING.register(server -> IOManager.readTimeData()); + CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> TAWCommands.registerCommands(dispatcher)); + LOGGER.info("[Time & Wind] I'm in time control now!"); } public void craftPaths(){ @@ -67,6 +69,7 @@ public static void sendConfigSyncPacket(ServerPlayerEntity player){ NbtCompound tag = new NbtCompound(); tag.put("tawConfig", listTag); ServerPlayNetworking.send(player, new Identifier(MOD_ID, "sync_config"), new PacketByteBuf(Unpooled.buffer()).writeNbt(tag)); + LOGGER.info("[Time & Wind] Sending config to player"); } } public static String get24TimeFormat(World world){ @@ -104,5 +107,11 @@ public static String get24TimeFormat(World world){ } return new int[]{0,0}; } - + private void registerReceivers(){ + ServerPlayNetworking.registerGlobalReceiver(new Identifier(TimeAndWind.MOD_ID, "request_resync"), (server, player, handler, buf, responseSender) -> { + sendConfigSyncPacket(player); + LOGGER.warn("[Time & Wind] Player requested config resync, this shouldn't happen"); + LOGGER.info("[Time & Wind] Sending resync packet"); + }); + } } diff --git a/src/main/java/ru/aiefu/timeandwind/TimeAndWindClient.java b/src/main/java/ru/aiefu/timeandwind/TimeAndWindClient.java index 139f6d6..9008327 100644 --- a/src/main/java/ru/aiefu/timeandwind/TimeAndWindClient.java +++ b/src/main/java/ru/aiefu/timeandwind/TimeAndWindClient.java @@ -1,12 +1,16 @@ package ru.aiefu.timeandwind; +import io.netty.buffer.Unpooled; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.text.LiteralText; import net.minecraft.util.Identifier; +import net.minecraft.util.Util; import java.util.HashMap; @@ -26,21 +30,53 @@ public void onInitializeClient() { } }); ClientPlayNetworking.registerGlobalReceiver(new Identifier(TimeAndWind.MOD_ID, "sync_config"), (client, handler, buf, responseSender) -> { - NbtList list = buf.readNbt().getList("tawConfig", 10); - TimeAndWind.timeDataMap = new HashMap<>(); - for (int i = 0; i < list.size(); ++i) { - NbtCompound tag = list.getCompound(i); - String id = tag.getString("id"); - long dayD = tag.getLong("dayD"); - long nightD = tag.getLong("nightD"); - TimeDataStorage storage = new TimeDataStorage(dayD, nightD); - TimeAndWind.timeDataMap.put(id, storage); + if(buf.readableBytes() > 0 ){ + NbtCompound nbtCMP = buf.readNbt(); + if(nbtCMP != null) { + NbtList list = nbtCMP.getList("tawConfig", 10); + TimeAndWind.timeDataMap = new HashMap<>(); + for (int i = 0; i < list.size(); ++i) { + NbtCompound tag = list.getCompound(i); + String id = tag.getString("id"); + long dayD = tag.getLong("dayD"); + long nightD = tag.getLong("nightD"); + TimeDataStorage storage = new TimeDataStorage(dayD, nightD); + TimeAndWind.timeDataMap.put(id, storage); + } + ClientWorld clientWorld = MinecraftClient.getInstance().world; + if (clientWorld != null) { + IDimType dim = (IDimType) clientWorld.getDimension(); + TimeDataStorage storage = TimeAndWind.timeDataMap.get(clientWorld.getRegistryKey().getValue().toString()); + dim.setCycleDuration(storage.dayDuration, storage.nightDuration); + } + TimeAndWind.LOGGER.info("[Time & Wind] Configuration synchronized"); + return; + } } - ClientWorld clientWorld = MinecraftClient.getInstance().world; - if(clientWorld != null) { - IDimType dim = (IDimType) clientWorld.getDimension(); - TimeDataStorage storage = TimeAndWind.timeDataMap.get(clientWorld.getRegistryKey().getValue().toString()); - dim.setCycleDuration(storage.dayDuration, storage.nightDuration); + TimeAndWind.LOGGER.warn("[Time & Wind] Sync failed, requesting resync"); + ClientPlayNetworking.send(new Identifier(TimeAndWind.MOD_ID, "request_resync"), new PacketByteBuf(Unpooled.buffer())); + }); + ClientPlayNetworking.registerGlobalReceiver(new Identifier(TimeAndWind.MOD_ID, "cfg_debug_info"), (client, handler, buf, responseSender) -> { + try { + String worldId = client.world.getRegistryKey().getValue().toString(); + if (TimeAndWind.timeDataMap.containsKey(worldId)) { + TimeDataStorage storage = TimeAndWind.timeDataMap.get(worldId); + client.player.sendSystemMessage(new LiteralText("Client config for current world: Day Duration: " + storage.dayDuration + " Night Duration: " + storage.nightDuration), Util.NIL_UUID); + } else + client.player.sendSystemMessage(new LiteralText("No Data found for current world on client side"), Util.NIL_UUID); + } catch (NullPointerException e){ + e.printStackTrace(); + } + }); + ClientPlayNetworking.registerGlobalReceiver(new Identifier(TimeAndWind.MOD_ID, "world_id_clipboard"), (client, handler, buf, responseSender) -> { + try{ + if(buf.readableBytes() > 0) { + String string = buf.readString(); + client.keyboard.setClipboard(string); + client.player.sendMessage(new LiteralText("Also copied this to clipboard"), false); + } + } catch (Exception e){ + e.printStackTrace(); } }); } diff --git a/src/main/java/ru/aiefu/timeandwind/mixin/CharmPlayerStateMixins.java b/src/main/java/ru/aiefu/timeandwind/mixin/CharmPlayerStateMixins.java deleted file mode 100644 index 92184ff..0000000 --- a/src/main/java/ru/aiefu/timeandwind/mixin/CharmPlayerStateMixins.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.aiefu.timeandwind.mixin; - -import net.minecraft.server.network.ServerPlayerEntity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.Constant; -import org.spongepowered.asm.mixin.injection.ModifyConstant; -import ru.aiefu.timeandwind.IDimType; -import svenhjol.charm.module.player_state.PlayerState; - -@Pseudo -@Mixin(PlayerState.class) -public class CharmPlayerStateMixins { - @ModifyConstant(method = "serverCallback", constant = @Constant(longValue = 24000L), remap = false) - private static long patchDayDuration(long l, ServerPlayerEntity player){ - return ((IDimType)player.world.getDimension()).getCycleDuration(); - } - @ModifyConstant(method = "serverCallback", constant = @Constant(longValue = 12700L), remap = false) - private static long patchHalfDayDuration(long l, ServerPlayerEntity player){ - return ((IDimType)player.world.getDimension()).getCycleDuration() / 2; - } -} diff --git a/src/main/java/ru/aiefu/timeandwind/mixin/MinecraftClientMixin.java b/src/main/java/ru/aiefu/timeandwind/mixin/MinecraftClientMixin.java deleted file mode 100644 index cfaabdb..0000000 --- a/src/main/java/ru/aiefu/timeandwind/mixin/MinecraftClientMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package ru.aiefu.timeandwind.mixin; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.world.dimension.DimensionType; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import ru.aiefu.timeandwind.IDimType; -import ru.aiefu.timeandwind.TAWScheduler; -import ru.aiefu.timeandwind.TimeAndWind; -import ru.aiefu.timeandwind.TimeDataStorage; - -@Mixin(MinecraftClient.class) -public class MinecraftClientMixin { - @Shadow @Nullable public ClientWorld world; - - @Inject(method = "joinWorld", at =@At(value = "INVOKE", target = "net/minecraft/client/MinecraftClient.setWorld(Lnet/minecraft/client/world/ClientWorld;)V")) - private void attachTimeData(ClientWorld world, CallbackInfo ci){ - String worldId = this.world.getRegistryKey().getValue().toString(); - DimensionType dimension = this.world.getDimension(); - if (TimeAndWind.timeDataMap.containsKey(worldId)) { - TimeDataStorage storage = TimeAndWind.timeDataMap.get(worldId); - ((IDimType) dimension).setCycleDuration(storage.dayDuration, storage.nightDuration); - } - - TAWScheduler.createTAWSchedule(dimension, this.world.getRegistryKey().getValue().getPath(), "_villager_taw", false); - TAWScheduler.createTAWSchedule(dimension, this.world.getRegistryKey().getValue().getPath(), "_villager_baby_taw", true); - } -} diff --git a/src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsGIHMixins.java b/src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsMixins.java similarity index 95% rename from src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsGIHMixins.java rename to src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsMixins.java index 0f93df3..de41c8e 100644 --- a/src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsGIHMixins.java +++ b/src/main/java/ru/aiefu/timeandwind/mixin/SimpleUtilsMixins.java @@ -1,5 +1,6 @@ package ru.aiefu.timeandwind.mixin; + import net.johnvictorfs.simple_utilities.hud.GameInfoHud; import net.minecraft.client.MinecraftClient; import org.spongepowered.asm.mixin.Mixin; @@ -11,7 +12,7 @@ @Pseudo @Mixin(GameInfoHud.class) -public class SimpleUtilsGIHMixins { +public class SimpleUtilsMixins { @Inject(method = "parseTime", at =@At("HEAD"), cancellable = true, remap = false) private static void patchTimeParserTAW(long time, CallbackInfoReturnable cir){ cir.setReturnValue(TimeAndWind.get24TimeFormat(MinecraftClient.getInstance().world)); diff --git a/src/main/java/ru/aiefu/timeandwind/mixin/VillagerInjection.java b/src/main/java/ru/aiefu/timeandwind/mixin/VillagerInjection.java index b585a62..ba3aeb5 100644 --- a/src/main/java/ru/aiefu/timeandwind/mixin/VillagerInjection.java +++ b/src/main/java/ru/aiefu/timeandwind/mixin/VillagerInjection.java @@ -49,7 +49,7 @@ private void craftPacthedTaskBaby(Brain brain, Schedule schedule){ @ModifyConstant(method = "hasRecentlySlept", constant = @Constant(longValue = 24000L)) - private long hasRecentlyWorkedAndSleptPatchTAW(long l){ - return 24000L; + private long hasRecentlySleptPatchTAW(long l){ + return ((IDimType)this.world.getDimension()).getCycleDuration(); } } diff --git a/src/main/java/ru/aiefu/timeandwind/mixin/WorldMixins.java b/src/main/java/ru/aiefu/timeandwind/mixin/WorldMixins.java index 407e186..708e27a 100644 --- a/src/main/java/ru/aiefu/timeandwind/mixin/WorldMixins.java +++ b/src/main/java/ru/aiefu/timeandwind/mixin/WorldMixins.java @@ -1,9 +1,9 @@ package ru.aiefu.timeandwind.mixin; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.util.profiler.Profiler; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.MutableWorldProperties; -import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; import org.spongepowered.asm.mixin.Final; @@ -12,10 +12,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import ru.aiefu.timeandwind.IDimType; -import ru.aiefu.timeandwind.TAWScheduler; -import ru.aiefu.timeandwind.TimeAndWind; -import ru.aiefu.timeandwind.TimeDataStorage; +import ru.aiefu.timeandwind.*; import java.util.function.Supplier; @@ -29,14 +26,15 @@ public class WorldMixins { @Inject(method = "", at =@At("RETURN")) private void attachTimeData(MutableWorldProperties properties, RegistryKey registryRef, DimensionType dimensionType, Supplier profiler, boolean isClient, boolean debugWorld, long seed, CallbackInfo ci){ - if(this instanceof StructureWorldAccess) { - String worldId = this.registryKey.getValue().toString(); - if (TimeAndWind.timeDataMap.containsKey(worldId)) { - TimeDataStorage storage = TimeAndWind.timeDataMap.get(worldId); - ((IDimType) this.dimension).setCycleDuration(storage.dayDuration, storage.nightDuration); - } - TAWScheduler.createTAWSchedule(this.dimension, this.registryKey.getValue().getPath(), "_villager_taw", false); - TAWScheduler.createTAWSchedule(this.dimension, this.registryKey.getValue().getPath(), "_villager_baby_taw", true); + if(FabricLoader.getInstance().isModLoaded("litematica") && LitematicaIntegration.checkInstance((World) (Object) this)) { + return; } + String worldId = this.registryKey.getValue().toString(); + if (TimeAndWind.timeDataMap.containsKey(worldId)) { + TimeDataStorage storage = TimeAndWind.timeDataMap.get(worldId); + ((IDimType) this.dimension).setCycleDuration(storage.dayDuration, storage.nightDuration); + } + TAWScheduler.createTAWSchedule(this.dimension, this.registryKey.getValue().getPath(), "_villager_taw", false); + TAWScheduler.createTAWSchedule(this.dimension, this.registryKey.getValue().getPath(), "_villager_baby_taw", true); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 21d1146..c82a343 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,7 +30,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": "*", - "minecraft": "1.17.x", + "minecraft": ">=1.17.1", "java": ">=16" } } diff --git a/src/main/resources/taw.mixins.json b/src/main/resources/taw.mixins.json index c1e92dd..bc7ad42 100644 --- a/src/main/resources/taw.mixins.json +++ b/src/main/resources/taw.mixins.json @@ -4,7 +4,6 @@ "package": "ru.aiefu.timeandwind.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ - "CharmPlayerStateMixins", "DimensionTypeMixin", "EntityMixins", "NoBrainInjection", @@ -16,8 +15,7 @@ ], "client": [ "DebugHudMixins", - "MinecraftClientMixin", - "SimpleUtilsGIHMixins", + "SimpleUtilsMixins", "WorldRendererMixins" ], "injectors": {