Jump to content

[1.8] BlockFluidFinite subclass problem with custom Blockstate Properties


Jershy

Recommended Posts

I'm working on a water block that acts sort of like flood water so I decided to use BlockFluidFinite for the parent class because it has just what I want. The problem is that I want to add custom properties such as "FLOWSPEED" and "FLOWDIRECTION" along with "LEVEL" in the Parent class. However, the "setDefaultBlockState" method is final. the only thing that I thought I could do at this point was to copy all the code and paste it into my class. That just seemed much to silly and fraut with problems. Any suggestions?

 

Class;

package src.IVWeather.block;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;

import com.google.common.collect.Maps;
import java.util.Map;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import src.IVWeather.*;
import src.IVWeather.block.properties.PropertyFloodWater;
import src.IVWeather.fluid.IVBlockFluidFinite;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
import net.minecraft.block.BlockLiquid;
import net.minecraft.block.BlockStaticLiquid;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.EnumFaceDirection;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.EnumFacing.Plane;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fluids.BlockFluidFinite;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.block.properties.PropertyEnum;

public class BlockRushingWater extends BlockFluidFinite implements IFluidBlock{


public int tick_counter;
public static final String name = "IVWFloodWaters";
public static final PropertyEnum FLOWDIRECTION = PropertyEnum.create("flow_dir", EnumFacing.class, EnumFacing.HORIZONTALS);
public static final PropertyInteger FLOWSPEED = PropertyInteger.create("flow_speed", 0, 10);


public BlockRushingWater(Fluid fluid) {
	super(fluid, Material.water);
	this.tickRate = 5;
	GameRegistry.registerBlock(this, name);
	setUnlocalizedName(name);
	setCreativeTab(CreativeTabs.tabBlock);
	this.setDefaultState(this.blockState.getBaseState().withProperty(LEVEL, Integer.valueOf(0)).withProperty(FLOWDIRECTION, EnumFacing.NORTH).withProperty(FLOWSPEED, Integer.valueOf(0)));
}

@Override
protected BlockState createBlockState() {
	return new BlockState(this, new IProperty[]{LEVEL, FLOWSPEED, FLOWDIRECTION});// 121
}

public boolean canDrain(World world, BlockPos pos) {
    return true;
}

 public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) {
	 boolean changed = false;// 60
      int quantaRemaining = ((Integer)state.getValue(LEVEL)).intValue() + 1;// 61
      int prevRemaining = quantaRemaining;// 64
      EnumFacing flowDirection = ((EnumFacing) state.getValue(FLOWDIRECTION));
      int flowSpeed = ((Integer) state.getValue(FLOWSPEED)).intValue();
      System.out.println("Quanta; "+quantaRemaining);
      System.out.println("flow_Speed; "+flowSpeed);
      System.out.println(flowDirection);
    
      quantaRemaining = this.tryToFlowVerticallyInto(world, pos, quantaRemaining, flowDirection, flowSpeed);
      
      if(flowSpeed < 1) {
    	  flowDirection = null;
      }
      
      if(quantaRemaining >= 1) {// 67
         if(quantaRemaining != prevRemaining) {// 71
            changed = true;// 73
            if(quantaRemaining == 1) {// 74
               world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(quantaRemaining - 1)), 2);// 76
               return;// 77
            }
         } else if(quantaRemaining == 1) {// 80
            return;// 82
         }
         
         int lowerthan = quantaRemaining - 1;// 86
         int total = quantaRemaining;// 87
         int count = 1;// 88
         Iterator each = Plane.HORIZONTAL.iterator();// 90
         List<BlockPos> open = new ArrayList();
         List<BlockPos> water = new ArrayList();
         int newQua = quantaRemaining > 1? (quantaRemaining / 2) - (quantaRemaining % 2): quantaRemaining;
         float size = quantaRemaining / this.quantaPerBlockFloat;
    
         if(flowSpeed > 0) {
         BlockPos flowOff = pos.offset(flowDirection);
         IBlockState block = world.getBlockState(flowOff);
        	 if(world.getBlockState(flowOff).getBlock() == Blocks.air) {
        		quantaRemaining -= newQua;
        	 	world.setBlockState(pos, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(quantaRemaining)), 2);
        	 	world.setBlockState(flowOff, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newQua)).withProperty(FLOWDIRECTION, flowDirection), 2);
        	 	flowSpeed--;
        	 }else if(block.getBlock() == this){
        		 int addTo = (Integer) block.getValue(LEVEL);
        		 int all = newQua+ addTo;
        		 if(all < this.quantaPerBlock) {
        		 world.setBlockState(pos, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(quantaRemaining) - 1), 2);
	        	 world.setBlockState(flowOff, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newQua + addTo)).withProperty(FLOWDIRECTION, flowDirection), 2);
        		 }else{
        		 int additional = all - this.quantaPerBlock;	 
        		 world.setBlockState(pos, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(quantaRemaining) - 1), 2);
		         world.setBlockState(flowOff, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(this.quantaPerBlock)).withProperty(FLOWDIRECTION, flowDirection), 2);
	        	 world.setBlockState(flowOff.offset(flowDirection), this.getDefaultState().withProperty(LEVEL, Integer.valueOf(additional)).withProperty(FLOWDIRECTION, flowDirection), 2);	 	 
        		 }
        	 }else{
        		float totalHard = this.getBlockHardness(world, flowOff) + block.getBlock().getBlockHardness(world, flowOff.offset(flowDirection));
        		if(size * (flowSpeed / 10) >= totalHard) {//TODO these numbers for how much speed it takes to move a block were kinda arbitrary. make 'em better
        			world.setBlockToAir(flowOff);
        			world.setBlockToAir(flowOff.offset(flowDirection));
        		}
        	 }  

         }
         
         while(each.hasNext()) {
            EnumFacing rem = (EnumFacing)each.next();
            BlockPos i$ = pos.offset(rem);// 92
            IBlockState state2 = world.getBlockState(i$);
            
            if(this.displaceIfPossible(world, i$)) {// 93
               world.setBlockToAir(i$);// 94
            }
            int side = this.getQuantaValueBelow(world, i$, lowerthan);// 96
            if(side >= 0) {// 97
               ++count;// 99
               total += side;// 100
            }
         }
         
         if(count == 1) {// 104
            if(changed) {// 106
               world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(quantaRemaining - 1)), 2);// 108
            }

         } else {
            int div = total / count;// 113
            int rem = total % count;// 114
            Iterator horPlane = Plane.HORIZONTAL.iterator();// 116

            while(true) {
               BlockPos off;
               EnumFacing dir;
               int quanta;
               int newFlowSpeed;
               do {
                  if(!horPlane.hasNext()) {
                     if(rem > 0) {// 145
                        ++div;// 147
                     }

                     world.setBlockState(pos, state.withProperty(LEVEL, Integer.valueOf(div - 1)), 2);// 149
                     return;// 150
                  }

                  dir = (EnumFacing)horPlane.next();
                  off = pos.offset(dir);// 118
                  quanta = this.getQuantaValueBelow(world, off, lowerthan);// 119
                  PropertyFloodWater floodwater = this.getProperty(world, off);
               } while(quanta < 0);// 120

               int newquanta = div;// 122
               if(rem == count || rem > 1 && rand.nextInt(count - rem) != 0) {// 123
                  newquanta = div + 1;// 125
                  --rem;// 126
               }

               if(newquanta != quanta) {// 129
                  if(newquanta == 0) {// 131
                     world.setBlockToAir(off);// 133
                  } else if(quanta >= 0){
                	  if(flowSpeed < 10) {
                		  if(quanta != 0) {
                			  world.setBlockState(off, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newquanta - 1)).withProperty(FLOWSPEED, flowSpeed + (int) quanta != 0 ? newquanta-quanta / quanta: 1).withProperty(FLOWDIRECTION, dir), 2);// 137
                		  }else{
                			  world.setBlockState(off, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newquanta - 1)).withProperty(FLOWSPEED, flowSpeed + 1).withProperty(FLOWDIRECTION, dir), 2);// 137
                		  }
                	  }else{
                		  world.setBlockState(off, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newquanta - 1)));
                	  }
                  } else{
                	  world.setBlockState(off, this.getDefaultState().withProperty(LEVEL, Integer.valueOf(newquanta - 1)));
                  }
//TODO i dont like how all this looks in regards to efficiency CLEAN IT UP!
                  world.scheduleUpdate(off, this, this.tickRate);// 139
               }

               --count;// 141
            }
         }
      }
 }

 private PropertyFloodWater getProperty(World world, BlockPos off) {
	IBlockState state = world.getBlockState(off);
	if(state.getBlock() == this) {
	return new PropertyFloodWater((Integer) state.getValue(FLOWSPEED), (EnumFacing) state.getValue(FLOWDIRECTION));
	}else {
	return null;
	}
}

public int tryToFlowVerticallyInto(World world, BlockPos pos, int amtToInput, EnumFacing flowDirection2, int flowspeed) {
      IBlockState myState = world.getBlockState(pos);// 154
      BlockPos other = pos.add(0, this.densityDir, 0);// 155
      if(other.getY() >= 0 && other.getY() < world.getHeight()) {// 156
         int amt = this.getQuantaValueBelow(world, other, this.quantaPerBlock);// 162
         if(flowDirection2 != EnumFacing.DOWN && flowspeed < 10) {
        	 world.setBlockState(pos, this.getDefaultState().withProperty(FLOWSPEED, Integer.valueOf(flowspeed + 1)), 3);//TODO you really need to figure out what these flags do
         }
         if(amt >= 0) {// 163
            amt += amtToInput;// 165
            if(amt > this.quantaPerBlock) {// 166
               world.setBlockState(other, myState.withProperty(LEVEL, Integer.valueOf(this.quantaPerBlock - 1)), 3);// 168
               world.scheduleUpdate(other, this, this.tickRate);// 169
               return amt - this.quantaPerBlock;// 170
            } else if(amt > 0) {// 172
               world.setBlockState(other, myState.withProperty(LEVEL, Integer.valueOf(amt - 1)), 3);// 174
               world.scheduleUpdate(other, this, this.tickRate);// 175
               world.setBlockToAir(pos);// 176
               return 0;// 177
            } else {
               return amtToInput;// 179
            }
         } else {
            int density_other = getDensity(world, other);// 183
            if(density_other == Integer.MAX_VALUE) {// 184
               if(this.displaceIfPossible(world, other)) {// 186
                  world.setBlockState(other, myState.withProperty(LEVEL, Integer.valueOf(amtToInput - 1)), 3);// 188
                  world.scheduleUpdate(other, this, this.tickRate);// 189
                  world.setBlockToAir(pos);// 190
                  return 0;// 191
               } else {
                  return amtToInput;// 195
               }
            } else {
               IBlockState state;
               if(this.densityDir < 0) {// 199
                  if(density_other < this.density) {// 201
                     state = world.getBlockState(other);// 203
                     world.setBlockState(other, myState.withProperty(LEVEL, Integer.valueOf(amtToInput - 1)), 3);// 204
                     world.setBlockState(pos, state, 3);// 205
                     world.scheduleUpdate(other, this, this.tickRate);// 206
                     world.scheduleUpdate(pos, state.getBlock(), state.getBlock().tickRate(world));// 207
                     return 0;// 208
                  }
               } else if(density_other > this.density) {// 213
                  state = world.getBlockState(other);// 215
                  world.setBlockState(other, myState.withProperty(LEVEL, Integer.valueOf(amtToInput - 1)), 3);// 216
                  world.setBlockState(other, state, 3);// 217
                  world.scheduleUpdate(other, this, this.tickRate);// 218
                  world.scheduleUpdate(other, state.getBlock(), state.getBlock().tickRate(world));// 219
                  return 0;// 220
               }

               return amtToInput;// 223
            }
         }
      } else {
         world.setBlockToAir(pos);// 158
         return 0;// 159
      }
}

public String getName() {
	return name;
}

}

Link to comment
Share on other sites

You don't need to override the setDefaultState method, you just need to invoke it (which you're already doing).

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

state.withProperty(...)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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
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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • TO update, no dice, sadly. I switched replace to true, but it's not showing up. I found something odd though. I installed JER to verify the loot tables for the dragon eggs, but it's not working on those items. I made sure that the server-config to allow loot tables was enabled for the single player world I'm testing in as well. It almost seems like the mod itself is not spawning eggs at all for some reason, but I figure a loot modifier should still make that happen regardless?
    • *First of all, thank you, because of what you pointed out, I managed to make even more progress and now I know where to start fixing this problem (and any problems that I will have later on) *Second,actually I'm making a new block and not trying to replace a minecraft block because I know I don't have the knowledge for that. *Third, I didn't know about this forum rule, I thought I could get some help since I love to program but I've never taken a class on it and everything I know I'm learning the hard way. But I want to share a success here, I managed to make a first progress. (it still only stays in that position and if I aim at the ground, in addition to just opening the grindstone menu for half a second, but I already know where to start to solve this)
    • Broken configuration file. If you don't have a backup of the file and don't know how to fix it, delete the file and it will be recreated with default values.
    • Not sure how to fix this one; Time: 2023-03-22 17:31:08 Description: Initializing game java.lang.ExceptionInInitializerError: null     at net.minecraftforge.resource.ResourceCacheManager.shouldUseCache(ResourceCacheManager.java:111) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.PathPackResources.m_5698_(PathPackResources.java:154) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.DelegatingPackResources.buildNamespaceMap(DelegatingPackResources.java:64) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.DelegatingPackResources.<init>(DelegatingPackResources.java:40) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.client.loading.ClientModLoader.lambda$clientPackFinder$12(ClientModLoader.java:209) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.server.packs.repository.Pack.m_10430_(Pack.java:35) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraftforge.client.loading.ClientModLoader.clientPackFinder(ClientModLoader.java:208) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$buildPackFinder$11(ClientModLoader.java:186) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.server.packs.repository.PackRepository.m_10526_(PackRepository.java:47) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraft.server.packs.repository.PackRepository.m_10506_(PackRepository.java:39) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:469) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.m_239872_(Main.java:176) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:51) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:27) ~[fmlloader-1.19.2-43.2.0.jar%2395!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-10.0.8.jar%2382!/:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) [bootstraplauncher-1.1.2.jar:?] {} Caused by: java.lang.RuntimeException: Failed to load Force Resource Cache Configuration from C:\Users\Nathan\AppData\Roaming\.minecraft\config\forge-resource-caching.toml     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.createConfiguration(ResourceCacheManager.java:531) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.<init>(ResourceCacheManager.java:510) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.<clinit>(ResourceCacheManager.java:497) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     ... 26 more Caused by: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available     at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readCharsUntil(AbstractInput.java:123) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:166) ~[toml-3.6.4.jar%2385!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) ~[toml-3.6.4.jar%2385!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) ~[toml-3.6.4.jar%2385!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) ~[toml-3.6.4.jar%2385!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.4.jar%2385!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.file.AutoreloadFileConfig.load(AutoreloadFileConfig.java:41) ~[core-3.6.4.jar%2384!/:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.4.jar%2384!/:?] {}     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.createConfiguration(ResourceCacheManager.java:527) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.<init>(ResourceCacheManager.java:510) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.ResourceCacheManager$ResourceManagerBootCacheConfigurationHandler.<clinit>(ResourceCacheManager.java:497) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     ... 26 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at net.minecraftforge.resource.ResourceCacheManager.shouldUseCache(ResourceCacheManager.java:111) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.PathPackResources.m_5698_(PathPackResources.java:154) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.DelegatingPackResources.buildNamespaceMap(DelegatingPackResources.java:64) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.resource.DelegatingPackResources.<init>(DelegatingPackResources.java:40) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading}     at net.minecraftforge.client.loading.ClientModLoader.lambda$clientPackFinder$12(ClientModLoader.java:209) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.server.packs.repository.Pack.m_10430_(Pack.java:35) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraftforge.client.loading.ClientModLoader.clientPackFinder(ClientModLoader.java:208) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$buildPackFinder$11(ClientModLoader.java:186) ~[forge-1.19.2-43.2.0-universal.jar%23166!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.server.packs.repository.PackRepository.m_10526_(PackRepository.java:47) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraft.server.packs.repository.PackRepository.m_10506_(PackRepository.java:39) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:classloading}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:469) ~[client-1.19.2-20220805.130853-srg.jar%23161!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}  
    • At the top of this forum is the EAQ (excessively asked questions). Read the part where it asks "How do I install Forge?". There is no windows specific installer. The installer uses java. https://en.wikipedia.org/wiki/Write_once,_run_anywhere
  • Topics

×
×
  • Create New...

Important Information

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