Jump to content

Recommended Posts

Posted

Hello, Im currently having issues with getting my custom slab to display properly in the inventory. However, they do place fine in the world. I just need to work out the kink on why the inventory ones wont load. the console displays "Caused by: java.io.FileNotFoundException: bkproject:models/item/stained_clay_slab_low.json" however the tutorial provided below does not even have those files.

Used this tutorial for creating the slabs: https://github.com/Choonster-Minecraft-Mods/TestMod3

 

Placed in world:

wGHhpZi.png

 

In inventory:

ZtF1lPb.png

 

 

The console displays this error: (Does this for both stained_clay_slab_low/high)

[03:25:07] [main/ERROR] [FML] []: Exception loading model for variant bkproject:stained_clay_slab_low#inventory for item "bkproject:stained_clay_slab_low", normal location exception: 
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model bkproject:item/stained_clay_slab_low with loader VanillaLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:297) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:554) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:416) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: bkproject:models/item/stained_clay_slab_low.json
	at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:899) ~[ModelLoader$VanillaLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
	... 20 more

ModBlocks.java

package simplexdesigns.bkproject.init;

import java.util.HashSet;
import java.util.Set;

import com.google.common.base.Preconditions;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import net.minecraftforge.registries.IForgeRegistry;
import simplexdesigns.bkproject.BkProject;
import simplexdesigns.bkproject.block.*;
import simplexdesigns.bkproject.util.Constants;

@SuppressWarnings("WeakerAccess")
@ObjectHolder(BkProject.MODID)

public class ModBlocks {
	
	/*public static final BlockTest TESTBLOCK = new BlockTest(Material.ROCK, "Test Block");*/
	
	public static class Slabs {
		public static final BlockClaySlab.ColouredSlabGroup STAINED_CLAY_SLABS = new BlockClaySlab.ColouredSlabGroup("stained_clay_slab", Material.ROCK);
	}
	@Mod.EventBusSubscriber(modid = BkProject.MODID)
	public static class RegistrationHandler {
		public static final Set<ItemBlock> ITEM_BLOCKS = new HashSet<>();

		/**
		 * Register this mod's {@link Block}s.
		 *
		 * @param event The event
		 */
		@SubscribeEvent
		public static void registerBlocks(final RegistryEvent.Register<Block> event) {
			final IForgeRegistry<Block> registry = event.getRegistry();

			final Block[] blocks = {
			};

			registry.registerAll(blocks);

			registerSlabGroup(registry, Slabs.STAINED_CLAY_SLABS.high);
			registerSlabGroup(registry, Slabs.STAINED_CLAY_SLABS.low);
		}

		/**
		 * Register the {@link Block}s of a {@link BlockSlabClay.SlabGroup}.
		 *
		 * @param registry  The registry
		 * @param slabGroup The slab group
		 */
		private static void registerSlabGroup(final IForgeRegistry<Block> registry, final BlockSlabClay.SlabGroup<?, ?, ?> slabGroup) {
			registry.register(slabGroup.singleSlab);
			registry.register(slabGroup.doubleSlab);
		}

		/**
		 * Register this mod's {@link ItemBlock}s.
		 *
		 * @param event The event
		 */
		@SubscribeEvent
		public static void registerItemBlocks(final RegistryEvent.Register<Item> event) {
			final ItemBlock[] items = {
					/*new ItemBlock(WATER_GRASS),*/
					Slabs.STAINED_CLAY_SLABS.low.item,
					Slabs.STAINED_CLAY_SLABS.high.item,
			};

			final IForgeRegistry<Item> registry = event.getRegistry();

			for (final ItemBlock item : items) {
				final Block block = item.getBlock();
				final ResourceLocation registryName = Preconditions.checkNotNull(block.getRegistryName(), "Block %s has null registry name", block);
				registry.register(item.setRegistryName(registryName));
				ITEM_BLOCKS.add(item);
			}

			registerTileEntities();
		}
	}

	private static void registerTileEntities() {

	}

	private static void registerTileEntity(final Class<? extends TileEntity> tileEntityClass, final String name) {
		GameRegistry.registerTileEntity(tileEntityClass, Constants.RESOURCE_PREFIX + name);
	}
	
private static void registerRender(Block block){
		
		Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
		
	}


}
	

 

BlockClaySlab.java

package simplexdesigns.bkproject.block;

import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import simplexdesigns.bkproject.util.OreDictUtils;

import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Optional;
import java.util.function.Predicate;

/**
 * A slab that uses vanilla's dye colours.
 * <p>
 * Test for this thread:
 * http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2597500-how-do-you-create-a-halfslab
 *
 * @author Choonster
 */
public abstract class BlockClaySlab extends BlockSlabClay<EnumDyeColor, BlockClaySlab.EnumColourGroup, BlockClaySlab> {

	/**
	 * Create a coloured slab block.
	 *
	 * @param material    The Material of this slab
	 * @param colourGroup This slab's colour group
	 * @param slabGroup   The group this slab belongs to
	 */
	public BlockClaySlab(final Material material, final EnumColourGroup colourGroup, final SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab> slabGroup) {
		super(material, slabGroup, colourGroup);
	}

	@SuppressWarnings("deprecation")
	@Override
	public MapColor getMapColor(final IBlockState state, final IBlockAccess world, final BlockPos pos) {
		return MapColor.getBlockColor(state.getValue(getVariantProperty()));
	}

	@Override
	public String getUnlocalizedName(final int meta) {
		return getUnlocalizedName() + "." + getVariant(meta).getUnlocalizedName();
	}

	/**
	 * Get the metadata value for the specified colour
	 *
	 * @param colour The colour
	 * @return The metadata value
	 */
	@Override
	public int getMetadata(final EnumDyeColor colour) {
		return variants.getOffsetMetadata(colour);
	}

	/**
	 * Get the colour for the specified metadata value
	 *
	 * @param meta The metadata value
	 * @return The colour
	 */
	@Override
	protected EnumDyeColor getVariant(final int meta) {
		return variants.byOffsetMetadata(meta);
	}

	@Override
	public boolean recolorBlock(final World world, final BlockPos pos, final EnumFacing side, final EnumDyeColor colour) {
		final IBlockState currentState = world.getBlockState(pos);
		return variants.isColourInGroup(colour) &&
				currentState.getValue(getVariantProperty()) != colour &&
				world.setBlockState(pos, currentState.withProperty(getVariantProperty(), colour));
	}

	@Override
	public boolean onBlockActivated(final World worldIn, final BlockPos pos, final IBlockState state, final EntityPlayer playerIn, final EnumHand hand, final EnumFacing side, final float hitX, final float hitY, final float hitZ) {
		final ItemStack heldItem = playerIn.getHeldItem(hand);

		if (!heldItem.isEmpty()) {
			final Optional<EnumDyeColor> dyeColour = OreDictUtils.INSTANCE.getDyeColour(heldItem);
			if (dyeColour.isPresent()) {
				final boolean success = recolorBlock(worldIn, pos, side, dyeColour.get());
				if (success) {
					heldItem.shrink(1);
					return true;
				}
			}
		}

		return false;
	}

	@Override
	public Comparable<?> getTypeForItem(final ItemStack stack) {
		return variants.byOffsetMetadata(stack.getMetadata());
	}

	/**
	 * A group of {@link EnumDyeColor} values.
	 */
	public enum EnumColourGroup implements Iterable<EnumDyeColor>, IStringSerializable {
		LOW("low", colour -> colour.getMetadata() < 8, 0),
		HIGH("high", colour -> colour.getMetadata() >= 8, 8);

		/**
		 * The property with this group's colours as the allowed values
		 */
		public final IProperty<EnumDyeColor> property;

		/**
		 * The offset to subtract from each colour's metadata value
		 */
		private final int metaOffset;

		/**
		 * The name of this group
		 */
		private final String name;

		/**
		 * The colours in this group
		 */
		private final Collection<EnumDyeColor> values;

		/**
		 * Create a colour group
		 *
		 * @param name         The name of this group
		 * @param colourFilter A filter to obtain the colours in this group
		 * @param metaOffset   The offset to subtract from each colour's metadata value
		 */
		EnumColourGroup(final String name, final Predicate<EnumDyeColor> colourFilter, final int metaOffset) {
			this.name = name;
			this.property = PropertyEnum.create("colour", EnumDyeColor.class, colourFilter::test);
			this.metaOffset = metaOffset;
			this.values = this.property.getAllowedValues();
		}

		/**
		 * Get the metadata value of the specified colour with this group's offset.
		 *
		 * @param colour The colour
		 * @return The offset metadata value
		 */
		public int getOffsetMetadata(final EnumDyeColor colour) {
			return colour.getMetadata() - metaOffset;
		}

		/**
		 * Get the colour of the specified metadata value with this group's offset
		 *
		 * @param meta The offset metadata value
		 * @return The colour
		 */
		public EnumDyeColor byOffsetMetadata(final int meta) {
			return EnumDyeColor.byMetadata(meta + metaOffset);
		}

		/**
		 * Returns an iterator over elements of type {@code T}.
		 *
		 * @return an Iterator.
		 */
		@Override
		public Iterator<EnumDyeColor> iterator() {
			return values.iterator();
		}

		@Override
		public String getName() {
			return name;
		}

		/**
		 * Is the specified colour in this group?
		 *
		 * @param colour The colour
		 * @return True if the colour is in this group
		 */
		public boolean isColourInGroup(final EnumDyeColor colour) {
			return values.contains(colour);
		}

		/**
		 * Get the first group containing the specified colour.
		 *
		 * @param colour The colour
		 * @return A group containing the colour, or null if there isn't one
		 */
		@Nullable
		public static EnumColourGroup getGroupForColour(final EnumDyeColor colour) {
			for (final EnumColourGroup colourGroup : values()) {
				if (colourGroup.isColourInGroup(colour)) {
					return colourGroup;
				}
			}

			return null;
		}
	}

	public static class ColouredSlabGroup {
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab> low;
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab> high;

		/**
		 * Create a coloured slab group.
		 *
		 * @param groupName The group's name
		 * @param material  The Material of the slabs
		 */
		public ColouredSlabGroup(final String groupName, final Material material) {
			low = createGroup(groupName, material, EnumColourGroup.LOW);
			high = createGroup(groupName, material, EnumColourGroup.HIGH);
		}

		/**
		 * Create a slab group.
		 *
		 * @param groupName   The group's name
		 * @param material    The Material of the slabs
		 * @param colourGroup The colour group
		 * @return The slab group
		 */
		private SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab> createGroup(final String groupName, final Material material, final EnumColourGroup colourGroup) {
			return new SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab>(groupName, material, colourGroup) {
				@Override
				public BlockClaySlab createSlab(final Material material, final boolean isDouble, final EnumColourGroup colourGroup) {
					return new BlockClaySlab(material, colourGroup, this) {
						@Override
						public boolean isDouble() {
							return isDouble;
						}

						@Override
						public IProperty<EnumDyeColor> getVariantProperty() {
							return colourGroup.property;
						}
					};
				}
			};
		}

		/**
		 * Get the slab group for the specified colour group.
		 *
		 * @param colourGroup The colour group
		 * @return The slab group
		 */
		public SlabGroup<EnumDyeColor, EnumColourGroup, BlockClaySlab> getSlabGroupByColourGroup(final EnumColourGroup colourGroup) {
			return colourGroup == EnumColourGroup.LOW ? low : high;
		}
	}
}

 

BlockSlabClay.java

package simplexdesigns.bkproject.block;

import net.minecraft.block.BlockSlab;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemSlab;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.NonNullList;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import simplexdesigns.bkproject.BkProject;
import simplexdesigns.bkproject.util.Constants;

import java.util.Optional;
import java.util.Random;
import java.util.stream.Collectors;

/**
 * Base class for this mod's slab blocks.
 *
 * @param <VARIANT>  The variant type
 * @param <VARIANTS> The variant collection type
 * @param <SLAB>     The slab type
 * @author Choonster
 */
public abstract class BlockSlabClay<
		VARIANT extends Enum<VARIANT> & IStringSerializable,
		VARIANTS extends Iterable<VARIANT> & IStringSerializable,
		SLAB extends BlockSlabClay<VARIANT, VARIANTS, SLAB>
		> extends BlockSlab {

	/**
	 * The group this slab belongs to
	 */
	protected final SlabGroup<VARIANT, VARIANTS, SLAB> slabGroup;

	/**
	 * The variants of this slab
	 */
	protected final VARIANTS variants;

	/**
	 * Create a slab block.
	 *
	 * @param material  The Material of this slab
	 * @param slabGroup The group this slab belongs to
	 * @param variants  The variants of this slab
	 */
	public BlockSlabClay(final Material material, final SlabGroup<VARIANT, VARIANTS, SLAB> slabGroup, final VARIANTS variants) {
		super(material);
		this.slabGroup = slabGroup;
		this.variants = variants;

		// Vanilla sets this for anything that extends BlockSlab in Block.registerBlocks,
		// but this is run before mods are loaded; so we need to set it manually.
		// Thanks to HappyKiller1O1 for pointing out this field to me:
		// http://www.minecraftforge.net/forum/index.php/topic,36125.msg190252.html#msg190252
		this.useNeighborBrightness = true;

		String name = slabGroup.groupName + "_" + variants.getName();
		if (isDouble()) {
			name = "double_" + name;
		}

		setRegistryName(BkProject.MODID, name);
		setUnlocalizedName(Constants.RESOURCE_PREFIX + slabGroup.groupName);

		IBlockState iblockstate = this.blockState.getBaseState();

		if (!isDouble()) {
			iblockstate = iblockstate.withProperty(HALF, BlockSlab.EnumBlockHalf.BOTTOM);
		}

		final Optional<VARIANT> defaultVariant = getVariantProperty().getAllowedValues().stream().findFirst();
		if (defaultVariant.isPresent()) {
			iblockstate = iblockstate.withProperty(getVariantProperty(), defaultVariant.get());
		}

		setDefaultState(iblockstate);

		setCreativeTab(BkProject.creativeTab2);
	}

	/**
	 * Get the metadata value for the specified variant
	 *
	 * @param variant The variant
	 * @return The metadata value
	 */
	public abstract int getMetadata(VARIANT variant);

	/**
	 * Get the variant for the specified metadata value
	 *
	 * @param meta The metadata value
	 * @return The variant
	 */
	protected abstract VARIANT getVariant(int meta);

	@Override
	public Item getItemDropped(final IBlockState state, final Random rand, final int fortune) {
		return slabGroup.item;
	}

	@Override
	public abstract IProperty<VARIANT> getVariantProperty();

	@SideOnly(Side.CLIENT)
	@Override
	public void getSubBlocks(final CreativeTabs tab, final NonNullList<ItemStack> list) {
		list.addAll(getVariantProperty().getAllowedValues().stream()
				.map(variant -> new ItemStack(this, 1, getMetadata(variant)))
				.collect(Collectors.toList()));
	}

	@SuppressWarnings("deprecation")
	@Override
	public IBlockState getStateFromMeta(final int meta) {
		final VARIANT variant = getVariant(meta & 7);
		IBlockState state = this.getDefaultState().withProperty(getVariantProperty(), variant);

		if (!this.isDouble()) {
			state = state.withProperty(HALF, (meta & 8) == 0 ? EnumBlockHalf.BOTTOM : EnumBlockHalf.TOP);
		}

		return state;
	}

	@Override
	public int getMetaFromState(final IBlockState state) {
		int meta = getMetadata(state.getValue(getVariantProperty()));

		if (!this.isDouble() && state.getValue(HALF) == EnumBlockHalf.TOP) {
			meta |= 8;
		}

		return meta;
	}

	@Override
	protected BlockStateContainer createBlockState() {
		return isDouble() ? new BlockStateContainer(this, getVariantProperty()) : new BlockStateContainer(this, HALF, getVariantProperty());
	}

	@Override
	public int damageDropped(final IBlockState state) {
		return getMetadata(state.getValue(getVariantProperty()));
	}

	/**
	 * A group consisting of a single and a double slab.
	 *
	 * @param <VARIANT>  The variant type
	 * @param <VARIANTS> The variant collection type
	 * @param <SLAB>     The slab type
	 */
	public static abstract class SlabGroup<
			VARIANT extends Enum<VARIANT> & IStringSerializable,
			VARIANTS extends Iterable<VARIANT> & IStringSerializable,
			SLAB extends BlockSlabClay<VARIANT, VARIANTS, SLAB>
			> {

		public final SLAB singleSlab;
		public final SLAB doubleSlab;
		public final String groupName;
		public final ItemSlab item;

		/**
		 * Create a slab group.
		 *
		 * @param groupName The group's name
		 * @param material  The Material of the slabs
		 * @param variants  The variants of the slabs
		 */
		public SlabGroup(final String groupName, final Material material, final VARIANTS variants) {
			this.groupName = groupName;
			this.singleSlab = createSlab(material, false, variants);
			this.doubleSlab = createSlab(material, true, variants);
			this.item = new ItemSlab(singleSlab, singleSlab, doubleSlab);
		}

		/**
		 * Create a slab block.
		 *
		 * @param material The Material
		 * @param isDouble Is this a double slab?
		 * @param variants The variants
		 * @return The slab block
		 */
		public abstract SLAB createSlab(Material material, boolean isDouble, VARIANTS variants);
	}
}

 

Posted

Don't use ItemModelMesher#register to register models, use ModelLoader.setCustomModelResourceLocation/setCustomMeshDefinition in ModelRegistryEvent. Models need to be registered in a client-only class.

 

I use this method to register models for each SlabGroup's item. This is set up so that the item uses the models specified in the blockstates file.

 

To be clear, my mod is meant to be an example rather than a tutorial. You need to read through the code and understand how it works, I don't explain it step-by-step (though I do try to document what most methods and classes do).

  • Like 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 7/9/2017 at 11:01 AM, Choonster said:

Don't use ItemModelMesher#register to register models, use ModelLoader.setCustomModelResourceLocation/setCustomMeshDefinition in ModelRegistryEvent. Models need to be registered in a client-only class.

 

I use this method to register models for each SlabGroup's item. This is set up so that the item uses the models specified in the blockstates file.

 

To be clear, my mod is meant to be an example rather than a tutorial. You need to read through the code and understand how it works, I don't explain it step-by-step (though I do try to document what most methods and classes do).

Expand  

 

K, i got them working properly now. I forgot to add in that code. xD

How would I go about adding in setStepSound(material.CLOTH);  into the custom wool slab?

 

package simplexdesigns.bkproject.block;

import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import simplexdesigns.bkproject.util.OreDictUtils;

import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Optional;
import java.util.function.Predicate;

public abstract class BlockWoolSlab extends BlockSlabCustom<EnumDyeColor, BlockWoolSlab.EnumColourGroup, BlockWoolSlab> {

	public BlockWoolSlab(final Material material, final EnumColourGroup colourGroup, final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> slabGroup) {
		super(material, slabGroup, colourGroup);
		
	}

	@SuppressWarnings("deprecation")
	@Override
	public MapColor getMapColor(final IBlockState state, final IBlockAccess world, final BlockPos pos) {
		return MapColor.getBlockColor(state.getValue(getVariantProperty()));
	}

	@Override
	public String getUnlocalizedName(final int meta) {
		return getUnlocalizedName() + "." + getVariant(meta).getUnlocalizedName();
	}

	@Override
	public int getMetadata(final EnumDyeColor colour) {
		return variants.getOffsetMetadata(colour);
		
	}

	@Override
	protected EnumDyeColor getVariant(final int meta) {
		return variants.byOffsetMetadata(meta);
	}

	@Override
	public boolean recolorBlock(final World world, final BlockPos pos, final EnumFacing side, final EnumDyeColor colour) {
		final IBlockState currentState = world.getBlockState(pos);
		return variants.isColourInGroup(colour) &&
				currentState.getValue(getVariantProperty()) != colour &&
				world.setBlockState(pos, currentState.withProperty(getVariantProperty(), colour));
		
	}

	@Override
	public boolean onBlockActivated(final World worldIn, final BlockPos pos, final IBlockState state, final EntityPlayer playerIn, final EnumHand hand, final EnumFacing side, final float hitX, final float hitY, final float hitZ) {
		final ItemStack heldItem = playerIn.getHeldItem(hand);

		if (!heldItem.isEmpty()) {
			final Optional<EnumDyeColor> dyeColour = OreDictUtils.INSTANCE.getDyeColour(heldItem);
			if (dyeColour.isPresent()) {
				final boolean success = recolorBlock(worldIn, pos, side, dyeColour.get());
				if (success) {
					heldItem.shrink(1);
					return true;
				}
			}
		}
		

		return false;
	}

	@Override
	public Comparable<?> getTypeForItem(final ItemStack stack) {
		return variants.byOffsetMetadata(stack.getMetadata());
	}

	public enum EnumColourGroup implements Iterable<EnumDyeColor>, IStringSerializable {
		LOW("low", colour -> colour.getMetadata() < 8, 0),
		HIGH("high", colour -> colour.getMetadata() >= 8, 8);

		public final IProperty<EnumDyeColor> property;

		private final int metaOffset;

		private final String name;

		private final Collection<EnumDyeColor> values;

		EnumColourGroup(final String name, final Predicate<EnumDyeColor> colourFilter, final int metaOffset) {
			this.name = name;
			this.property = PropertyEnum.create("colour", EnumDyeColor.class, colourFilter::test);
			this.metaOffset = metaOffset;
			this.values = this.property.getAllowedValues();
			
		}

		public int getOffsetMetadata(final EnumDyeColor colour) {
			return colour.getMetadata() - metaOffset;
		}

		public EnumDyeColor byOffsetMetadata(final int meta) {
			return EnumDyeColor.byMetadata(meta + metaOffset);
		}

		@Override
		public Iterator<EnumDyeColor> iterator() {
			return values.iterator();
			
		}

		@Override
		public String getName() {
			return name;
			
		}

		public boolean isColourInGroup(final EnumDyeColor colour) {
			return values.contains(colour);
		}

		@Nullable
		public static EnumColourGroup getGroupForColour(final EnumDyeColor colour) {
			for (final EnumColourGroup colourGroup : values()) {
				if (colourGroup.isColourInGroup(colour)) {
					return colourGroup;
				}
			}

			return null;
			
		}
	}

	public static class ColouredSlabGroup {
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> low;
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> high;

		public ColouredSlabGroup(final String groupName, final Material material) {
			low = createGroup(groupName, material, EnumColourGroup.LOW);
			high = createGroup(groupName, material, EnumColourGroup.HIGH);
		}

		private SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> createGroup(final String groupName, final Material material, final EnumColourGroup colourGroup) {
			return new SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab>(groupName, material, colourGroup) {
				@Override
				public BlockWoolSlab createSlab(final Material material, final boolean isDouble, final EnumColourGroup colourGroup) {
					return new BlockWoolSlab(material, colourGroup, this) {
						@Override
						public boolean isDouble() {
							return isDouble;
						}

						@Override
						public IProperty<EnumDyeColor> getVariantProperty() {
							return colourGroup.property;
						}
					};
				}
			};
			
		}


		public SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> getSlabGroupByColourGroup(final EnumColourGroup colourGroup) {
			return colourGroup == EnumColourGroup.LOW ? low : high;
		}
		
		
	}
	
}

 

Posted
  On 7/12/2017 at 8:30 AM, xXiNightXx said:

How would I go about adding in setStepSound(material.CLOTH);  into the custom wool slab?

Expand  

 

Just add it to the constructor.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted (edited)
  On 7/12/2017 at 8:34 AM, xXiNightXx said:

Adding it in causes this error

Expand  

 

As Animefan8888 said, the method is now called Block#setSoundType.

 

You're trying to call the method with a Material, but it takes a SoundType argument; so your current code obviously won't compile. You need to call it with a SoundType, you can get the vanilla SoundType instances from the static fields of the SoundType class.

 

You're also trying to access the static field Material.CLOTH from an instance of Material, which is misleading since it makes it look like an instance field. Access static fields and methods through the class, not an instance.

Edited by Choonster

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 7/12/2017 at 8:44 AM, Choonster said:

 

As Animefan8888 said, the method is now called Block#setSoundType.

 

You're trying to call the method with a Material, but it takes a SoundType argument; so your current code obviously won't compile. You need to call it with a SoundType, you can get the vanilla SoundType instances from the static fields of the SoundType class.

 

You're also trying to access the static field Material.CLOTH from an instance of Material, which is misleading since it makes it look like an instance field. Access static fields and methods through the class, not an instance.

Expand  

so the code I need to add is?

public static final SoundType CLOTH = new SoundType(1.0F, 1.0F, SoundEvents.BLOCK_CLOTH_BREAK, SoundEvents.BLOCK_CLOTH_STEP, SoundEvents.BLOCK_CLOTH_PLACE, SoundEvents.BLOCK_CLOTH_HIT, SoundEvents.BLOCK_CLOTH_FALL);

 

Posted
  On 7/12/2017 at 8:57 AM, xXiNightXx said:

so the code I need to add is?

Expand  

No I said the method is now called setSoundType() and it takes a SoundType. Choonster said to get the sound Type reference it from the SoundType class. Not make a new instance.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted
  On 7/12/2017 at 9:24 AM, Animefan8888 said:

No I said the method is now called setSoundType() and it takes a SoundType. Choonster said to get the sound Type reference it from the SoundType class. Not make a new instance.

Expand  

ok that worked on my regular blocks, however adding it to my BlockClothSlab.java does not change its sound. Still sounds like stone even though i call "CLOTH"

Posted
  On 7/12/2017 at 9:37 AM, Animefan8888 said:

Show your new code.

Expand  

K, here is the code.

 

package simplexdesigns.bkproject.block;

import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import simplexdesigns.bkproject.util.OreDictUtils;

import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Optional;
import java.util.function.Predicate;

public abstract class BlockWoolSlab extends BlockSlabCustom<EnumDyeColor, BlockWoolSlab.EnumColourGroup, BlockWoolSlab> {

	public static final SoundType CLOTH = new SoundType(1.0F, 1.0F, SoundEvents.BLOCK_CLOTH_BREAK, SoundEvents.BLOCK_CLOTH_STEP, SoundEvents.BLOCK_CLOTH_PLACE, SoundEvents.BLOCK_CLOTH_HIT, SoundEvents.BLOCK_CLOTH_FALL);
	
	public BlockWoolSlab(final Material material, final EnumColourGroup colourGroup, final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> slabGroup) {
		super(material, slabGroup, colourGroup);
		setSoundType(SoundType.CLOTH);
		
	}


	@SuppressWarnings("deprecation")
	@Override
	public MapColor getMapColor(final IBlockState state, final IBlockAccess world, final BlockPos pos) {
		return MapColor.getBlockColor(state.getValue(getVariantProperty()));
	}

	@Override
	public String getUnlocalizedName(final int meta) {
		return getUnlocalizedName() + "." + getVariant(meta).getUnlocalizedName();
	}

	@Override
	public int getMetadata(final EnumDyeColor colour) {
		return variants.getOffsetMetadata(colour);
		
	}

	@Override
	protected EnumDyeColor getVariant(final int meta) {
		return variants.byOffsetMetadata(meta);
	}

	@Override
	public boolean recolorBlock(final World world, final BlockPos pos, final EnumFacing side, final EnumDyeColor colour) {
		final IBlockState currentState = world.getBlockState(pos);
		return variants.isColourInGroup(colour) &&
				currentState.getValue(getVariantProperty()) != colour &&
				world.setBlockState(pos, currentState.withProperty(getVariantProperty(), colour));
		
	}

	@Override
	public boolean onBlockActivated(final World worldIn, final BlockPos pos, final IBlockState state, final EntityPlayer playerIn, final EnumHand hand, final EnumFacing side, final float hitX, final float hitY, final float hitZ) {
		final ItemStack heldItem = playerIn.getHeldItem(hand);

		if (!heldItem.isEmpty()) {
			final Optional<EnumDyeColor> dyeColour = OreDictUtils.INSTANCE.getDyeColour(heldItem);
			if (dyeColour.isPresent()) {
				final boolean success = recolorBlock(worldIn, pos, side, dyeColour.get());
				if (success) {
					heldItem.shrink(1);
					return true;
				}
			}
		}
		

		return false;
	}

	@Override
	public Comparable<?> getTypeForItem(final ItemStack stack) {
		return variants.byOffsetMetadata(stack.getMetadata());
	}

	public enum EnumColourGroup implements Iterable<EnumDyeColor>, IStringSerializable {
		LOW("low", colour -> colour.getMetadata() < 8, 0),
		HIGH("high", colour -> colour.getMetadata() >= 8, 8);

		public final IProperty<EnumDyeColor> property;

		private final int metaOffset;

		private final String name;

		private final Collection<EnumDyeColor> values;

		EnumColourGroup(final String name, final Predicate<EnumDyeColor> colourFilter, final int metaOffset) {
			this.name = name;
			this.property = PropertyEnum.create("colour", EnumDyeColor.class, colourFilter::test);
			this.metaOffset = metaOffset;
			this.values = this.property.getAllowedValues();
			
		}

		public int getOffsetMetadata(final EnumDyeColor colour) {
			return colour.getMetadata() - metaOffset;
		}

		public EnumDyeColor byOffsetMetadata(final int meta) {
			return EnumDyeColor.byMetadata(meta + metaOffset);
		}

		@Override
		public Iterator<EnumDyeColor> iterator() {
			return values.iterator();
			
		}

		@Override
		public String getName() {
			return name;
			
		}

		public boolean isColourInGroup(final EnumDyeColor colour) {
			return values.contains(colour);
		}

		@Nullable
		public static EnumColourGroup getGroupForColour(final EnumDyeColor colour) {
			for (final EnumColourGroup colourGroup : values()) {
				if (colourGroup.isColourInGroup(colour)) {
					return colourGroup;
				}
			}

			return null;
			
		}
	}

	public static class ColouredSlabGroup {
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> low;
		public final SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> high;

		public ColouredSlabGroup(final String groupName, final Material material) {
			low = createGroup(groupName, material, EnumColourGroup.LOW);
			high = createGroup(groupName, material, EnumColourGroup.HIGH);
			
		}

		private SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> createGroup(final String groupName, final Material material, final EnumColourGroup colourGroup) {
			return new SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab>(groupName, material, colourGroup) {
				@Override
				public BlockWoolSlab createSlab(final Material material, final boolean isDouble, final EnumColourGroup colourGroup) {
					return new BlockWoolSlab(material, colourGroup, this) {
						@Override
						public boolean isDouble() {
							return isDouble;
						}

						@Override
						public IProperty<EnumDyeColor> getVariantProperty() {
							return colourGroup.property;
						}
					};
				}
			};
			
		}


		public SlabGroup<EnumDyeColor, EnumColourGroup, BlockWoolSlab> getSlabGroupByColourGroup(final EnumColourGroup colourGroup) {
			return colourGroup == EnumColourGroup.LOW ? low : high;
		}
		
		
	}
	
}

 

Posted (edited)

You don't need to create your own SoundType instance, you can use the vanilla one stored in the SoundType.CLOTH field (Edit: It looks like you are using the vanilla instance, but still creating your own that you never use).

 

If you put a breakpoint in Block#getSoundType(IBlockState, World, BlockPos, Entity) with the condition this instanceof BlockWoolSlab, run Minecraft in debug mode and trigger one of the block's sounds (e.g. place or break the block), what's the value of the Block#blockSoundType field?

Edited by Choonster

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 7/12/2017 at 10:19 AM, Choonster said:

You don't need to create your own SoundType instance, you can use the vanilla one stored in the SoundType.CLOTH field (Edit: It looks like you are using the vanilla instance, but still creating your own that you never use).

 

If you put a breakpoint in Block#getSoundType(IBlockState, World, BlockPos, Entity) with the condition this instanceof BlockWoolSlab, run Minecraft in debug mode and trigger one of the block's sounds (e.g. place or break the block), what's the value of the Block#blockSoundType field?

Expand  

wait im confused, what would I do to put that breakpoint in. Is it like setSoundType(SoundType.CLOTH).BREAKPOINTCODEHERE;?

Posted
  On 7/12/2017 at 10:34 AM, xXiNightXx said:

wait im confused, what would I do to put that breakpoint in. Is it like setSoundType(SoundType.CLOTH).BREAKPOINTCODEHERE;?

Expand  

 

Open the Block class, navigate to the getSoundType(IBlockState, World, BlockPos, Entity) method and set a breakpoint in it.

 

If you don't know how to set breakpoints, look at your IDE's documentation or ask your search engine of choice.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 7/12/2017 at 10:37 AM, Choonster said:

 

Open the Block class, navigate to the getSoundType(IBlockState, World, BlockPos, Entity) method and set a breakpoint in it.

 

If you don't know how to set breakpoints, look at your IDE's documentation or ask your search engine of choice.

Expand  

Yeah Im gonna pass on this sound thing. Haha, its driving me nuts. Not like the sound really matters for what im using the blocks for. Sorry for the trouble, im more of a visual learner. I need to see how stuff looks in order to understand it.

Posted
  On 7/12/2017 at 11:24 AM, xXiNightXx said:

Yeah Im gonna pass on this sound thing. Haha, its driving me nuts. Not like the sound really matters for what im using the blocks for. Sorry for the trouble, im more of a visual learner. I need to see how stuff looks in order to understand it.

Expand  

Are you using eclipse?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Setting breakpoints is very simple. Go to the right of the line you want the program to pause at and right click. Depending on how far you went and your version of eclipse you should either see a box where it gives you some options or a blue-ish circle.  Now go to your slabs class and set the breakpoint just after your call setSoundType. Launch in debug mode instead of run mode with is the little bug instead of the play button at the top. If you need more ask.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted
  On 7/12/2017 at 11:37 AM, Animefan8888 said:

I seem to forget quoting people a lot. The above message is the real one.

Expand  

No problem, this site has a little notification sound when I get a reply. xD  I will try the breakpoint after I finish adding in the last few models of stairs Im working on. Give me like 3ish min to reply back.

 

Posted
  On 7/12/2017 at 11:36 AM, Animefan8888 said:

Setting breakpoints is very simple. Go to the right of the line you want the program to pause at and right click. Depending on how far you went and your version of eclipse you should either see a box where it gives you some options or a blue-ish circle.  Now go to your slabs class and set the breakpoint just after your call setSoundType. Launch in debug mode instead of run mode with is the little bug instead of the play button at the top. If you need more ask.

Expand  

this is what I get when i created the breakpoint and stepped on the block while in debug mode.

IMGUR Link

E4s7xXe.png

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

    • Add crash-reports with sites like https://mclo.gs/ Remove the mod dashloader
    • java.lang.ExceptionInInitializerError     at knot//net.minecraft.class_3304.handler$znk000$dashloader$reloadDash(class_3304.java:1055)     at knot//net.minecraft.class_3304.method_18232(class_3304.java:47)     at knot//net.minecraft.class_310.<init>(class_310.java:652)     at knot//net.minecraft.client.main.Main.main(Main.java:211)     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)     at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) Caused by: dev.quantumfusion.hyphen.thr.HyphenException:  Cause: net.minecraft.class_804.<init>(org.joml.Vector3f,org.joml.Vector3f,org.joml.Vector3f,org.joml.Vector3f)Suggestion: Check if the constructor holds all of the fields. Object Stacktrace:     in class_804_<@DataNullablenull>     at field thirdPersonLeftHand in DashModelTransformation_<@DataNullablenull>     at field transformation in DashBasicBakedModel Stacktrace:     at knot//dev.quantumfusion.hyphen.codegen.def.ClassDef.scan(ClassDef.java:80)     at knot//dev.quantumfusion.hyphen.SerializerHandler.acquireDef(SerializerHandler.java:114)     at knot//dev.quantumfusion.hyphen.codegen.def.ClassDef.scan(ClassDef.java:39)     at knot//dev.quantumfusion.hyphen.SerializerHandler.acquireDef(SerializerHandler.java:114)     at knot//dev.quantumfusion.hyphen.codegen.def.ClassDef.scan(ClassDef.java:39)     at knot//dev.quantumfusion.hyphen.SerializerHandler.scan(SerializerHandler.java:164)     at knot//dev.quantumfusion.hyphen.SerializerHandler.build(SerializerHandler.java:171)     at knot//dev.quantumfusion.hyphen.SerializerFactory.build(SerializerFactory.java:181)     at knot//dev.notalpha.dashloader.io.Serializer.<init>(Serializer.java:31)     at knot//dev.notalpha.dashloader.io.RegistrySerializer.<init>(RegistrySerializer.java:46)     at knot//dev.notalpha.dashloader.CacheImpl.<init>(CacheImpl.java:52)     at knot//dev.notalpha.dashloader.CacheFactoryImpl.build(CacheFactoryImpl.java:74)     at knot//dev.notalpha.dashloader.client.DashLoaderClient.<clinit>(DashLoaderClient.java:44)     ... 7 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at knot//net.minecraft.class_3304.handler$znk000$dashloader$reloadDash(class_3304.java:1055)     at knot//net.minecraft.class_3304.method_18232(class_3304.java:47)     at knot//net.minecraft.class_310.<init>(class_310.java:652) -- Initialization -- Details:     Modules:          ADVAPI32.dll:Advanced Windows 32 Base API:10.0.26100.3624 (WinBuild.160101.0800):Microsoft Corporation         COMCTL32.dll:User Experience Controls Library:6.10 (WinBuild.160101.0800):Microsoft Corporation         CRYPT32.dll:Crypto API32:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         CRYPTBASE.dll:Base cryptographic API DLL:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         CRYPTSP.dll:Cryptographic Service Provider API:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         CoreMessaging.dll:Microsoft CoreMessaging Dll:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         DBGHELP.DLL:Windows Image Helper:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         DEVOBJ.dll:Device Information Set DLL:10.0.26100.1150 (WinBuild.160101.0800):Microsoft Corporation         DNSAPI.dll:DNS Client API DLL:10.0.26100.1591 (WinBuild.160101.0800):Microsoft Corporation         GDI32.dll:GDI Client DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         GLU32.dll:OpenGL Utility Library DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         HID.DLL:Hid User Library:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         IMM32.DLL:Multi-User Windows IMM32 API Client DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         IPHLPAPI.DLL:IP Helper API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         IntelControlLib.dll:Intel Graphics Control Lib Runtime:1.0.200:         KERNEL32.DLL:Windows NT BASE API Client DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         KERNELBASE.dll:Windows NT BASE API Client DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         MMDevApi.dll:MMDevice API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         MSASN1.dll:ASN.1 Runtime APIs:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         MSCTF.dll:MSCTF Server DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         MessageBus.dll:NVIDIA Message Bus::NVIDIA Corporation         Microsoft.Internal.WarpPal.dll         MpOav.dll:IOfficeAntiVirus Module:4.18.25050.5 (bcf51ab773be21957c5713cae9cb3adf2fd75bf5):Microsoft Corporation         NSI.dll:NSI User-mode interface DLL:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         NTASN1.dll:Microsoft ASN.1 API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         NvCamera64.dll:Camera control and photo capture:7.1.0.0:NVIDIA Corporation         NvMessageBus.dll:NVIDIA Message Bus::NVIDIA Corporation         OLEAUT32.dll:OLEAUT32.DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         OWExplorer.dll:Overlay:2.2.276.1:Overwolf LTD         Ole32.dll:Microsoft OLE for Windows:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         OpenAL.dll:Main implementation library:1.21.1:         POWRPROF.dll:Power Profile Helper DLL:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         PSAPI.DLL:Process Status Helper:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         Pdh.dll:Windows Performance Data Helper DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         RPCRT4.dll:Remote Procedure Call Runtime:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         SETUPAPI.dll:Windows Setup API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         SHCORE.dll:SHCORE:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         SHELL32.dll:Windows Shell Common Dll:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         UMPDC.dll:User Mode Power Dependency Coordinator:10.0.26100.1301 (WinBuild.160101.0800):Microsoft Corporation         USER32.dll:Multi-User Windows USER API Client DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         USERENV.dll:Userenv:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         VCRUNTIME140.dll:Microsoft® C Runtime Library:14.38.33135.0:Microsoft Corporation         VERSION.dll:Version Checking and File Installation Libraries:10.0.26100.1150 (WinBuild.160101.0800):Microsoft Corporation         WINHTTP.dll:Windows HTTP Services:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         WINMM.dll:MCI API DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         WINSTA.dll:Winstation Library:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         WINTRUST.dll:Microsoft Trust Verification APIs:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         WS2_32.dll:Windows Socket 2.0 32-Bit DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         WTSAPI32.dll:Windows Remote Desktop Session Host Server SDK APIs:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         WindowsCodecs.dll:Microsoft Windows Codecs Library:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         XINPUT9_1_0.dll:XNA Common Controller:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         amsi.dll:Anti-Malware Scan Interface:10.0.26100.1150 (WinBuild.160101.0800):Microsoft Corporation         apphelp.dll:Application Compatibility Client Library:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         bcrypt.dll:Windows Cryptographic Primitives Library:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         bcryptPrimitives.dll:Windows Cryptographic Primitives Library:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         cfgmgr32.dll:Configuration Manager DLL:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         clbcatq.dll:COM+ Configuration Catalog:2001.12.10941.16384 (WinBuild.160101.0800):Microsoft Corporation         combase.dll:Microsoft COM for Windows:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         cryptnet.dll:Crypto Network Related API:10.0.26100.3624 (WinBuild.160101.0800):Microsoft Corporation         d3d11.dll:Direct3D 11 Runtime:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         d3dcompiler_47_64.dll:Direct3D HLSL Compiler for Redistribution:6.3.9600.16384 (winblue_rtm.130821-1623):Microsoft Corporation         dbgcore.DLL:Windows Core Debugging Helpers:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         dcomp.dll:Microsoft DirectComposition Library:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc.DLL:DHCP Client Service:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc6.DLL:DHCPv6 Client:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         dinput8.dll:Microsoft DirectInput:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         directxdatabasehelper.dll:DirectXDatabaseHelper:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         drvstore.dll:Driver Store API:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         dwmapi.dll:Microsoft Desktop Window Manager API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         dxcore.dll:DXCore:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         dxgi.dll:DirectX Graphics Infrastructure:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         extnet.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         fastprox.dll:WMI Custom Marshaller:10.0.26100.3624 (WinBuild.160101.0800):Microsoft Corporation         fwpuclnt.dll:FWP/IPsec User-Mode API:10.0.26100.3915 (WinBuild.160101.0800):Microsoft Corporation         gdi32full.dll:GDI Client DLL:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         glfw.dll:GLFW 3.4.0 DLL:3.4.0:GLFW         gpapi.dll:Group Policy Client API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         icm32.dll:Microsoft Color Management Module (CMM):10.0.26100.2314 (WinBuild.160101.0800):Microsoft Corporation         igc1464.dll:Intel Graphics Shader Compiler for Intel(R) Graphics Accelerator:31.0.101.5592:Intel Corporation         igc64.dll:Intel Graphics Shader Compiler for Intel(R) Graphics Accelerator:31.0.101.5592:Intel Corporation         igd10iumd64.dll:User Mode Driver for Intel(R) Graphics Technology:31.0.101.5592:Intel Corporation         igd10um64xe.DLL:User Mode Driver for Intel(R) Graphics Technology:31.0.101.5592:Intel Corporation         igdgmm64.dll:User Mode Driver for Intel(R) Graphics Technology:31.0.101.5592:Intel Corporation         imagehlp.dll:Windows NT Image Helper:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         inputhost.dll:InputHost:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         java.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         javaw.exe:OpenJDK Platform binary:17.0.15.0:Microsoft         jemalloc.dll         jimage.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         jli.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         jna16049269642719639181.dll:JNA native library:6.1.4:Java(TM) Native Access (JNA)         jsvml.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         jvm.dll:OpenJDK 64-Bit server VM:17.0.15.0:Microsoft         kernel.appcore.dll:AppModel API Host:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         lwjgl.dll         lwjgl_opengl.dll         lwjgl_stb.dll         management.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         management_ext.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         mdnsNSP.dll:Bonjour Namespace Provider:3,1,0,1:Apple Inc.         mscms.dll:Microsoft Color Matching System DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         msvcp140.dll:Microsoft® C Runtime Library:14.38.33135.0:Microsoft Corporation         msvcp_win.dll:Microsoft® C Runtime Library:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         msvcrt.dll:Windows NT CRT DLL:7.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         mswsock.dll:Microsoft Windows Sockets 2.0 Service Provider:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         napinsp.dll:E-mail Naming Shim Provider:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         ncrypt.dll:Windows NCrypt Router:10.0.26100.1591 (WinBuild.160101.0800):Microsoft Corporation         net.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         nio.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         nlansp_c.dll:NLA Namespace Service Provider DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         ntdll.dll:NT Layer DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         ntmarta.dll:Windows NT MARTA provider:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         nvapi64.dll:NVIDIA NVAPI Library, Version 566.14 :32.0.15.6614:NVIDIA Corporation         nvgpucomp64.dll:NVIDIA GPU Compiler Driver, Version 566.14 :32.0.15.6614:NVIDIA Corporation         nvldumdx.dll:NVIDIA Driver Loader, Version 566.14 :32.0.15.6614:NVIDIA Corporation         nvoglv64.dll:NVIDIA Compatible OpenGL ICD:32.0.15.6614:NVIDIA Corporation         nvppex.dll:NVIDIA Driver, Version 566.14 :32.0.15.6614:NVIDIA Corporation         nvspcap64.dll:NVIDIA Game Proxy 8FileVersion  1:11.0.4.159  8Produc:NVIDIA Corporation  L$FileDescriptio         nvwgf2umx.dll:NVIDIA D3D10 Driver, Version 566.14 :32.0.15.6614:NVIDIA Corporation         opengl32.dll:OpenGL Client DLL:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         opus4j.dll         perfos.dll:Windows System Performance Objects DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         pfclient.dll:SysMain Client:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         profapi.dll:User Profile Basic API:10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         rasadhlp.dll:Remote Access AutoDial Helper:10.0.26100.1150 (WinBuild.160101.0800):Microsoft Corporation         rsaenh.dll:Microsoft Enhanced Cryptographic Provider:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         sapi.dll:Speech API:5.3.29131.00 (WinBuild.160101.0800):Microsoft Corporation         sechost.dll:Host for SCM/SDDL/LSA Lookup APIs:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         shlwapi.dll:Shell Light-weight Utility Library:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         sunmscapi.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         symamsi.dll:Symantec AMSI provider:15.7.14.32:Broadcom         textinputframework.dll:"TextInputFramework.DYNLINK":10.0.26100.4484 (WinBuild.160101.0800):Microsoft Corporation         ucrtbase.dll:Microsoft® C Runtime Library:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         uxtheme.dll:Microsoft UxTheme Library:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         vcruntime140_1.dll:Microsoft® C Runtime Library:14.38.33135.0:Microsoft Corporation         verify.dll:OpenJDK Platform binary:17.0.15.0:Microsoft         wbemcomn.dll:WMI:10.0.26100.1150 (WinBuild.160101.0800):Microsoft Corporation         wbemprox.dll:WMI:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         wbemsvc.dll:WMI:10.0.26100.4202 (WinBuild.160101.0800):Microsoft Corporation         win32u.dll:Win32u:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         windows.staterepositorycore.dll:Windows StateRepository API Core:10.0.26100.4652 (WinBuild.160101.0800):Microsoft Corporation         windows.storage.dll:Microsoft WinRT Storage API:10.0.26100.1457 (WinBuild.160101.0800):Microsoft Corporation         winrnr.dll:LDAP RnR Provider DLL:10.0.26100.1882 (WinBuild.160101.0800):Microsoft Corporation         wintypes.dll:Windows Base Types DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         wldp.dll:Windows Lockdown Policy:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         wshbth.dll:Windows Sockets Helper DLL:10.0.26100.4061 (WinBuild.160101.0800):Microsoft Corporation         wshunix.dll:AF_UNIX Winsock2 Helper DLL:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         xinput1_4.dll:Microsoft Common Controller API:10.0.26100.1 (WinBuild.160101.0800):Microsoft Corporation         zip.dll:OpenJDK Platform binary:17.0.15.0:Microsoft Stacktrace:     at knot//net.minecraft.client.main.Main.main(Main.java:211)     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)     at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.15, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 459466240 bytes (438 MiB) / 1612709888 bytes (1538 MiB) up to 4294967296 bytes (4096 MiB)     CPUs: 12     Processor Vendor: GenuineIntel     Processor Name: 13th Gen Intel(R) Core(TM) i5-13420H     Identifier: Intel64 Family 6 Model 186 Stepping 2     Microarchitecture: unknown     Frequency (GHz): 2.61     Number of physical packages: 1     Number of physical CPUs: 8     Number of logical CPUs: 12     Graphics card #0 name: Intel(R) UHD Graphics     Graphics card #0 vendor: Intel Corporation (0x8086)     Graphics card #0 VRAM (MB): 2048.00     Graphics card #0 deviceId: 0xa7a8     Graphics card #0 versionInfo: DriverVersion=31.0.101.5592     Graphics card #1 name: NVIDIA GeForce RTX 4050 Laptop GPU     Graphics card #1 vendor: NVIDIA (0x10de)     Graphics card #1 VRAM (MB): 4095.00     Graphics card #1 deviceId: 0x28a1     Graphics card #1 versionInfo: DriverVersion=32.0.15.6614     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 8192.00     Memory slot #1 clockSpeed (GHz): 3.20     Memory slot #1 type: DDR4     Virtual memory max (MB): 28382.02     Virtual memory used (MB): 27525.00     Swap memory total (MB): 12294.35     Swap memory used (MB): 1504.46     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4096m -Xms256m     Fabric Mods:          appleskin: AppleSkin 2.5.1+mc1.20         architectury: Architectury 9.2.14         bettervillage: Better village 3.3.1         citresewn: CIT Resewn 1.2.2+1.20.1             citresewn-defaults: CIT Resewn: Defaults 1.2.2+1.20.1         cloth-config: Cloth Config v11 11.1.136             cloth-basic-math: cloth-basic-math 0.6.1         continuity: Continuity 3.0.0+1.20.1         create: Create 0.5.1-j-build.1631+mc1.20.1             com_google_code_findbugs_jsr305: jsr305 3.0.2             flywheel: Flywheel 0.6.11-4             forgeconfigapiport: Forge Config API Port 8.0.0             milk: Milk Lib 1.2.60                 dripstone_fluid_lib: Dripstone Fluid Lib 3.0.2             porting_lib_accessors: Porting Lib Accessors 2.3.8+1.20.1             porting_lib_base: Porting Lib Base 2.3.8+1.20.1                 porting_lib_attributes: Porting Lib Attributes 2.3.8+1.20.1                 porting_lib_common: Porting Lib Common 2.3.8+1.20.1                 porting_lib_gui_utils: Porting Lib Gui Utils 2.3.8+1.20.1                 porting_lib_utility: Porting Lib Utility 2.3.8+1.20.1             porting_lib_brewing: Porting Lib Brewing 2.3.8+1.20.1             porting_lib_client_events: Porting Lib Client Events 2.3.8+1.20.1                 porting_lib_core: Porting Lib Core 2.3.8+1.20.1             porting_lib_entity: Porting Lib Entity 2.3.8+1.20.1                 porting_lib_mixin_extensions: Porting Lib Mixin Extensions 2.3.8+1.20.1             porting_lib_extensions: Porting Lib Extensions 2.3.8+1.20.1             porting_lib_models: Porting Lib Models 2.3.8+1.20.1                 porting_lib_fluids: Porting Lib Fluids 2.3.8+1.20.1                 porting_lib_model_loader: Porting Lib Model Loader 2.3.8+1.20.1             porting_lib_networking: Porting Lib Networking 2.3.8+1.20.1             porting_lib_obj_loader: Porting Lib Obj Loader 2.3.8+1.20.1             porting_lib_tags: Porting Lib Tags 3.0             porting_lib_tool_actions: Porting Lib Tool Actions 2.3.8+1.20.1             porting_lib_transfer: Porting Lib Transfer 2.3.8+1.20.1             reach-entity-attributes: Reach Entity Attributes 2.4.0             registrate-fabric: Registrate for Fabric 1.3.79-MC1.20.1                 porting_lib_data: Porting Lib Data 2.1.1090+1.20                     porting_lib_gametest: Porting Lib GameTest 2.1.1090+1.20                 porting_lib_model_generators: Porting Lib Model Generators 2.1.1090+1.20                     porting_lib_model_materials: Porting Lib Model Materials 2.1.1090+1.20         createdeco: Create Deco 2.0.2-1.20.1-fabric         cupboard: cupboard 1.20.1-2.7         dashloader: DashLoader 5.0.0-beta.2+1.20.0             com_github_luben_zstd-jni: zstd-jni 1.5.2-2             dev_notalpha_taski: Taski 2.1.0             dev_quantumfusion_hyphen: Hyphen 0.4.0-rc.3         ecologics: Ecologics 2.2.2         entityculling: EntityCulling 1.8.1             transition: TRansition 1.0.3             trender: TRender 1.0.5         fabric-api: Fabric API 0.92.6+1.20.1             fabric-api-base: Fabric API Base 0.4.32+1802ada577             fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.37+1802ada577             fabric-biome-api-v1: Fabric Biome API (v1) 13.0.14+1802ada577             fabric-block-api-v1: Fabric Block API (v1) 1.0.12+1802ada577             fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.3+924f046a77             fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.42+1802ada577             fabric-client-tags-api-v1: Fabric Client Tags 1.1.3+1802ada577             fabric-command-api-v1: Fabric Command API (v1) 1.2.35+f71b366f77             fabric-command-api-v2: Fabric Command API (v2) 2.2.14+1802ada577             fabric-commands-v0: Fabric Commands (v0) 0.2.52+df3654b377             fabric-containers-v0: Fabric Containers (v0) 0.1.67+df3654b377             fabric-content-registries-v0: Fabric Content Registries (v0) 4.0.13+1802ada577             fabric-convention-tags-v1: Fabric Convention Tags 1.5.6+1802ada577             fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.20+1802ada577             fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.0.2+de0fd6d177             fabric-data-generation-api-v1: Fabric Data Generation API (v1) 12.3.7+1802ada577             fabric-dimensions-v1: Fabric Dimensions API (v1) 2.1.55+1802ada577             fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.1+1c78457f77             fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.6.5+13a40c6677             fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.64+df3654b377             fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.41+1802ada577             fabric-item-api-v1: Fabric Item API (v1) 2.1.29+1802ada577             fabric-item-group-api-v1: Fabric Item Group API (v1) 4.0.14+1802ada577             fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.38+1802ada577             fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.36+df3654b377             fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.2.23+1802ada577             fabric-loot-api-v2: Fabric Loot API (v2) 1.2.3+1802ada577             fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.1.47+9e7660c677             fabric-message-api-v1: Fabric Message API (v1) 5.1.10+1802ada577             fabric-mining-level-api-v1: Fabric Mining Level API (v1) 2.1.52+1802ada577             fabric-model-loading-api-v1: Fabric Model Loading API (v1) 1.0.4+1802ada577             fabric-models-v0: Fabric Models (v0) 0.4.3+9386d8a777             fabric-networking-api-v1: Fabric Networking API (v1) 1.3.14+a158aa0477             fabric-networking-v0: Fabric Networking (v0) 0.3.54+df3654b377             fabric-object-builder-api-v1: Fabric Object Builder API (v1) 11.1.5+e35120df77             fabric-particles-v1: Fabric Particles (v1) 1.1.3+1802ada577             fabric-recipe-api-v1: Fabric Recipe API (v1) 1.0.24+1802ada577             fabric-registry-sync-v0: Fabric Registry Sync (v0) 2.3.6+1802ada577             fabric-renderer-api-v1: Fabric Renderer API (v1) 3.2.2+1802ada577             fabric-renderer-indigo: Fabric Renderer - Indigo 1.5.3+85287f9f77             fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.47+df3654b377             fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.39+92a0d36777             fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.0.29+1802ada577             fabric-rendering-v0: Fabric Rendering (v0) 1.1.50+df3654b377             fabric-rendering-v1: Fabric Rendering (v1) 3.0.9+1802ada577             fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 2.3.9+1802ada577             fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.11.12+fb82e9d777             fabric-screen-api-v1: Fabric Screen API (v1) 2.0.9+1802ada577             fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.33+1802ada577             fabric-sound-api-v1: Fabric Sound API (v1) 1.0.14+1802ada577             fabric-transfer-api-v1: Fabric Transfer API (v1) 3.3.6+8dd72ea377             fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 4.3.2+1802ada577         fabricloader: Fabric Loader 0.16.14             mixinextras: MixinExtras 0.4.1         farmersdelight: Farmer's Delight 1.20.1-2.4.0+refabricated             mm: Manningham Mills 2.3             porting_lib_config: Porting Lib Config 2.3.8+1.20.1             porting_lib_lazy_registration: Porting Lib Lazy Register 2.3.8+1.20.1             porting_lib_loot: Porting Lib Loot 2.3.8+1.20.1             porting_lib_recipe_book_categories: Porting Lib Recipe Book Categories 2.3.8+1.20.1         farsight: Farsight Mod 1.20.1-4.3             org_jctools_jctools-core: jctools-core 4.0.1         handcrafted: Handcrafted 3.0.6         immediatelyfast: ImmediatelyFast 1.5.1+1.20.4             net_lenni0451_reflect: Reflect 1.3.4         indium: Indium 1.0.36+mc1.20.1         iris: Iris 1.7.6+mc1.20.1             io_github_douira_glsl-transformer: glsl-transformer 2.0.1             org_anarres_jcpp: jcpp 1.4.14             org_antlr_antlr4-runtime: antlr4-runtime 4.13.1         java: OpenJDK 64-Bit Server VM 17         lambdynlights: LambDynamicLights 4.1.3+1.20.1             lambdynlights_api: LambDynamicLights (API) 4.1.3+1.20.1                 yumi-commons-collections: Yumi Commons: Collections 1.0.0-alpha.12                 yumi-commons-core: Yumi Commons: Core 1.0.0-alpha.12                 yumi-commons-event: Yumi Commons: Event 1.0.0-alpha.12             pride: Pride Lib 1.2.0+1.19.4             spruceui: SpruceUI 6.2.1+1.20         libraryferret: Library ferret 4.0.0         litematica: Litematica 0.15.4         lithium: Lithium 0.11.3         malilib: MaLiLib 0.16.3         minecraft: Minecraft 1.20.1         modmenu: Mod Menu 7.2.2         moonlight: Moonlight 1.20-2.14.13         no_fog: No Fog 1.3.6+1.16.5-1.21         railways: Create: Steam 'n' Rails 1.6.9+fabric-mc1.20.1         regions_unexplored: Regions Unexplored 0.5.6+1.20.1         resourcefullib: Resourceful Lib 2.1.29             com_teamresourceful_bytecodecs: bytecodecs 1.0.2             com_teamresourceful_yabn: yabn 1.0.3         sodium: Sodium 0.5.13+mc1.20.1         sound_physics_remastered: Sound Physics Remastered 1.20.1-1.4.12         starlight: Starlight 1.1.2+fabric.dbc156f         supplementaries: Supplementaries 1.20-3.1.36             mixinsquared: MixinSquared 0.1.1         terrablender: TerraBlender 3.0.1.10             com_electronwill_night-config_core: core 3.6.7             com_electronwill_night-config_toml: toml 3.6.7         twigs: Twigs 3.1.0         voicechat: Simple Voice Chat 1.20.1-2.5.34     Loaded Shaderpack: (off)     Flywheel Backend: Uninitialized     Launched Version: fabric-loader-0.16.14-1.20.1     Backend library: LWJGL version 3.3.1 SNAPSHOT     Backend API: NVIDIA GeForce RTX 4050 Laptop GPU/PCIe/SSE2 GL version 3.2.0 NVIDIA 566.14, NVIDIA Corporation     Window size: <not initialized>     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'fabric'     Type: Client (map_client.txt)     CPU: 12x 13th Gen Intel(R) Core(TM) i5-13420H
    • mclo only shows 25000 lines - add the rest with another link
    • i sent you my name is feridsmash  
  • Topics

×
×
  • Create New...

Important Information

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