Jump to content

Compatibility Issue with Mr.CrayFish Obfuscate


Moriz

Recommended Posts

Hello, Im working on a mod called OrangeSunshine, I have run into an issue where the Mr.CrayFish mod trys to cast my "PlayerDrugs" class to its "SyncedPlayerData" class. I'm unsure if this is somthing I can fix, or somthing they will have to.

Below is my stacktrace and both of the classes that cause the issue.

 

also these are the sources of both of our mods.

 

https://github.com/MrCrayfish/Obfuscate

https://github.com/Moriz82/OrangeSunshine

 

Here is the stack trace:

[13Jan2022 16:58:42.645] [Server thread/ERROR] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: Exception caught during firing event: com.BrotherHoodOfDiethylamide.OrangeSunshine.capabilities.PlayerDrugs$Implementation cannot be cast to com.mrcrayfish.obfuscate.common.data.SyncedPlayerData$DataHolder
	Index: 3
	Listeners:
		0: HIGHEST
		1: ASM: net.minecraftforge.common.ForgeInternalHandler@2af1cde2 onEntityJoinWorld(Lnet/minecraftforge/event/entity/EntityJoinWorldEvent;)V
		2: NORMAL
		3: ASM: com.mrcrayfish.obfuscate.common.data.SyncedPlayerData@1649d454 onPlayerJoinWorld(Lnet/minecraftforge/event/entity/EntityJoinWorldEvent;)V
java.lang.ClassCastException: com.BrotherHoodOfDiethylamide.OrangeSunshine.capabilities.PlayerDrugs$Implementation cannot be cast to com.mrcrayfish.obfuscate.common.data.SyncedPlayerData$DataHolder
	at com.mrcrayfish.obfuscate.common.data.SyncedPlayerData.getDataHolder(SyncedPlayerData.java:174)
	at com.mrcrayfish.obfuscate.common.data.SyncedPlayerData.onPlayerJoinWorld(SyncedPlayerData.java:212)
	at net.minecraftforge.eventbus.ASMEventHandler_27_SyncedPlayerData_onPlayerJoinWorld_EntityJoinWorldEvent.invoke(.dynamic)
	at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85)
	at net.minecraftforge.eventbus.EventBus$$Lambda$2554/57696956.invoke(Unknown Source)
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302)
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283)
	at net.minecraft.world.server.ServerWorld.func_217448_f(ServerWorld.java:788)
	at net.minecraft.world.server.ServerWorld.func_217435_c(ServerWorld.java:780)
	at net.minecraft.server.management.PlayerList.func_72355_a(PlayerList.java:185)
	at net.minecraft.network.login.ServerLoginNetHandler.func_147326_c(ServerLoginNetHandler.java:118)
	at net.minecraft.network.login.ServerLoginNetHandler.func_73660_a(ServerLoginNetHandler.java:65)
	at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:222)
	at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:134)
	at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:865)
	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:787)
	at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:78)
	at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:642)
	at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServer.java:232)
	at net.minecraft.server.MinecraftServer$$Lambda$5300/334348732.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)

 

Here is my PlayerDrugs class :

 

package com.BrotherHoodOfDiethylamide.OrangeSunshine.capabilities;

import com.BrotherHoodOfDiethylamide.OrangeSunshine.OrangeSunshine;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.drugs.Drug;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.drugs.DrugEffects;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.drugs.DrugInstance;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.network.ActiveDrugCapSync;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.network.DrugCapSync;
import com.BrotherHoodOfDiethylamide.OrangeSunshine.network.PacketHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.INBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.LogicalSidedProvider;
import net.minecraftforge.fml.network.PacketDistributor;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;

public class PlayerDrugs {
    static class Implementation implements IPlayerDrugs {
        private final Map<Drug, Float> active = new HashMap<>();
        private final List<DrugInstance> sources = new ArrayList<>();
        private final Map<Drug, Integer> abuseTimers = new HashMap<>();
        private final DrugEffects drugEffects = new DrugEffects();
        private int smokeTick = 0;

        @Override
        public void addDrugSource(DrugInstance drug) {
            sources.add(drug);
        }

        @Override
        public void setSources(List<DrugInstance> drugInstances) {
            sources.clear();
            sources.addAll(drugInstances);
        }

        @Override
        public void removeDrugSource(DrugInstance drug) {
            sources.remove(drug);
        }

        @Override
        public void clearDrugSources() {
            sources.clear();
        }

        @Override
        public List<DrugInstance> getDrugSources() {
            return sources;
        }

        @Override
        public void putActive(Drug drug, float effect) {
            if (effect > 0) {
                active.put(drug, effect);
            } else {
                active.remove(drug);
            }
        }

        @Nullable
        @Override
        public Float getActive(Drug drug) {
            return active.get(drug);
        }

        @Override
        public void clearActives() {
            active.clear();
        }

        @Override
        public void setActives(Map<Drug, Float> activeDrugs) {
            active.clear();
            active.putAll(activeDrugs);
        }

        @Override
        public Map<Drug, Float> getActiveDrugs() {
            return active;
        }

        @Override
        public void addDrugAbuse(Drug drug, int ticks) {
            abuseTimers.put(drug, abuseTimers.getOrDefault(drug, 0) + ticks);
        }

        @Override
        public int getDrugAbuse(Drug drug) {
            return abuseTimers.getOrDefault(drug, 0);
        }

        @Override
        public void tickDrugAbuse() {
            abuseTimers.replaceAll((drug, tick) -> tick - 1);
            abuseTimers.values().removeIf(tick -> tick <= 0);
        }

        @Override
        public void setDrugAbuseMap(Map<Drug, Integer> drugAbuseMap) {
            abuseTimers.clear();
            abuseTimers.putAll(drugAbuseMap);
        }

        @Override
        public Map<Drug, Integer> getDrugAbuseMap() {
            return abuseTimers;
        }

        @Override
        public DrugEffects getDrugEffects() {
            return drugEffects;
        }

        @Override
        public void setSmokeTicks(int ticks) {
            smokeTick = ticks;
        }

        @Override
        public int getSmokeTicks() {
            return smokeTick;
        }
    }

    static class Provider implements ICapabilitySerializable<CompoundNBT> {
        private final Implementation defaultImplementation = new Implementation();
        private final LazyOptional<IPlayerDrugs> optional = LazyOptional.of(() -> defaultImplementation);

        @Nonnull
        @Override
        public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
            return optional.cast();
        }

        @Override
        public CompoundNBT serializeNBT() {
            return (CompoundNBT) PlayerProperties.PLAYER_DRUGS.writeNBT(defaultImplementation, null);
        }

        @Override
        public void deserializeNBT(CompoundNBT nbt) {
            PlayerProperties.PLAYER_DRUGS.readNBT(defaultImplementation, null, nbt);
        }

        public void invalidate() {
            optional.invalidate();
        }
    }

    static class Storage implements Capability.IStorage<IPlayerDrugs>{
        @Nullable
        @Override
        public INBT writeNBT(Capability<IPlayerDrugs> capability, IPlayerDrugs instance, Direction side) {
            CompoundNBT nbt = new CompoundNBT();

            ListNBT drugSources = new ListNBT();
            for (DrugInstance drugInstance : instance.getDrugSources()) {
                CompoundNBT drugProperties = new CompoundNBT();
                drugProperties.putString("id", drugInstance.toName());
                drugProperties.putInt("delay", drugInstance.getDelayTime());
                drugProperties.putFloat("potency", drugInstance.getPotency());
                drugProperties.putInt("duration", drugInstance.getDuration());
                drugProperties.putInt("timeActive", drugInstance.getTimeActive());
                drugSources.add(drugProperties);
            }
            nbt.put("sources", drugSources);

            CompoundNBT drugAbuse = new CompoundNBT();
            instance.getDrugAbuseMap().forEach((drug, tick) -> {
                if (tick > 0)
                    drugAbuse.putInt(Drug.toName(drug), tick);
            });
            nbt.put("abuse", drugAbuse);

            return nbt;
        }

        @Override
        public void readNBT(Capability<IPlayerDrugs> capability, IPlayerDrugs instance, Direction side, INBT nbtIn) {
            if (nbtIn != null) {
                CompoundNBT nbt = (CompoundNBT) nbtIn;

                ListNBT drugSources = nbt.getList("sources", 10);
                for (INBT drugSource : drugSources) {
                    CompoundNBT drugProperties = (CompoundNBT) drugSource;
                    Drug drug = Drug.byName(drugProperties.getString("id"));
                    if (drug == null) {
                        OrangeSunshine.LOGGER.warn("Tried to read non-existent registry {} from sources, ignoring", drugProperties.getString("id"));
                        continue;
                    }
                    DrugInstance drugInstance = new DrugInstance(drug, drugProperties.getInt("delay"), drugProperties.getFloat("potency"), drugProperties.getInt("duration"), drugProperties.getInt("timeActive"));
                    instance.addDrugSource(drugInstance);
                }

                CompoundNBT drugAbuse = nbt.getCompound("abuse");
                for (String drugKey : drugAbuse.getAllKeys()) {
                    Drug drug = Drug.byName(drugKey);
                    if (drug == null) {
                        OrangeSunshine.LOGGER.warn("Tried to read non-existent registry {} from abuse map, ignoring", drugKey);
                        continue;
                    }
                    instance.addDrugAbuse(drug, drugAbuse.getInt(drugKey));
                }
            }
        }
    }

    static void register() {
        CapabilityManager.INSTANCE.register(IPlayerDrugs.class, new PlayerDrugs.Storage(), PlayerDrugs.Implementation::new);

        MinecraftForge.EVENT_BUS.addGenericListener(Entity.class, PlayerDrugs::attachCapabilitiesEntity);
        MinecraftForge.EVENT_BUS.addListener(PlayerDrugs::onPlayerLoggedIn);
        MinecraftForge.EVENT_BUS.addListener(PlayerDrugs::onPlayerChangedDimension);
        MinecraftForge.EVENT_BUS.addListener(PlayerDrugs::onServerTick);
    }

    static void attachCapabilitiesEntity(AttachCapabilitiesEvent<Entity> event) {
        if (event.getObject() instanceof PlayerEntity) {
            PlayerDrugs.Provider provider = new PlayerDrugs.Provider();
            event.addCapability(new ResourceLocation(OrangeSunshine.MOD_ID, "drugs"), provider);
            event.addListener(provider::invalidate);
        }
    }

    static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
        sync((ServerPlayerEntity) event.getPlayer());
        syncActives((ServerPlayerEntity) event.getPlayer());
    }

    static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
        sync((ServerPlayerEntity) event.getPlayer());
        syncActives((ServerPlayerEntity) event.getPlayer());
    }

    private static int totalTicks = 1;
    static void onServerTick(TickEvent.ServerTickEvent event) {
        if (event.phase == TickEvent.Phase.START) {
            if (totalTicks++ % (5*20) == 0) {
                MinecraftServer server = LogicalSidedProvider.INSTANCE.get(LogicalSide.SERVER);
                for (ServerPlayerEntity player : server.getPlayerList().getPlayers()) {
                    sync(player);
                }
            }
        }
    }

    public static void sync(ServerPlayerEntity player) {
        List<DrugInstance> drugInstances = Drug.getDrugSources(player);
        PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), new DrugCapSync(drugInstances));
    }

    private static void syncActives(ServerPlayerEntity player) {
        Map<Drug, Float> actives = Drug.getActiveDrugs(player);
        PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), new ActiveDrugCapSync(actives));
    }
}

 

Here is Mr.CrayFish's SyncedPlayerData class:

 

package com.mrcrayfish.obfuscate.common.data;

import com.google.common.collect.ImmutableList;
import com.mrcrayfish.obfuscate.Reference;
import com.mrcrayfish.obfuscate.network.HandshakeMessages;
import com.mrcrayfish.obfuscate.network.PacketHandler;
import com.mrcrayfish.obfuscate.network.message.MessageSyncPlayerData;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fmllegacy.network.PacketDistributor;
import org.apache.commons.lang3.Validate;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * <p>Basically a clone of DataParameter system. It's not good to init custom data parameters to
 * other entities that aren't your own. It can cause mismatched ids and crash the game. This synced
 * data system attempts to solve the problem (at least for player entities) and allows data to be
 * easily synced to clients. The data can only be controlled on the logical server. Changing the
 * data on the logical client will have no affect on the server.</p>
 * <p></p>
 * <p>To use this system you first need to create a synced data key instance. This should be a public
 * static final field. You will need to specify an key id (based on your modid), the serializer, and
 * a default value supplier.</p>
 * <code>public static final SyncedDataKey&lt;Double&gt; CURRENT_SPEED = SyncedDataKey.create(new ResourceLocation("examplemod:speed"), Serializers.DOUBLE, () -> 0.0);</code>
 * <p></p>
 * <p>Next the key needs to be registered. This can simply be done in the common setup of your mod.</p>
 * <code>SyncedPlayerData.instance().registerKey(CURRENT_SPEED);</code>
 * <p></p>
 * <p>Then anywhere you want (as long as it's on the main thread), you can set the value by calling</p>
 * <code>SyncedPlayerData.instance().set(player, CURRENT_SPEED, 5.0);</code>
 * <p></p>
 * <p>The value can be retrieved on the server or client by calling</p>
 * <code>SyncedPlayerData.instance().get(player, CURRENT_SPEED);</code>
 * <p></p>
 * <p>Author: MrCrayfish</p>
 */
public class SyncedPlayerData
{
    @CapabilityInject(DataHolder.class)
    public static final Capability<DataHolder> CAPABILITY = null;

    private static SyncedPlayerData instance;

    private final Map<ResourceLocation, SyncedDataKey<?>> registeredDataKeys = new HashMap<>();
    private final Map<Integer, SyncedDataKey<?>> idToDataKey = new HashMap<>();
    private int nextKeyId = 0;
    private boolean dirty = false;

    private SyncedPlayerData() {}

    public static SyncedPlayerData instance()
    {
        if(instance == null)
        {
            instance = new SyncedPlayerData();
        }
        return instance;
    }

    public static void onRegisterCapability(RegisterCapabilitiesEvent event)
    {
        event.register(DataHolder.class);
    }

    /**
     * Registers a synced data key into the system.
     *
     * @param key a synced data key instance
     */
    public void registerKey(SyncedDataKey<?> key)
    {
        if(this.registeredDataKeys.containsKey(key.getKey()))
        {
            throw new IllegalArgumentException(String.format("The data key '%s' is already registered!", key.getKey()));
        }
        int nextId = this.nextKeyId++;
        key.setId(nextId);
        this.registeredDataKeys.put(key.getKey(), key);
        this.idToDataKey.put(nextId, key);
    }

    /**
     * Sets the value of a synced data key to the specified player
     *
     * @param player the player to assign the value to
     * @param key    a registered synced data key
     * @param value  a new value that matches the synced data key type
     */
    public <T> void set(Player player, SyncedDataKey<T> key, T value)
    {
        if(!this.registeredDataKeys.values().contains(key))
        {
            throw new IllegalArgumentException(String.format("The data key '%s' is not registered!", key.getKey()));
        }
        DataHolder holder = this.getDataHolder(player);
        if(holder != null && holder.set(player, key, value))
        {
            if(!player.level.isClientSide())
            {
                this.dirty = true;
            }
        }
    }

    /**
     * Gets the value for the synced data key from the specified player. It is best to check that
     * the player is alive before getting the value.
     *
     * @param player the player to retrieve the data from
     * @param key    a registered synced data key
     */
    public <T> T get(Player player, SyncedDataKey<T> key)
    {
        if(!this.registeredDataKeys.values().contains(key))
        {
            throw new IllegalArgumentException(String.format("The data key '%s' is not registered!", key.getKey()));
        }
        DataHolder holder = this.getDataHolder(player);
        return holder != null ? holder.get(key) : key.getDefaultValueSupplier().get();
    }

    @OnlyIn(Dist.CLIENT)
    public <T> void updateClientEntry(Player player, SyncedPlayerData.DataEntry<T> entry)
    {
        SyncedPlayerData.instance().set(player, entry.getKey(), entry.getValue());
    }

    @Nullable
    private SyncedDataKey<?> getKey(int id)
    {
        return this.idToDataKey.get(id);
    }

    public List<SyncedDataKey<?>> getKeys()
    {
        return ImmutableList.copyOf(this.registeredDataKeys.values());
    }

    @Nullable
    private DataHolder getDataHolder(Player player)
    {
        return player.getCapability(CAPABILITY, null).orElse(null);
    }

    @SubscribeEvent
    public void attachCapabilities(AttachCapabilitiesEvent<Entity> event)
    {
        if(event.getObject() instanceof Player)
        {
            event.addCapability(new ResourceLocation(Reference.MOD_ID, "synced_player_data"), new Provider());
        }
    }

    @SubscribeEvent
    public void onStartTracking(PlayerEvent.StartTracking event)
    {
        if(event.getTarget() instanceof Player && !event.getPlayer().level.isClientSide())
        {
            Player player = (Player) event.getTarget();
            DataHolder holder = this.getDataHolder(player);
            if(holder != null)
            {
                List<SyncedPlayerData.DataEntry<?>> entries = holder.gatherAll();
                entries.removeIf(entry -> !entry.getKey().shouldSyncToAllPlayers());
                if(!entries.isEmpty())
                {
                    PacketHandler.getPlayChannel().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getPlayer()), new MessageSyncPlayerData(player.getId(), entries));
                }
            }
        }
    }

    @SubscribeEvent
    public void onPlayerJoinWorld(EntityJoinWorldEvent event)
    {
        Entity entity = event.getEntity();
        if(entity instanceof Player player && !event.getWorld().isClientSide())
        {
            DataHolder holder = this.getDataHolder(player);
            if(holder != null)
            {
                List<SyncedPlayerData.DataEntry<?>> entries = holder.gatherAll();
                if(!entries.isEmpty())
                {
                    PacketHandler.getPlayChannel().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MessageSyncPlayerData(player.getId(), entries));
                }
            }
        }
    }

    @SubscribeEvent
    public void onPlayerClone(PlayerEvent.Clone event)
    {
        Player original = event.getOriginal();
        if(!original.level.isClientSide())
        {
            Player player = event.getPlayer();
            DataHolder oldHolder = this.getDataHolder(original);
            if(oldHolder != null)
            {
                DataHolder newHolder = this.getDataHolder(player);
                if(newHolder != null)
                {
                    Map<SyncedDataKey<?>, DataEntry<?>> dataMap = new HashMap<>(oldHolder.dataMap);
                    if(event.isWasDeath())
                    {
                        dataMap.entrySet().removeIf(entry -> !entry.getKey().isPersistent());
                    }
                    newHolder.dataMap = dataMap;
                }
            }
        }
    }

    @SubscribeEvent
    public void onServerTick(TickEvent.PlayerTickEvent event)
    {
        if(event.phase == TickEvent.Phase.END)
        {
            if(this.dirty)
            {
                Player player = event.player;
                if(!player.level.isClientSide())
                {
                    DataHolder holder = this.getDataHolder(player);
                    if(holder != null && holder.isDirty())
                    {
                        List<SyncedPlayerData.DataEntry<?>> entries = holder.gatherDirty();
                        if(!entries.isEmpty())
                        {
                            PacketHandler.getPlayChannel().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MessageSyncPlayerData(player.getId(), entries));
                            List<SyncedPlayerData.DataEntry<?>> syncToAllEntries = entries.stream().filter(entry -> entry.getKey().shouldSyncToAllPlayers()).collect(Collectors.toList());
                            if(!syncToAllEntries.isEmpty())
                            {
                                PacketHandler.getPlayChannel().send(PacketDistributor.TRACKING_ENTITY.with(() -> player), new MessageSyncPlayerData(player.getId(), syncToAllEntries));
                            }
                        }
                        holder.clean();
                    }
                }
            }
        }
    }

    @SubscribeEvent
    public void onServerTick(TickEvent.ServerTickEvent event)
    {
        if(event.phase == TickEvent.Phase.END)
        {
            if(this.dirty)
            {
                this.dirty = false;
            }
        }
    }

    public static class DataHolder
    {
        private Map<SyncedDataKey<?>, DataEntry<?>> dataMap = new HashMap<>();
        private boolean dirty = false;

        @SuppressWarnings("unchecked")
        private <T> boolean set(Player player, SyncedDataKey<T> key, T value)
        {
            DataEntry<T> entry = (DataEntry<T>) this.dataMap.computeIfAbsent(key, DataEntry::new);
            if(!entry.getValue().equals(value))
            {
                boolean dirty = !player.level.isClientSide() && entry.getKey().shouldSyncToClient();
                entry.setValue(value, dirty);
                this.dirty = dirty;
                return true;
            }
            return false;
        }

        @Nullable
        @SuppressWarnings("unchecked")
        private <T> T get(SyncedDataKey<T> key)
        {
            return (T) this.dataMap.computeIfAbsent(key, DataEntry::new).getValue();
        }

        private boolean isDirty()
        {
            return this.dirty;
        }

        private void clean()
        {
            this.dirty = false;
            this.dataMap.forEach((key, entry) -> entry.clean());
        }

        private List<DataEntry<?>> gatherDirty()
        {
            return this.dataMap.values().stream().filter(DataEntry::isDirty).filter(entry -> entry.getKey().shouldSyncToClient()).collect(Collectors.toList());
        }

        private List<DataEntry<?>> gatherAll()
        {
            return this.dataMap.values().stream().filter(entry -> entry.getKey().shouldSyncToClient()).collect(Collectors.toList());
        }
    }

    public static class DataEntry<T>
    {
        private SyncedDataKey<T> key;
        private T value;
        private boolean dirty;

        private DataEntry(SyncedDataKey<T> key)
        {
            this.key = key;
            this.value = key.getDefaultValueSupplier().get();
        }

        private SyncedDataKey<T> getKey()
        {
            return this.key;
        }

        private T getValue()
        {
            return this.value;
        }

        private void setValue(T value, boolean dirty)
        {
            this.value = value;
            this.dirty = dirty;
        }

        private boolean isDirty()
        {
            return this.dirty;
        }

        private void clean()
        {
            this.dirty = false;
        }

        public void write(FriendlyByteBuf buffer)
        {
            buffer.writeVarInt(this.key.getId());
            this.key.getSerializer().write(buffer, this.value);
        }

        public static DataEntry<?> read(FriendlyByteBuf buffer)
        {
            SyncedDataKey<?> key = SyncedPlayerData.instance().getKey(buffer.readVarInt());
            Validate.notNull(key, "Synced key does not exist for id");
            DataEntry<?> entry = new DataEntry<>(key);
            entry.readValue(buffer);
            return entry;
        }

        private void readValue(FriendlyByteBuf buffer)
        {
            this.value = this.getKey().getSerializer().read(buffer);
        }

        private Tag writeValue()
        {
            return this.key.getSerializer().write(this.value);
        }

        private void readValue(Tag nbt)
        {
            this.value = this.key.getSerializer().read(nbt);
        }
    }

    public boolean updateMappings(HandshakeMessages.S2CSyncedPlayerData message)
    {
        this.idToDataKey.clear();
        Map<ResourceLocation, Integer> keyMappings = message.getKeyMap();
        for(ResourceLocation key : keyMappings.keySet())
        {
            SyncedDataKey<?> syncedDataKey = this.registeredDataKeys.get(key);
            if(syncedDataKey == null) return false;
            int id = keyMappings.get(key);
            syncedDataKey.setId(id);
            this.idToDataKey.put(id, syncedDataKey);
        }
        return true;
    }

    public static class Provider implements ICapabilitySerializable<ListTag>
    {
        final DataHolder holder = new DataHolder();
        final LazyOptional<DataHolder> optional = LazyOptional.of(() -> this.holder);

        @Override
        public ListTag serializeNBT()
        {
            ListTag list = new ListTag();
            this.holder.dataMap.forEach((key, entry) ->
            {
                if(key.shouldSave())
                {
                    CompoundTag keyTag = new CompoundTag();
                    keyTag.putString("Key", key.getKey().toString());
                    keyTag.put("Value", entry.writeValue());
                    list.add(keyTag);
                }
            });
            return list;
        }

        @Override
        public void deserializeNBT(ListTag listTag)
        {
            this.holder.dataMap.clear();
            listTag.forEach(entryTag ->
            {
                CompoundTag keyTag = (CompoundTag) entryTag;
                ResourceLocation key = ResourceLocation.tryParse(keyTag.getString("Key"));
                Tag value = keyTag.get("Value");
                SyncedDataKey<?> syncedDataKey = SyncedPlayerData.instance().registeredDataKeys.get(key);
                if(syncedDataKey != null && syncedDataKey.shouldSave())
                {
                    DataEntry<?> entry = new DataEntry<>(syncedDataKey);
                    entry.readValue(value);
                    this.holder.dataMap.put(syncedDataKey, entry);
                }
            });
        }

        @Nonnull
        @Override
        @SuppressWarnings("ConstantConditions")
        public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side)
        {
            return CAPABILITY.orEmpty(cap, this.optional);
        }
    }
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Minecraft Crash Report pls help  ---- Minecraft Crash Report ---- WARNING: coremods are present:   EntityCullingEarlyLoader (entityculling-1.12.2-1.6.3.jar)   llibrary (llibrary-core-1.0.11-1.12.2.jar)   FTBUltimineASM (ftb-ultimine-1202.3.5.jar)   SoManyEnchantments ASM (SoManyEnchantments-0.5.5.jar)   SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.6.0.jar)   MixinBooter (!mixinbooter-9.4.jar)   ParagliderLoadingPlugin (Paraglider-1.12.2-1.0.1.5.jar)   Quark Plugin (Quark-r1.6-179.jar)   ApotheosisCore (Apotheosis-1.12.2-1.12.5.jar)   iceandfire (iceandfire-1.9.1-1.12.2.jar)   CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   LootrCore (lootr-1.12.2-0.6.2.jar) Contact their authors BEFORE contacting forge // I'm sorry, Dave. Time: 10/8/24 1:15 AM Description: Exception in server tick loop net.minecraftforge.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiScreen     at net.minecraftforge.fml.common.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:89)     at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:612)     at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)     at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)     at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)     at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)     at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)     at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)     at com.google.common.eventbus.EventBus.post(EventBus.java:217)     at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:219)     at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:197)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)     at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)     at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)     at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)     at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)     at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)     at com.google.common.eventbus.EventBus.post(EventBus.java:217)     at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:136)     at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:595)     at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:98)     at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:333)     at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:125)     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486)     at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiScreen     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)     at java.lang.Class.privateGetPublicMethods(Class.java:2902)     at java.lang.Class.getMethods(Class.java:1615)     at net.minecraftforge.fml.common.eventhandler.EventBus.register(EventBus.java:82)     at net.minecraftforge.fml.common.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:82)     ... 31 more Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiScreen     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)     at java.lang.ClassLoader.loadClass(ClassLoader.java:418)     at java.lang.ClassLoader.loadClass(ClassLoader.java:351)     ... 37 more Caused by: net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerException: Exception in class transformer net.minecraftforge.fml.common.asm.transformers.SideTransformer@3a022576 from coremod FMLCorePlugin     at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:260)     at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)     ... 39 more Caused by: java.lang.RuntimeException: Attempted to load class blk for invalid side SERVER     at net.minecraftforge.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:62)     at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:256)     ... 41 more No Mixin Metadata is found in the Stacktrace. A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.12.2     Operating System: Linux (amd64) version 3.10.0-1160.118.1.el7.x86_64     Java Version: 1.8.0_282, AdoptOpenJDK     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), AdoptOpenJDK     Memory: 2299996568 bytes (2193 MB) / 2791833600 bytes (2662 MB) up to 4358406144 bytes (4156 MB)     JVM Flags: 9 total; -Xms2337M -Xmx4675M -XX:MaxMetaspaceSize=825M -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+OptimizeStringConcat     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     FML: MCP 9.42 Powered by Forge 14.23.5.2859 59 mods loaded, 59 mods active     States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored     | State | ID                            | Version           | Source                                                  | Signature                                |     |:----- |:----------------------------- |:----------------- |:------------------------------------------------------- |:---------------------------------------- |     | LC    | minecraft                     | 1.12.2            | minecraft.jar                                           | None                                     |     | LC    | mcp                           | 9.42              | minecraft.jar                                           | None                                     |     | LC    | FML                           | 8.0.99.99         | server.jar                                              | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LC    | forge                         | 14.23.5.2859      | server.jar                                              | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LC    | mixinbooter                   | 9.4               | minecraft.jar                                           | None                                     |     | LC    | aiimprovements                | 0.0.1.3           | AIImprovements-1.12-0.0.1b3.jar                         | None                                     |     | LC    | placebo                       | 1.6.0             | Placebo-1.12.2-1.6.1.jar                                | None                                     |     | LC    | apotheosis                    | 1.12.4            | Apotheosis-1.12.2-1.12.5.jar                            | None                                     |     | LC    | aquaculture                   | 1.6.8             | Aquaculture-1.12.2-1.6.8.jar                            | None                                     |     | LC    | baubles                       | 1.5.2             | Baubles-1.12-1.5.2.jar                                  | None                                     |     | LC    | artifacts                     | 1.12.2-1.2.4      | artifacts-1.12.2-1.2.4.jar                              | None                                     |     | LC    | attributefix                  | 1.0.12            | AttributeFix-Forge-1.12.2-1.0.12.jar                    | None                                     |     | LC    | jei                           | 4.16.1.301        | jei_1.12.2-4.16.1.301.jar                               | None                                     |     | LC    | quark                         | r1.6-179          | Quark-r1.6-179.jar                                      | None                                     |     | LC    | autoreglib                    | 1.3-32            | AutoRegLib-1.3-32.jar                                   | None                                     |     | LC    | bettermineshafts              | 1.12.2-2.2.1      | BetterMineshaftsForge-1.12.2-2.2.1.jar                  | None                                     |     | LC    | bookshelf                     | 2.3.590           | Bookshelf-1.12.2-2.3.590.jar                            | d476d1b22b218a10d845928d1665d45fce301b27 |     | LC    | bookworm                      | 1.12.2-2.5.2.1    | bookworm-1.12.2-2.5.2.1.jar                             | None                                     |     | LC    | carryon                       | 1.12.3            | carryon-1.12.2-1.12.7.23.jar                            | None                                     |     | LC    | clumps                        | 3.1.2             | Clumps-3.1.2.jar                                        | None                                     |     | LC    | cosmeticarmorreworked         | 1.12.2-v5a        | CosmeticArmorReworked-1.12.2-v5a.jar                    | aaaf83332a11df02406e9f266b1b65c1306f0f76 |     | LC    | customnpcs                    | 1.12              | CustomNPCs_1.12.2-(05Jul20).jar                         | None                                     |     | LC    | darkutils                     | 1.8.230           | DarkUtils-1.12.2-1.8.230.jar                            | d476d1b22b218a10d845928d1665d45fce301b27 |     | LC    | fantasticlib                  | 1.12.2.047        | FantasticLib-1.12.2.047.jar                             | None                                     |     | LC    | fastleafdecay                 | v14               | FastLeafDecay-v14.jar                                   | None                                     |     | LC    | ftbultimine                   | 1202.3.5          | ftb-ultimine-1202.3.5.jar                               | None                                     |     | LC    | cfm                           | 6.3.0             | furniture-6.3.2-1.12.2.jar                              | None                                     |     | LE    | ibeeditor                     | 1.0.0-alpha5      | IBEEditor-1.12.2-1.0.0-alpha5.jar                       | None                                     |     | L     | llibrary                      | 1.7.20            | llibrary-1.7.20-1.12.2.jar                              | None                                     |     | L     | iceandfire                    | 1.9.1             | iceandfire-1.9.1-1.12.2.jar                             | None                                     |     | L     | ironchest                     | 1.12.2-7.0.67.844 | ironchest-1.12.2-7.0.72.847.jar                         | None                                     |     | L     | ironfurnaces                  | 1.3.5             | ironfurnaces-1.3.5.jar                                  | None                                     |     | L     | lootr                         | 0.6.2             | lootr-1.12.2-0.6.2.jar                                  | None                                     |     | L     | mcwfences                     | 1.0.0             | mcw-fences-1.0.0-mc1.12.2.jar                           | None                                     |     | L     | testdummy                     | 1.12              | MmmMmmMmmMmm-1.12-1.14.jar                              | None                                     |     | L     | mowziesmobs                   | 1.5.8             | mowziesmobs-1.5.8.jar                                   | None                                     |     | L     | paraglider                    | 1.0.1.5           | Paraglider-1.12.2-1.0.1.5.jar                           | None                                     |     | L     | patchouli                     | 1.0-23.6          | Patchouli-1.0-23.6.jar                                  | None                                     |     | L     | corerm                        | 1.3.3             | RikMuldsCore_1.3.3.jar                                  | None                                     |     | L     | setbonus                      | 1.12.2.020        | SetBonus-1.12.2.020.jar                                 | None                                     |     | L     | somanyenchantments            | 0.5.5             | SoManyEnchantments-0.5.5.jar                            | None                                     |     | L     | spartanshields                | 1.5.5             | SpartanShields-1.12.2-1.5.5.jar                         | None                                     |     | L     | spartanweaponry               | 1.6.0             | SpartanWeaponry-1.12.2-1.6.0.jar                        | None                                     |     | L     | stg                           | 1.12.2-1.2.3      | stg-1.12.2-1.2.3.jar                                    | None                                     |     | L     | supermartijn642configlib      | 1.1.6             | supermartijn642configlib-1.1.8-forge-mc1.12.jar         | None                                     |     | L     | camping                       | 2.4.3             | TheCampingMod_2.4.3.jar                                 | None                                     |     | L     | twilightforest                | 3.11.1021         | twilightforest-1.12.2-3.11.1021-universal.jar           | None                                     |     | L     | uteamcore                     | 2.2.5.305         | u_team_core-forge-1.12.2-2.2.5.305.jar                  | None                                     |     | L     | uniquebase                    | 1.0.1             | Unique Enchantments Base-1.12.2-1.1.4.jar               | None                                     |     | L     | uniqueebattle                 | 1.0.1             | Unique Enchantments Battle-1.12.2-1.1.6.jar             | None                                     |     | L     | uniqueeutil                   | 1.0.1             | Unique Enchantments Utils-1.12.2-1.5.1.jar              | None                                     |     | L     | uniquee                       | 2.0.1             | Unique Enchantments-1.12.2-2.1.4.jar                    | None                                     |     | L     | usefulbackpacks               | 1.5.4.85          | useful_backpacks-1.12.2-1.5.4.85.jar                    | None                                     |     | L     | variedcommodities             | 1.12.2            | VariedCommodities_1.12.2-(31Mar23).jar                  | None                                     |     | L     | wizardanimalsbeta10           | 1.0.0             | WizardAnimalsBeta1.0.jar                                | None                                     |     | L     | worldedit                     | 6.1.10            | worldedit-forge-mc1.12.2-6.1.10-dist.jar                | None                                     |     | L     | zawa                          | 1.12.2-2.1.3      | zawa-1.12.2-2.1.3.jar                                   | None                                     |     | L     | craftableenchantedgoldenapple | 1.0.0             | zaynens_craftable_enchanted_golden_apple_mod_1.12.2.jar | None                                     |     | L     | betteranimalsplus             | 9.0.1             | betteranimalsplus-1.12.2-9.0.1.jar                      | None                                     |     Loaded coremods (and transformers):  EntityCullingEarlyLoader (entityculling-1.12.2-1.6.3.jar)    llibrary (llibrary-core-1.0.11-1.12.2.jar)   net.ilexiconn.llibrary.server.core.plugin.LLibraryTransformer   net.ilexiconn.llibrary.server.core.patcher.LLibraryRuntimePatcher FTBUltimineASM (ftb-ultimine-1202.3.5.jar)    SoManyEnchantments ASM (SoManyEnchantments-0.5.5.jar)   com.Shultrea.Rin.Transformer.SMEASM SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.6.0.jar)    MixinBooter (!mixinbooter-9.4.jar)    ParagliderLoadingPlugin (Paraglider-1.12.2-1.0.1.5.jar)   com.tictim.paraglider.asm.TransformerModelBiped Quark Plugin (Quark-r1.6-179.jar)   vazkii.quark.base.asm.ClassTransformer ApotheosisCore (Apotheosis-1.12.2-1.12.5.jar)   shadows.ApotheosisTransformer iceandfire (iceandfire-1.9.1-1.12.2.jar)   com.github.alexthe666.iceandfire.patcher.IceAndFireRuntimePatcher CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   team.chisel.ctm.client.asm.CTMTransformer LootrCore (lootr-1.12.2-0.6.2.jar)        Profiler Position: N/A (disabled)     Is Modded: Definitely; Server brand changed to 'fml,forge'     Type: Dedicated Server (map_server.txt)
    • [01:30:06] [main/INFO]: ModLauncher running: args [--username, AkadieL, --version, forge-47.2.0, --gameDir, C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized, --assetsDir, C:\Users\Administrator\curseforge\minecraft\Install\assets, --assetIndex, 5, --uuid, b68ea54ae6484a0e8acb115f88c9aea5, --accessToken, ????????, --clientId, 28d704-b58c91-549ecf-a85a34-9fb39c, --xuid, 2533275030291833, --userType, msa, --versionType, release, --width, 1024, --height, 768, --launchTarget, forgeclient, --fml.forgeVersion, 47.2.0, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] [01:30:06] [main/INFO]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.8 by Eclipse Adoptium; OS Windows 10 arch amd64 version 10.0 [01:30:07] [main/INFO]: Loading ImmediateWindowProvider fmlearlywindow [01:30:07] [main/INFO]: Trying GL version 4.6 [01:30:07] [main/INFO]: Requested GL version 4.6 got version 4.6 [01:30:07] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/Administrator/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%23100!/ Service=ModLauncher Env=CLIENT [01:30:07] [pool-2-thread-1/INFO]: GL info: NVIDIA GeForce RTX 3060/PCIe/SSE2 GL version 4.6.0 NVIDIA 560.94, NVIDIA Corporation [01:30:08] [main/INFO]: Found mod file AdvancementPlaques-1.20.1-forge-1.5.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file AI-Improvements-1.20-0.5.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file AirHop-v8.0.2-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file alexscaves-1.1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file alexsmobs-1.22.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file AmbientSounds_FORGE_v6.0.2_mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file AnvilNeverTooExpensive-1.20.1-1.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file appleskin-forge-mc1.20.1-2.5.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Aquaculture-1.20.1-2.5.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file aquaculture_delight_1.0.0_forge_1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file aquamirae-6.API15.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file astemirlib-1.20.1-1.25.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file AxesAreWeapons-1.7.3-forge-1.20.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file balm-forge-1.20.1-7.3.6-all.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file bellsandwhistles-0.4.3-1.20.x.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file BetterAdvancements-1.20.1-0.3.2.161.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file betterarcheology-1.1.9-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file BetterCompatibilityChecker-forge-4.0.8+mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file BetterPingDisplay-1.20.1-1.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file BetterTridents-v8.0.1-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file biomespawnpoint-1.20.1-2.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file blockui-1.20.1-1.0.156-RELEASE.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file blue_skies-1.20.1-1.3.31.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Bookshelf-Forge-1.20.1-20.2.13.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file caelus-forge-3.2.0+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file canary-mc1.20.1-0.3.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file catalogue-forge-1.20.1-1.8.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Chimes-v2.0.1-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Choup's Drakvyrn Mod for 1.20.1 (v2.4.0).jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Chunk-Pregenerator-1.20-4.4.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file chunkloaders-1.2.8a-forge-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file citadel-2.5.3-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file clickadv-1.20.1-3.8.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file cloth-config-11.1.118-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Clumps-forge-1.20.1-12.0.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file collective-1.20.1-7.64.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file comforts-forge-6.3.5+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Controlling-forge-1.20.1-12.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file cookingforblockheads-forge-1.20.1-16.0.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file CorgiLib-forge-1.20.1-4.0.1.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file corn_delight-1.0.4-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file coroutil-forge-1.20.1-1.3.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file cosmeticarmorreworked-1.20.1-v1a.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file CrabbersDelight-1.20.1-1.1.5.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file CraftTweaker-forge-1.20.1-14.0.40.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file create-1.20.1-0.5.1.f.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file createaddition-1.20.1-1.2.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file CreativeCore_FORGE_v2.11.30_mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file creeperoverhaul-3.0.2-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file ctov-forge-3.4.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file cuisinedelight-1.1.14.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file cupboard-1.20.1-2.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file curios-forge-5.9.1+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file customcameraview-forge-1.20.1-1.0.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file DamageVignette-2.0.2-forge+mc1.20.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file deathbackup-1.20.1-3.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file deeperdarker-forge-1.20.1-1.2.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file dimensionviewer-1.20-1.4.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Disenchanting-forge-1.20.1-2.2.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file DoggyTalentsNext-1.20.1-1.18.18.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file domum_ornamentum-1.20.1-1.0.186-RELEASE-universal.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file doubledoors-1.20.1-5.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file dummmmmmy-1.20-1.8.17b.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file DungeonsArise-1.20.x-2.1.58-release.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file DungeonsAriseSevenSeas-1.20.x-1.0.2-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file EasierSleeping-1.20.1-2.1.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file easy-villagers-forge-1.20.1-1.1.23.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file easy_mob_farm_1.20.1-7.1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file easy_npc-forge-1.20.1-5.6.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file easynetheritev1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file EasyShulkerBoxes-v8.0.1-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file elytraslot-forge-6.4.0+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file embeddium-0.3.31+mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file embeddiumplus-1.20.1-v1.2.13.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file EnchantingInfuser-v8.0.3-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file EnchantmentDescriptions-Forge-1.20.1-17.0.16.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file endersdelight-1.20.1-1.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Enhanced_Celestials-forge-1.20.1-5.0.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file entityculling-forge-1.6.6-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file EquipmentCompare-1.20.1-forge-1.3.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file ExplorersCompass-1.20.1-1.3.3-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Fallingleaves-1.20.1-2.1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FallingTree-1.20.1-4.3.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file fancymenu_forge_3.2.3_MC_1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Fantastic Remastered Structures 1.20+1.20.6-0.5 For+fab.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FarmersDelight-1.20.1-1.2.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file farmingforblockheads-forge-1.20.1-14.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file farsight-1.20.1-3.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FastFurnace-1.20.1-8.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FastLeafDecay-32.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file fastpaintings-1.20-1.2.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file ferritecore-6.0.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file fish_of_thieves-mc1.20.1-v3.0.7-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file fixexperiencebug-1.20-46.2.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file framework-forge-1.20.1-0.7.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FriendlyFire-Forge-1.20.1-18.0.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file FriendlyGriefing-1.20-1.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file friendsandfoes-forge-mc1.20.1-2.0.10.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file geckolib-forge-1.20.1-4.4.7.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file GeckoLibOculusCompat-Forge-1.0.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file goblintraders-forge-1.20.1-1.9.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file guccivuitton-1.20.1-0.2.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file handcrafted-forge-1.20.1-3.0.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file highlight-forge-1.20-2.0.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Highlighter-1.20.1-forge-1.1.9.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file hitindication-1.20.1-1.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Iceberg-1.20.1-forge-1.1.21.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file IllagerInvasion-v8.0.5-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Incendium_1.20.x_v5.3.5.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file inventoryessentials-forge-1.20.1-8.2.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file inventoryhud.forge.1.20.1-3.4.26.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file inventorysorter-1.20.1-23.0.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file ItemPhysicLite_FORGE_v1.6.4_mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Jade-1.20.1-forge-11.7.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file jei-1.20.1-forge-15.3.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file JustEnoughResources-1.20.1-1.4.0.247.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file konkrete_forge_1.8.0_MC_1.20-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file lradd-1.20.1-0.2.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file lucky-block-forge-1.20.1-13.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file lukis-grand-capitals-1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file MaxEnchantX-1.20.X-1.3-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file mcw-bridges-3.0.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file mcw-doors-1.1.1forge-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file mcw-lights-1.1.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file melody_forge_1.0.3_MC_1.20.1-1.20.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file modnametooltip-1.20.1-1.20.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file moonlight-1.20-2.12.2-forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file MouseTweaks-forge-mc1.20-2.25.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file mysterious_mountain_lib-1.4.7-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file nethersdelight-1.20.1-4.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file obscure_api-15.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file oceansdelight-1.0.2-1.20.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file oculus-mc1.20.1-1.6.15a.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file okzoomer-forge-1.20-3.0.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Placebo-1.20.1-8.6.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file puzzledungeon-forge-1.20.1-1.2.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file PuzzlesLib-v8.1.20-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file PuzzlesLib-v8.1.24-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Quark-4.0-436.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file RegionsUnexploredForge-0.5.3.1+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file resourcefulconfig-forge-1.20.1-2.1.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file resourcefullib-forge-1.20.1-2.1.25.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file sliceanddice-forge-3.2.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file supermartijn642configlib-1.1.8-forge-mc1.20.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file supermartijn642corelib-1.1.17-forge-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file tact-1.0.9+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file tacz-1.20.1-1.0.3-all.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file TerraBlender-forge-1.20.1-3.0.1.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Terralith_1.20_v2.5.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file The_Undergarden-1.20.1-0.8.14.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file tlc_forge-1.0.3-R-1.20.X.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file torchmaster-20.1.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file ToughAsNails-1.20.1-9.0.0.96.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file travelersbackpack-forge-1.20.1-9.1.15.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file TravelersTitles-1.20-Forge-4.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file undergarden_delight_1.0.0_forge_1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file UniversalEnchants-v8.0.0-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file waystones-forge-1.20-14.1.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file WitherSkeletonTweaks-1.20.1-9.1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file worldedit-mod-7.2.15.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file wso16-forge-1.1.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Xaeros_Minimap_24.2.0_Forge_1.20.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file xaeros_waystones_compability-1.0.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file XaerosWorldMap_1.37.8_Forge_1.20.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsApi-1.20-Forge-4.0.5.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterDesertTemples-1.20-Forge-3.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterDungeons-1.20-Forge-4.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterJungleTemples-1.20-Forge-2.0.5.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterMineshafts-1.20-Forge-4.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterNetherFortresses-1.20-Forge-2.0.6.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterOceanMonuments-1.20-Forge-3.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterStrongholds-1.20-Forge-4.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBetterWitchHuts-1.20-Forge-3.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsBridges-1.20-Forge-4.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file YungsExtras-1.20-Forge-4.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/INFO]: Found mod file Zeta-1.0-13.jar of type MOD with provider {mods folder locator at C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods} [01:30:08] [main/WARN]: Mod file C:\Users\Administrator\curseforge\minecraft\Install\libraries\net\minecraftforge\fmlcore\1.20.1-47.2.0\fmlcore-1.20.1-47.2.0.jar is missing mods.toml file [01:30:08] [main/WARN]: Mod file C:\Users\Administrator\curseforge\minecraft\Install\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.2.0\javafmllanguage-1.20.1-47.2.0.jar is missing mods.toml file [01:30:08] [main/WARN]: Mod file C:\Users\Administrator\curseforge\minecraft\Install\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.2.0\lowcodelanguage-1.20.1-47.2.0.jar is missing mods.toml file [01:30:08] [main/WARN]: Mod file C:\Users\Administrator\curseforge\minecraft\Install\libraries\net\minecraftforge\mclanguage\1.20.1-47.2.0\mclanguage-1.20.1-47.2.0.jar is missing mods.toml file [01:30:08] [main/INFO]: Found mod file fmlcore-1.20.1-47.2.0.jar of type LIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/INFO]: Found mod file javafmllanguage-1.20.1-47.2.0.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/INFO]: Found mod file lowcodelanguage-1.20.1-47.2.0.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/INFO]: Found mod file mclanguage-1.20.1-47.2.0.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/INFO]: Found mod file client-1.20.1-20230612.114412-srg.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/INFO]: Found mod file forge-1.20.1-47.2.0-universal.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@78c1a023 [01:30:08] [main/WARN]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File:  [01:30:08] [main/WARN]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File:  [01:30:08] [main/WARN]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File:  [01:30:08] [main/WARN]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized\mods\resourcefullib-forge-1.20.1-2.1.25.jar [01:30:08] [main/INFO]: Found 23 dependencies adding them to mods collection [01:30:08] [main/INFO]: Found mod file jctools-core-4.0.1.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file MixinExtras-0.3.6.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file mixinextras-forge-0.3.6.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file kuma-api-forge-20.1.8+1.20.1.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file puzzlesapi-forge-8.1.4.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file MinecraftForgeAPI-1.20.1-1.0.0.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file luaj-core-3.0.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file mixinsquared-forge-0.1.2-beta.6.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file yabn-1.0.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file Registrate-MC1.20-1.3.11.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file spectrelib-forge-0.13.15+1.20.1.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file animated-gif-lib-for-java-animated-gif-lib-1.7.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file mclib-20.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file l2library-2.4.14-slim.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file puzzlesaccessapi-forge-8.0.7.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file l2serial-1.2.0.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file flywheel-forge-1.20.1-0.6.10-7.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file bytecodecs-1.0.2.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file luaj-jse-3.0.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file commons-math3-3.6.1.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file MixinSquared-0.1.2-beta.6.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file jcpp-1.4.14.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:08] [main/INFO]: Found mod file japng-0.5.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@150ede8b [01:30:09] [main/ERROR]: Missing or unsupported mandatory dependencies:     Mod ID: 'structure_gel', Requested by: 'blue_skies', Expected range: '[2.13.0,]', Actual version: '[MISSING]'     Mod ID: 'kotlinforforge', Requested by: 'sliceanddice', Expected range: '[4.3.0,)', Actual version: '[MISSING]'     Mod ID: 'searchables', Requested by: 'controlling', Expected range: '[1.0,)', Actual version: '[MISSING]' [01:30:11] [main/INFO]: Compatibility level set to JAVA_17 [01:30:11] [main/ERROR]: Mixin config geckoanimfix.forge.mixins.json does not specify "minVersion" property [01:30:11] [main/ERROR]: Mixin config okzoomer.mixins.json does not specify "minVersion" property [01:30:11] [main/INFO]: Launching target 'forgeclient' with arguments [--version, forge-47.2.0, --gameDir, C:\Users\Administrator\curseforge\minecraft\Instances\Alex's Caves Optimized, --assetsDir, C:\Users\Administrator\curseforge\minecraft\Install\assets, --uuid, b68ea54ae6484a0e8acb115f88c9aea5, --username, AkadieL, --assetIndex, 5, --accessToken, ????????, --clientId, 28d704-b58c91-549ecf-a85a34-9fb39c, --xuid, 2533275030291833, --userType, msa, --versionType, release, --width, 1024, --height, 768] [01:30:11] [main/INFO]: Loaded configuration file for Embeddium: 44 options available, 0 override(s) found [01:30:11] [main/INFO]: Searching for graphics cards... [01:30:11] [main/INFO]: Found graphics card: GraphicsAdapterInfo[vendor=NVIDIA, name=NVIDIA GeForce RTX 3060, version=DriverVersion=32.0.15.6094] [01:30:11] [main/WARN]: Embeddium has applied one or more workarounds to prevent crashes or other issues on your system: [NVIDIA_THREADED_OPTIMIZATIONS] [01:30:11] [main/WARN]: This is not necessarily an issue, but it may result in certain features or optimizations being disabled. You can sometimes fix these issues by upgrading your graphics driver. [01:30:11] [main/WARN]: Reference map 'handcrafted-forge-1.20.1-forge-refmap.json' for handcrafted.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras_forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'cuisinedelight.refmap.json' for cuisinedelight.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'AxesAreWeapons-forge-refmap.json' for axesareweapons.forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map '${refmap_target}refmap.json' for corgilib.forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'fastpaintings-forge-refmap.json' for fastpaintings-forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'guccivuitton.refmap.json' for guccivuitton.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/INFO]: Loaded configuration file for Canary: 116 options available, 0 override(s) found [01:30:11] [main/INFO]: Loading 2 mods:     - forge 47.2.0     - minecraft 1.20.1 [01:30:11] [main/WARN]: Reference map 'Aquamirae.refmap.json' for aquamirae.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'cookingforblockheads.refmap.json' for cookingforblockheads.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'LesRaisinsAddon_1201.refmap.json' for lradd.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:11] [main/WARN]: Reference map 'coroutil.refmap.json' for coroutil.mixins.json could not be read. If this is a development environment you can ignore this message [01:30:12] [main/WARN]: Error loading class: dev/latvian/mods/kubejs/recipe/RecipesEventJS (java.lang.ClassNotFoundException: dev.latvian.mods.kubejs.recipe.RecipesEventJS) [01:30:12] [main/WARN]: @Mixin target dev.latvian.mods.kubejs.recipe.RecipesEventJS was not found sliceanddice.mixins.json:RecipeEventJSMixin [01:30:12] [main/WARN]: Error loading class: dev/emi/emi/screen/EmiScreenManager (java.lang.ClassNotFoundException: dev.emi.emi.screen.EmiScreenManager) [01:30:12] [main/WARN]: Error loading class: me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl (java.lang.ClassNotFoundException: me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl) [01:30:12] [main/WARN]: Error loading class: noobanidus/mods/lootr/config/ConfigManager (java.lang.ClassNotFoundException: noobanidus.mods.lootr.config.ConfigManager) [01:30:12] [main/ERROR]: Could not find embeddium mod, there is likely a dependency error. Skipping mixin application. [01:30:12] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.6). [01:30:13] [pool-4-thread-1/WARN]: This is the stupidest thing I've ever made in Minecraft modding history...           Even if I check the log list, I don't know what the problem is. especially. [01:30:09] [Main/ERROR]: No mandatory dependency or not supported: Mode ID: 'structure_gel', requester: 'blue_skys', expected range: '[2.13.0,], actual version: '[missing]' Mode ID: 'kotlinforge', Requestor: 'slice and die', Expected range: '[4.3.0,]', Actual version: '[missing]' Mode ID: 'Searchable', Requestor: 'In Control', Expected Range: '[1.0,]', Actual Version: '[Omitted]'   I've been looking for things I need in this area, but Minecraft is still annoying.
    • i'm trying to modify the attack damage in minecraft modded weapons i can only modify the attack damage in non-modded weapons it's in 1.8.9
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.