Jump to content

Recommended Posts

Posted

Hello,

 

First of all, I need to let you know that I am new to the forums and Minecraft modding, yes I know the most of the basics from java.

But anyways, I don't know if this is the right section for this topic.

 

So.., too the problem.

Just like the title says, my Forge fails to initialize the game when I add my own mod, but Eclipse runs it without a problem/

 

My main jar file with the code:

package com.SurvivalOverhaul.common;

import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import com.SurvivalOverhaul.common.lib.ProxyCommon;
import com.SurvivalOverhaul.common.lib.References;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = References.MODID, name = References.NAME,  version = References.VERSION)
public class SurvivalOverhaul {

@SidedProxy(clientSide = References.Client, serverSide = References.Common)
public static ProxyCommon proxy;

@EventHandler
public void init(FMLInitializationEvent event) 
{

}

@EventHandler
public void load (FMLInitializationEvent event) {
	proxy.registerRenderInformation();
}

public SurvivalOverhaul() {
	//Item registry
        //GameReg
GameRegistry.addShapedRecipe(new ItemStack(Blocks.web), "XXX", "XXX", "XXX", 'X', Items.string);
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.obsidian), Items.water_bucket, Items.lava_bucket );
GameRegistry.addShapedRecipe(new ItemStack(Items.record_11), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.coal);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_13), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.gold_nugget);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_cat), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.emerald);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_blocks), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.brick);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_chirp), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.redstone);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_far), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.poisonous_potato);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_mall), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', new ItemStack(Items.dye, 1, 13));
GameRegistry.addShapedRecipe(new ItemStack(Items.record_mellohi), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.potionitem);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_stal), "XXX", "XXX", "XXX", 'X', Blocks.obsidian);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_strad), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.bone);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_ward), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.ender_pearl);
GameRegistry.addShapedRecipe(new ItemStack(Items.record_wait), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.diamond);
GameRegistry.addShapedRecipe(new ItemStack(Items.saddle), "XXX", "XSX", " I ", 'X', Items.leather, 'S', Items.string, 'I', Items.iron_ingot);
GameRegistry.addShapelessRecipe(new ItemStack(Items.clay_ball), Blocks.dirt, Items.water_bucket);
}
}

 

My crash log from main Minecraft:

---- Minecraft Crash Report ----
// Hey, that tickles! Hehehe!

Time: 24-5-14 16:31
Description: Initializing game

java.lang.NoSuchFieldError: web
at com.SurvivalOverhaul.common.SurvivalOverhaul.<init>(SurvivalOverhaul.java:38)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at cpw.mods.fml.common.ILanguageAdapter$JavaAdapter.getNewInstance(ILanguageAdapter.java:173)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:486)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:209)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:489)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:202)
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:465)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:813)
at net.minecraft.client.main.Main.main(SourceFile:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.SurvivalOverhaul.common.SurvivalOverhaul.<init>(SurvivalOverhaul.java:38)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at cpw.mods.fml.common.ILanguageAdapter$JavaAdapter.getNewInstance(ILanguageAdapter.java:173)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:486)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:209)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:489)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:202)
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:465)

-- Initialization --
Details:
Stacktrace:
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:813)
at net.minecraft.client.main.Main.main(SourceFile:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 70810056 bytes (67 MB) / 223870976 bytes (213 MB) up to 954728448 bytes (910 MB)
JVM Flags: 2 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx1G
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.01-pre FML v7.2.156.1060 Minecraft Forge 10.12.1.1060 4 mods loaded, 4 mods active
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed
FML{7.2.156.1060} [Forge Mod Loader] (forge-1.7.2-10.12.1.1060.jar) Unloaded->Constructed
Forge{10.12.1.1060} [Minecraft Forge] (forge-1.7.2-10.12.1.1060.jar) Unloaded->Constructed
SurvivalOverhaul{Alpha 0.0.2} [survival Overhaul] (Choco's Survival Overhaul.jar) Unloaded
Launched Version: 1.7.2-Forge10.12.1.1060
LWJGL: 2.9.0
OpenGL: GeForce GT 520M/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: [CodeCrafted Custom.zip]
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: ~~ERROR~~ NullPointerException: null
Anisotropic Filtering: On (16)

Posted

Keeps crashing with same error.

Hopefully I didn't forgot something.

Oh yes.. I use 1.7.2

 

package com.SurvivalOverhaul.common;

import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import com.SurvivalOverhaul.common.lib.ProxyCommon;
import com.SurvivalOverhaul.common.lib.References;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = References.MODID, name = References.NAME,  version = References.VERSION)
public class SurvivalOverhaul {

@SidedProxy(clientSide = References.Client, serverSide = References.Common)
public static ProxyCommon proxy;

@EventHandler
public void PreInit(FMLPreInitializationEvent event) {
	 GameRegistry.addShapedRecipe(new ItemStack(Blocks.web), "XXX", "XXX", "XXX", 'X', Items.string);
	 GameRegistry.addShapelessRecipe(new ItemStack(Blocks.obsidian), Items.water_bucket, Items.lava_bucket );
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_11), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.coal);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_13), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.gold_nugget);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_cat), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.emerald);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_blocks), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.brick);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_chirp), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.redstone);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_far), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.poisonous_potato);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_mall), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', new ItemStack(Items.dye, 1, 13));
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_mellohi), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.potionitem);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_stal), "XXX", "XXX", "XXX", 'X', Blocks.obsidian);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_strad), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.bone);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_ward), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.ender_pearl);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.record_wait), "XXX", "XYX", "XXX", 'X', Blocks.obsidian, 'Y', Items.diamond);
	 GameRegistry.addShapedRecipe(new ItemStack(Items.saddle), "XXX", "XSX", " I ", 'X', Items.leather, 'S', Items.string, 'I', Items.iron_ingot);
	 GameRegistry.addShapelessRecipe(new ItemStack(Items.clay_ball), Blocks.dirt, Items.water_bucket);
}

@EventHandler
public void init(FMLInitializationEvent event) 
{

}

@EventHandler
public void load (FMLInitializationEvent event) {
	proxy.registerRenderInformation();
}

}

Posted

How are you building your jar?

You're trying to run non-obfusicated code which will not work.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Rewriting code with a SampleBlock now as a test subject, hopefully it will work.

 

Here's my new code:

package com.SurvivalOverhaul.common;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = SurvivalOverhaul.MODID, name = SurvivalOverhaul.NAME,  version = SurvivalOverhaul.VERSION)
public class SurvivalOverhaul {
@SidedProxy(clientSide = "com.SurvivalOverhaul.common.ClientProxy", serverSide = "com.SurvivalOverhaul.common.CommonProxy")
public static CommonProxy proxy;

public static final String MODID = "SurvivalOverhaul"; //Main use other than registry is for tex.
public static final String VERSION = "Alpha 0.0.2"; //Version
public static final String NAME = "Choco's Survival Overhaul"; //Name

//Blocks
public static Block SampleBlock = new SampleBlockClass(3000, Material.rock).setBlockName("SampleBlock");

public SurvivalOverhaul() {
	GameRegistry.registerBlock(SampleBlock, "SampleBlock");
}
}

Posted

Don't do ANYTHING in the constructor, but in the PreInit phase. If you don't know what that means, go read some tutorials on the wiki, as you need that for sure.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

PreInit doesn't fix the crashes :S.

 

Oh by the way.., Minecraft won't texture my custom block.

 

 

====

Edit =

====

 

Minecraft error is getting less, but it has a problem with this line of code:

Block SampleBlock = new SampleBlockClass(3000, Material.rock).setBlockName("SampleBlock");

 

With the error:

Caused by: java.lang.NoSuchFieldError: rock
at com.SurvivalOverhaul.common.SurvivalOverhaul.preInit(SurvivalOverhaul.java:30)

 

In the code:

package com.SurvivalOverhaul.common;

import com.SurvivalOverhaul.common.Block.SampleBlockClass;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = SurvivalOverhaul.MODID, name = SurvivalOverhaul.NAME,  version = SurvivalOverhaul.VERSION)
public class SurvivalOverhaul {
@SidedProxy(clientSide = "com.SurvivalOverhaul.common.ClientProxy", serverSide = "com.SurvivalOverhaul.common.CommonProxy")
public static CommonProxy proxy;

public static final String MODID = "SurvivalOverhaul"; //Main use other than registry is for textures.
public static final String VERSION = "Alpha 0.0.2"; //Version
public static final String NAME = "Choco's Survival Overhaul"; //Name

@Instance
public static SurvivalOverhaul instance;

@EventHandler
public void preInit(FMLPreInitializationEvent e) {
	Block SampleBlock = new SampleBlockClass(3000, Material.rock).setBlockName("SampleBlock");
	GameRegistry.registerBlock(SampleBlock, "SampleBlock");
}

@EventHandler
public void init(FMLInitializationEvent e) {

}
}

 

Textures still won't load for the custom block.

Posted

How are you building your jar?

You're trying to run non-obfusicated code which will not work.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

How are you building your jar?

You're trying to run non-obfusicated code which will not work.

 

Really confused now, I don't know what I do wrong :P.

Also I don't know why the texture isn't loading.

Posted

Why are people like this? I've asked a question that is important o solving your issue. ANSWER IT.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Why are people like this? I've asked a question that is important o solving your issue. ANSWER IT.

 

 

Whoops didn't notice it was a question, sorry.

Here is a screenshot on how it looks in my Eclipse:

 

This is in the SampleBlockClass:

package com.SurvivalOverhaul.common.Block;

import com.SurvivalOverhaul.common.SurvivalOverhaul;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;

public class SampleBlockClass extends Block {

public SampleBlockClass(int id) {
	super(Material.rock);
	this.setCreativeTab(CreativeTabs.tabBlock);
	this.setHardness(5F);
	this.setResistance(7.0F);
	this.setBlockTextureName(SurvivalOverhaul.MODID + ":" + "SampleBlock");
}


}

----

I will use links every time by the way.

On every site, It won't accept my attachments.

Posted

The jar you are putting into the client. Outside of eclipse.

How are you making THAT!

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

The jar you are putting into the client. Outside of eclipse.

How are you making THAT!

 

Calm down man.., I thought you ment how I build it in eclipse.

 

But I simply click "Export"-> "JAR file" -> select "src/main/java" and "src/main/resources" -> "Finish"

I might go wrong there maybe?

 

MODID and any part of package path should not contain capital letters. Get rid of them and use lower-case only.

 

Personally I think that shouldn't matter.

Posted
Personally I think that shouldn't matter.

 

... but it matters. You can't simply break a Java convention.

 

Package names are written in all lower case to avoid conflict with the names of classes or interfaces.

 

(see "Naming a package")

Posted

Oh dear.., I can't rename those packages :/.

 

Reason:

 

A resource exists with a different case:

'/Minecraft/src/main/java/com/SurvivalOverhaul'

------ Renamed Packages ------------

 

Crash still occurrs, also my custom block isn't loading it's textures.

 

it is in src/main/resources/assests/survivaloverhaul/textures/blocks/sampleblock.png

 

However, the lang file is working.

this one is in:

src/main/resources/assets/survivaloverhaul/lang/en_US.lang

Posted

First: you need to build your jar by running gradlew build, it will produce the jar in build/libs. That is because you need to reobfuscate your mod, which eclipse cannot do.

For renaming your package: That is because in Windows file names don't care about casing. Rename it to something else first, then to the lowercase version.

 

How do I that exactly?

Oh do you want my previous post wich is just editted?

My custom block won't texture, but the lang is working.

Posted

"that"? I covered multiple things in my post. For the textures we need your code (main & block class).

I will post my codes again.

 

Main file:

package com.survivaloverhaul.common;

import com.survivaloverhaul.common.block.*;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = survivaloverhaul.modid, name = survivaloverhaul.name,  version = survivaloverhaul.version)
public class survivaloverhaul {
@SidedProxy(clientSide = "com.survivaloverhaul.common.ClientProxy", serverSide = "com.survivaloverhaul.common.CommonProxy")
public static CommonProxy proxy;

public static final String modid = "SurvivalOverhaul"; //Main use other than registry is for textures.
public static final String version = "Alpha 0.0.2"; //Version
public static final String name = "Choco's Survival Overhaul"; //Name

@Instance
public static survivaloverhaul instance;

@EventHandler
public void preInit(FMLPreInitializationEvent e) {
	Block sampleblock = new SampleBlock(3000, Material.rock);
	GameRegistry.registerBlock(sampleblock, "SampleBlock");
}

@EventHandler
public void init(FMLInitializationEvent e) {

}

@EventHandler
public void postInit(FMLPostInitializationEvent e) {

}
}

 

Block file

package com.survivaloverhaul.common.block;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;

import com.survivaloverhaul.common.survivaloverhaul;

public class SampleBlock extends Block {

public SampleBlock(int i, Material rock) {
	super(rock);
	this.setBlockName("SampleBlock");
	this.setCreativeTab(CreativeTabs.tabBlock);
	this.setHardness(5f);
	this.setResistance(7.0f);
	this.setBlockTextureName("survivaloverhaul.modid" + ":" + "SampleBlock");
}

}

 

 

By the way, for "How do I that exactly?" I ment how do I reobfuscate via gradlew.bat?

What I have done before I began with this I did open cmd.

typed in: 

 

cd <path to gradlew.bat>

 

then I did enter:

 

gradlew.bat setupDecompWorkspace --refresh-dependencies

 

after that I entered:

 

gradlew.bat eclipse

Posted

public static final String modid = "SurvivalOverhaul";
ModID has to be all lowercase.
this.setBlockTextureName("survivaloverhaul.modid" + ":" + "SampleBlock");
This will (literally) try to load the texture from
src/main/resources/assets/survivaloverhaul.modid/textures/blocks/SampleBlock.png

. See the problem?

 

First of all, I didn't notice that modid, changed it now.

It is now

public static final String modid = "survivaloverhaul"

 

You trying to say that I don't need that "this.setBlockTextureName"?

 

----

 

I did run gradlew.bat in a different way.

 

How I did it like I said in my previous post a little bit too late:

open command prompt -> cd <path to gradlew.bat> -> setupDecompWorkspace --refresh-dependencies

 

after that was done I did enter:

gradlew.bat eclipse

Posted

You trying to say that I don't need that "this.setBlockTextureName"?
No, but you need to supply it with something like "modID:blockName". The String "survivaloverhaul.modid" is not your ModID. The String "survivaloverhaul" is, and it's stored in the field
survivaloverhaul.modid

(horrible classname by the way...).

I did run gradlew.bat in a different way.

 

How I did it like I said in my previous post a little bit too late:

open command prompt -> cd <path to gradlew.bat> -> setupDecompWorkspace --refresh-dependencies

 

after that was done I did enter:

gradlew.bat eclipse

You do the same, but run gradlew build.

 

I know the classname is horrible :D, I will change it.

Oh and it is my first time doing custom blocks and working in 1.7.2, so that is why I conflict with it.

 

Will enter the path to gradlew.bat again and then I will type in gradlew.bat build

 

 

 

--- Update ----

 

Texture is getting loaded.

 

Client still crashes with error:

 

Caused by: java.lang.NoSuchFieldError: rock

at com.survivaloverhaul.common.survivaloverhaul.preInit(survivaloverhaul.java:31)

Posted

So you ran gradlew build and then grabbed the jar from build/libs? Did you change your build.gradle?

 

I didn't change build.gradle.

 

I grabbed the jar from build/libs.

 

Sorry for not pointing this out.

Posted

Nope it crashes with error:

Caused by: java.lang.NoSuchFieldError: rock
at com.survivaloverhaul.common.block.SampleBlock.<init>(SampleBlock.java:12)
at com.survivaloverhaul.common.survivaloverhaul.preInit(survivaloverhaul.java:31)

 

line 12 at SampleBlock.java:

	super(Material.rock);

 

line 31 in survivaloverhaul:

Block SampleBlock = (new SampleBlock(3000, 0)).setBlockName("SampleBlock");

 

yes I have changed those.., since I noticed some crash errors in eclipse.. but eclipse don't give crash errors anymore with these codes.

 

 

----

Rechecked the logs when I used the "gradlew.bat build" in command prompt.

There is 1 error given, wich is:

:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
1 warining

Posted

Can't upload it as attachment.

due error " Cannot access attachments upload path! "

 

So I made a copy of the original one and opened it with Notepad ++.

Here is the info you wanted:

 

buildscript {
    repositories {
        mavenCentral()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
        maven {
            name = "sonatype"
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
    }
}

apply plugin: 'forge'

version = "1.0"
group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "modid"

minecraft {
    version = "1.7.2-10.12.1.1060"
    assetDir = "eclipse/assets"
}

processResources
{
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'
                
        // replace version and mcversion
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }
        
    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • It is 1.12.2 - I have no idea if there is a 1.12 pack
    • Okay, but does the modpack works with 1.12 or just with 1.12.2, because I need the Forge client specifically for Minecraft 1.12, not 1.12.2
    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
  • Topics

×
×
  • Create New...

Important Information

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