-
Posts
785 -
Joined
-
Last visited
Posts posted by ItsAMysteriousYT
-
-
This is what im doing in the build.gradle file:
/* // For those who want the bleeding edge buildscript { repositories { jcenter() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' */ // for people who want stable plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } version = "1.0" group= "de.itsamysterious.mods.reallifemod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "Real Life Mod Alpha" minecraft { version = "1.8-11.14.4.1563" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not allways work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20141130" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, // except that these dependencies get remapped to your current MCP mappings //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } 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' } } jar { from zipTree("libs/RenderPlayerAPI-1.8-1.5.jar") }
and this is the error i get:
Total time: 25.358 secs
D:\Coding\Forge-1.8-11.14.4.1563 Workspace>gradlew build
#################################################
ForgeGradle 2.0-SNAPSHOT
https://github.com/MinecraftForge/ForgeGradle
#################################################
Powered by MCP 9.10
by: Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
#################################################
:deobfCompileDummyTask
:deobfProvidedDummyTask
:compileApiJava UP-TO-DATE
:processApiResources UP-TO-DATE
:apiClasses UP-TO-DATE
:sourceMainJava UP-TO-DATE
:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
:processResources UP-TO-DATE
:classes
:jar UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:extractMcpData SKIPPED
:extractMcpMappings SKIPPED
:getVersionJson
:extractUserdev UP-TO-DATE
:genSrgs SKIPPED
:reobfJar FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':reobfJar'.
> MALFORMED
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 20.854 secs
D:\Coding\Forge-1.8-11.14.4.1563 Workspace>
That is the stacktrace output with --stacktrace:
D:\Coding\Forge-1.8-11.14.4.1563 Workspace>gradlew build --stacktrace ################################################# ForgeGradle 2.0-SNAPSHOT https://github.com/MinecraftForge/ForgeGradle ################################################# Powered by MCP 9.10 http://modcoderpack.com by: Searge, ProfMobius, Fesh0r, R4wk, ZeuX, IngisKahn, bspkrs ################################################# :deobfCompileDummyTask :deobfProvidedDummyTask :compileApiJava UP-TO-DATE :processApiResources UP-TO-DATE :apiClasses UP-TO-DATE :sourceMainJava :compileJava warning: [options] bootstrap class path not set in conjunction with -source 1.6 Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 1 warning :processResources UP-TO-DATE :classes :jar :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :test UP-TO-DATE :extractMcpData SKIPPED :extractMcpMappings SKIPPED :getVersionJson :extractUserdev UP-TO-DATE :genSrgs SKIPPED :reobfJar FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':reobfJar'. > MALFORMED * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':reobfJar'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:155) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:152) at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:100) at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:94) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:94) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77) at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) Caused by: java.lang.IllegalArgumentException: MALFORMED at net.minecraftforge.gradle.user.TaskSingleReobf.applyExtraTransformers(TaskSingleReobf.java:243) at net.minecraftforge.gradle.user.TaskSingleReobf.doTask(TaskSingleReobf.java:184) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
-
Hey there i have a prolem - exporting my mod fails (i think cuz) i am using elements from the renderPlayerAPI in it. I think that i need to add the library as a dependency in build.gradle but i don't know what to write there. Anybody can help?
-
Don't do the initialization of the item in the item class - create a new class that will hold all your items and set them in the class' constructor.
Like this:
public class YourModItemClass{ public static Item yourItem,anotherItem,andAnotherItem; public YourModItemClass(){ yourItem=new YourItemClass(); } } [/spoiler]
Then you do not have to put that whole init®istering stuff in each of your custom ItemClasses which makes your code much more comfortable
-
There you go - The CustomPlayerRenderer class:
package itsamysterious.mods.reallifemod.core.rendering.Entities;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.Raster;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import org.lwjgl.opengl.GL11;
import api.player.model.ModelPlayerAPI;
import api.player.render.RenderPlayerAPI;
import api.player.render.RenderPlayerBase;
import itsamysterious.mods.reallifemod.RealLifeMod;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.layers.LayerHeldItem;
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraft.client.resources.DefaultPlayerSkin;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
public class CustomPlayerRenderer extends RenderPlayerBase {
public static AdvancedPlayerModel model = new AdvancedPlayerModel();
public boolean createdTextureThisSession = false;
private List<LayerRenderer> layerRenderer = new ArrayList<LayerRenderer>();
public CustomPlayerRenderer(RenderPlayerAPI renderPlayerAPI) {
super(renderPlayerAPI);
this.createdTextureThisSession = false;
layerRenderer.add(new RenderClothes(this));
}
@Override
public void renderModel(AbstractClientPlayer entity, float f, float f1, float f2, float f3, float f4, float f5) {
GL11.glPushMatrix();
GL11.glRotated(-entity.rotationYaw, 0, 1, 0);
GL11.glScaled(1, -1, 1);
if (getEntityTexture((AbstractClientPlayer) entity) != null) {
Minecraft.getMinecraft().renderEngine.bindTexture((getEntityTexture((AbstractClientPlayer) entity)));
}
model.render(entity, (float) f, (float) f1, (float) f2, f3, f4, -0.065f);
this.renderLayers(entity, (float) f, (float) f1, (float) f2, f3, f4, f5, 0.0625F);
GL11.glPopMatrix();
}
@Override
public void renderLayers(AbstractClientPlayer entity, float f1, float f2, float f3, float f4, float f5, float f6,
float f7) {
for (LayerRenderer renderer : layerRenderer) {
renderer.doRenderLayer((EntityLivingBase) entity, f1, f2, f3, f4, f5, f6, f7);
}
}
public ResourceLocation getTemporaryTexturefile(AbstractClientPlayer player, ResourceLocation playerskin) {
File texturefile = new File(Minecraft.getMinecraft().mcDataDir,
"RLM/assets/reallifemod/textures/playerskin.png");
if (!texturefile.exists()) {
try {
BufferedImage texture = ImageIO
.read(Minecraft.getMinecraft().getResourceManager().getResource(playerskin).getInputStream());
boolean hasAlphaChannel = texture.getAlphaRaster() != null;
boolean hasAlexSkin = player.getSkinType() != DefaultPlayerSkin.getDefaultSkinLegacy().toString();
int pixellength = hasAlphaChannel ? 4 : 3;
int width = texture.getWidth();
int height = texture.getHeight();
if (texture != null) {
byte[] pixels = ((DataBufferByte) texture.getRaster().getDataBuffer()).getData();
// copying the armtexture (sides)
ArrayList<Byte> armtexture_bottom = new ArrayList<Byte>();
ArrayList<Byte> armtexture_side = new ArrayList<Byte>();
// Copying the single textureparts
/* 1: Top&Bottom */
for (int pixelY = 0; pixelY < 4; pixelY++) {
if (hasAlexSkin) {
for (int pixelX = 0; pixelX < 3; pixelX++) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int posPixel = ((16 * pixellength * width) + (pixelY * pixellength * width))
+ ((47 * pixellength) + (pixelX + bytenumber));
armtexture_bottom.add(pixels[posPixel]);
}
}
} else
for (int pixelX = 0; pixelX < 4; pixelX++) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int posPixel = ((16 * pixellength * width) + (pixelY * pixellength * width))
+ (((48 * pixellength) + pixelX) + bytenumber);
armtexture_bottom.add(pixels[posPixel]);
}
}
}
/* 2: Sides */
for (int pixelY = 0; pixelY < 8; pixelY++) {
// Checking wether the player has alex skinmodel or not
if (hasAlexSkin) {
for (int pixelX = 0; pixelX < 14; pixelX++) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int thepixel = ((24 * pixellength * width) + (pixelY * pixellength * width)
+ ((39 * pixellength) + (pixelX * pixellength))) + bytenumber;
armtexture_side.add(pixels[thepixel]);
}
}
} else {
for (int pixelX = 0; pixelX < 16; pixelX++) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int thepixel = ((24 * pixellength * width) + (pixelY * pixellength * width)
+ ((39 * pixellength) + (pixelX * pixellength))) + bytenumber;
armtexture_side.add(pixels[thepixel]);
}
}
}
}
// ------------[End of Copy-Section]--------------//
///////////////////////////////////////////////////
// ------------[start of Pasting-Section]--------------//
int counterY = 0;
int counterX = 0;
for (int pixelY = 0; pixelY < 64; pixelY++) {
counterY++;
for (int pixelX = 0; pixelX < 64; pixelX++) {
counterX++;
/* top & bottom */
if (hasAlexSkin) {
if (pixelX >= 44 && pixelX < 50 && pixelY > 31 && pixelY < 36) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int rowYInByteArray = counterY - 31;
pixels[((pixelY * pixellength * width) + (pixelX * pixellength))
+ bytenumber] = armtexture_bottom
.get(((pixelY % 4) * pixellength) * 3
+ ((pixelX % 3) * pixellength) + bytenumber);
}
}
/* sides */
if (pixelX >= 40 && pixelX < 54 && pixelY > 35 && pixelY < 48) {
int rowYInByteArray = counterY - 35;
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
pixels[((pixelY * pixellength * width) + (pixelX * pixellength)
+ bytenumber)] = armtexture_side
.get(((pixelY % * pixellength * 14)
+ ((pixelX % 14) * pixellength) + bytenumber);
}
}
} else {
/* top & bottom */
if (pixelX >= 44 && pixelX < 52 && pixelY > 31 && pixelY < 36) {
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
int rowYInByteArray = counterY - 31;
pixels[((pixelY * pixellength * width) + (pixelX * pixellength))
+ bytenumber] = armtexture_bottom
.get(((pixelY % 4) * pixellength * 4)
+ ((pixelX % 4) * pixellength) + bytenumber);
}
}
/* sides */
if (pixelX > 39 && pixelX < 56 && pixelY > 35 && pixelY < 48) {
int rowYInByteArray = counterY - 35;
for (int bytenumber = 0; bytenumber < pixellength; bytenumber++) {
pixels[((pixelY * pixellength * width) + (pixelX * pixellength))
+ bytenumber] = armtexture_side
.get(((pixelY % * pixellength * 16)
+ ((pixelX % 16) * pixellength) + bytenumber);
}
}
}
}
}
BufferedImage newTexture = new BufferedImage(64, 64,
hasAlphaChannel ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR);
newTexture.setData(Raster.createRaster(newTexture.getSampleModel(),
new DataBufferByte(pixels, pixels.length), new java.awt.Point()));
if (!texturefile.exists() && createdTextureThisSession == false) {
texturefile.mkdirs();
ImageIO.write(newTexture, "png", texturefile);
RealLifeMod.log("Refreshing Minecraft Resources");
createdTextureThisSession = true;
Minecraft.getMinecraft().scheduleResourcesRefresh();
}
return new ResourceLocation("reallifemod:textures/playerskin.png");
}
} catch (
IOException e)
{
e.printStackTrace();
}
return null;
} else if (texturefile.exists()) {
return new ResourceLocation("reallifemod:textures/playerskin.png");
} else
return null;
}
@Override
public ModelBase getMainModel() {
return this.model;
}
@Override
public ResourceLocation getEntityTexture(AbstractClientPlayer player) {
if (getTemporaryTexturefile(player, player.getLocationSkin()) != null) {
return getTemporaryTexturefile(player, player.getLocationSkin());
} else
return null;
}
}
-
This is where i register the renderer to the API:
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
NetworkRegistry.INSTANCE.registerGuiHandler(RealLifeMod.instance, new GuiHandler());
FMLCommonHandler.instance().bus().register(instance);
FMLCommonHandler.instance().bus().register(new ClientProxy());
FMLCommonHandler.instance().bus().register(new CommonHandler());
MinecraftForge.EVENT_BUS.register(proxy);
MinecraftForge.EVENT_BUS.register(new ClientHandler());
config = new Configuration(event.getSuggestedConfigurationFile());
RealLifeModConfig.syncConfig();
//////////////////////////////
// Starting to load the Mod //
//////////////////////////////
RealLifeMod_Blocks.defineBlocks();
RealLifeMod_Items.defineItems();
registerEntities();
proxy.registerRenderThings();
RenderPlayerAPI.register(Reference.ID, CustomPlayerRenderer.class);
Physics.init();
this.vehiclefile = new File(MinecraftServer.getServer().getDataDirectory() + "/RLM/vehicles/");
this.signfile = new File(MinecraftServer.getServer().getDataDirectory() + "/RLM/signs/");
loadAddonPacks();
Vehicles.setupVehicles();
Signs.setupSigns();
setupApps();
network = NetworkRegistry.INSTANCE.newSimpleChannel(Reference.ID);
network.registerMessage(SetPropertiesHandler.class, SetPropertiesPackage.class, 0, Side.SERVER);
network.registerMessage(PacketHandlerPropsSet.class, PropertiesSetPackage.class, 1, Side.CLIENT);
network.registerMessage(MountHandler.class, MountVehicleMessage.class, 2, Side.SERVER);
network.registerMessage(SetPositionHandler.class, UpdateVehiclePacket.class, 3, Side.SERVER);
network.registerMessage(CustomCollisionHandler.class, CustomCollisionPacket.class, 4, Side.SERVER);
network.registerMessage(UpdateControlHandler.class, UpdateControlPackage.class, 5, Side.SERVER);
network.registerMessage(ControllableInputHandler.class, ControlableInputPacket.class, 6, Side.SERVER);
network.registerMessage(KeyHeldHandler.class, PacketDriveableKeyHeld.class, 7, Side.SERVER);
network.registerMessage(PlaySoundHandler.class, PacketPlaySound.class, 8, Side.CLIENT);
network.registerMessage(DefecationHandler.class, DefecatePacket.class, 9, Side.SERVER);
network.registerMessage(UpdateToiletHandler.class, UpdateToiletPacket.class, 10, Side.SERVER);
setupTileEntities();
GameRegistry.registerWorldGenerator(new WorldGenCopper(), ;
if (event.getSide().isClient()) {
B3DLoader.instance.addDomain(Reference.ID);
OBJLoader.instance.addDomain(Reference.ID);
}
}
-
Thats a buildin function of the renderPlayerAPI - the minecraft function loops through the list of layerRenderers and renders them. Doesn't renderPlayerAPI just call those methods?
-
Hey there - i wanna add my own playerRenderer which works great using the renderPlayerAPI. Now - my problem is, that my custom layer does not render. No matter if i call renderLayers() or not. See my code here:
@Override
public void doRender(AbstractClientPlayer entity, double d1, double d2, double d3, float f1, float f2) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glTranslated(0, 1.5f, 0);
GL11.glRotated(-f1, 0, 1, 0);
if (getEntityTexture(entity) != null) {
Minecraft.getMinecraft().renderEngine.bindTexture((getEntityTexture(entity)));
}
model.render(entity, (float) d1, (float) d2, (float) d3, f1, f2, -0.065f);
renderLayers(entity, (float) d1, (float) d2, (float) d3, f1, f2, 1f, 0.0625F);
GL11.glPopMatrix();
}
The Layer class:
package itsamysterious.mods.reallifemod.core.rendering.Entities;
import itsamysterious.mods.reallifemod.init.Reference;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderClothes implements LayerRenderer {
private final CustomPlayerRenderer renderer;
private AdvancedPlayerModel model;
public RenderClothes(CustomPlayerRenderer renderer) {
this.renderer = renderer;
this.model = new AdvancedPlayerModel(1.5f);
}
@Override
public void doRenderLayer(EntityLivingBase entity, float f, float f1, float f2,
float f3, float f4, float f5, float f6) {
System.out.println("rendering");
this.model.setModelAttributes(renderer.getMainModel());
Minecraft.getMinecraft().renderEngine.bindTexture((new ResourceLocation(Reference.ID+"textures/gui/tabs")));
this.model.render(entity, f, f1, f2, f3, f4, f5);
}
@Override
public boolean shouldCombineTextures() {
return true;
}
}
I probably miss something essential - problem is i can't find it
-
Yes, how i would destroy the leaves is clear, but i wanna get a list of blocks for each tree when they are generated - isn't this the best way? Cuz when i do with a fixed radius, i will destroy other trees and when i do it with neighbor blocks it will go on forever until there are no leaf blocks anymore
-
I wrote an algorithm once. It was recursive and likely not the best, but it worked.
Kill current block and every log above this one.
Then recurse for every adjacent log next to this one, if the block above is air, also recurse for its neighbors.
Yea - i thought of that one too, but i need everything of the tree - logs&leaf's. I thought of making a List of all the trees with their logposition and then when a log is destroyed i loop through the list and look for the destroyed log. If it is is in one of the generated trees im gonna loop through the rest of the BlockPos-Array from this tree. All i need is a possibility to get every Block that is generated for a tree from the WorldGenTrees class. Is that possible? Or do i will have to use some class transformers?
-
A well okay Im pasting it here once ive done it.
-
Hey there - i wanna get an array of all blocks belonging to a tree when the player hits/destroys one of the logs of it. I searched for a way but didn't find anything like that in vanilla classes - how can i do that?
-
Can i send you the stuff via mediafire? It seams like github don't want's to update anything
-
Okay - i think i know what to add - does the gui show for you now?
-
What do i need to put into the maven thing?
-
Ah well yes you need to add RenderPlayerAPI
-
Should be updated now - Im sorry it's causing so many problems! I really are
-
Ok - it's updated!!
-
lol im deffinitly gonna update the github code...
-
Im gonna update the git and then try it again - cuz forme it looks like this:
[20:18:50] [server thread/INFO]: Generating keypair
[20:18:51] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:18:51] [server thread/INFO] [FML]: Applying holder lookups
[20:18:51] [server thread/INFO] [FML]: Holder lookups applied
[20:18:51] [server thread/INFO] [FML]: Loading dimension 0 (Real Life Mod Devlog) (net.minecraft.server.integrated.IntegratedServer@15ca4d8e)
[20:18:51] [server thread/INFO] [FML]: Loading dimension 1 (Real Life Mod Devlog) (net.minecraft.server.integrated.IntegratedServer@15ca4d8e)
[20:18:51] [server thread/INFO] [FML]: Loading dimension -1 (Real Life Mod Devlog) (net.minecraft.server.integrated.IntegratedServer@15ca4d8e)
[20:18:51] [server thread/INFO]: Preparing start region for level 0
[20:18:51] [server thread/INFO]: Changing view distance to 16, from 10
[20:18:51] [Netty Local Client IO #1/INFO] [FML]: Server protocol version 2
[20:18:51] [Netty Server IO #3/INFO] [FML]: Client protocol version 2
[20:18:51] [Netty Server IO #3/INFO] [FML]: Client attempting to join with 5 mods : [email protected],[email protected],[email protected],[email protected],[email protected]
[20:18:51] [Netty Local Client IO #1/INFO] [FML]: [Netty Local Client IO #1] Client side modded connection established
[20:18:51] [server thread/INFO] [FML]: [server thread] Server side modded connection established
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.lifesystem.RLMPlayerProps:loadNBTData:233]: Succesfully loaded tag! Values are:
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.lifesystem.RLMPlayerProps:loadNBTData:234]: ItsAMysterious
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.lifesystem.RLMPlayerProps:loadNBTData:235]: Mods
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.lifesystem.RLMPlayerProps:loadNBTData:236]: Male
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.lifesystem.RLMPlayerProps:loadNBTData:237]: Doctor
[20:18:51] [server thread/INFO]: ItsAMysterious[local:E:ed972282] logged in with entity id 10517 at (146.510934939376, 67.0, -81.40105577503573)
[20:18:51] [server thread/INFO]: ItsAMysterious joined the game
[20:18:51] [server thread/INFO] [sTDOUT]: [itsamysterious.mods.reallifemod.core.eventhandlers.CommonHandler:showTheGui:56]: PlayerLoggedInEvent has been called - the RLMPlayerProps arenot null
[20:18:52] [server thread/INFO]: Saving and pausing game...
[20:18:52] [server thread/INFO]: Saving chunks for level 'Real Life Mod Devlog'/Overworld
[20:18:52] [server thread/INFO]: Saving chunks for level 'Real Life Mod Devlog'/Nether
[20:18:52] [server thread/INFO]: Saving chunks for level 'Real Life Mod Devlog'/The End
And no crash - just the gui is still shown every time
-
WTF??? Do you see the sysout's?
-
-
But they where saved properly - i saw that in the sysouts. Did this crash appear directly at worldloading?
-
This is inside my ClientProxy in the registerRenderThings - Method which is called by my Modbaseclass from the Init method.
@Override
public void registerRenderThings() {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_DigitalFrame.class, new RenderPictureFrame());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_TV.class, new render_TV());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Drawer.class, new render_Drawer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Computer.class, new render_Computer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Toilet.class, new render_Toilet());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_GasPump.class, new render_GasPump());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_GasTank.class, new Render_GasTank());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Sign.class, new RenderSign());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Lantern.class, new RenderLantern());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_VendingMachine.class, new Render_VendingMachine());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_DrinksFridge.class, new Render_DrinksFridge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_PowerLine.class, new Render_PowerLine());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Transformer.class, new RenderTransformer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Pinwheel.class, new RenderPinwheel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Ramp.class, new RenderRamp());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_TVTable.class, new RenderTVTable());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Shelf.class, new RenderShelf());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_IronFence.class, new RenderIronFence());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Railing.class, new RenderRailing());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_DartBoard.class, new RenderDartboard());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Table.class, new RenderTable());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Toilet.class, new render_Toilet());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntity_Urinal.class, new renderUrinal());
RenderingRegistry.registerEntityRenderingHandler(EntityDriveable.class, new RenderVehicle());
RenderingRegistry.registerEntityRenderingHandler(EntityPylon.class, new RenderPylon());
RenderingRegistry.registerEntityRenderingHandler(EntityWheel.class, new RenderWheel());
MinecraftForge.EVENT_BUS.register(new RLMOverlay(Minecraft.getMinecraft()));
MinecraftForge.EVENT_BUS.register(new KeyHandler());
}
@EventHandler public void Init(FMLInitializationEvent event) { setupCrafting(); if (event.getSide() == Side.CLIENT) { proxy.registerItemModels(); proxy.registerRenderThings(); RealLifeMod_Items.registerCarItemModels(); } } /code]
-
Hey there - im trying to createmy own RenderPlayer class. I made a more advanced ModelBiped and try to registermy Renderer in the ClientProxy like this:
RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new CustomPlayerRenderer(Minecraft.getMinecraft().getRenderManager()));
This is my renderer class, but it isn't even applied:
package itsamysterious.mods.reallifemod.core.rendering.Entities;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.client.renderer.entity.RendererLivingEntity;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class CustomPlayerRenderer extends RendererLivingEntity {
public static final AdvancedPlayerModel model = new AdvancedPlayerModel();
public CustomPlayerRenderer(RenderManager renderManager) {
super(renderManager, model, 0.5f);
}
@Override
public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks) {
System.out.println("Rendering");
model.render(entity, (float) entity.posX, (float) entity.posY, (float) entity.posZ, entity.rotationYaw,
entity.rotationPitch, 1);
}
// Frisuren -> Wechselbar
@Override
protected ResourceLocation getEntityTexture(Entity entity) {
return ((AbstractClientPlayer) entity).getLocationSkin();
}
}
Mod Export fails (Need to include RenderPlayerAPI?) [NEED QUICK HELP]
in Modder Support
Posted
Can anybody help?