Jump to content

ItsAMysteriousYT

Members
  • Posts

    785
  • Joined

  • Last visited

Posts posted by ItsAMysteriousYT

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

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

     

     

     

  2. 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&registering stuff in each of your custom ItemClasses which makes your code much more comfortable :)

  3. 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 % 8) * 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 % 8) * 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;

    }

     

    }

     

     

  4. 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(), 8);

    if (event.getSide().isClient()) {

    B3DLoader.instance.addDomain(Reference.ID);

    OBJLoader.instance.addDomain(Reference.ID);

    }

    }

     

     

  5. 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 :/

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

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

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

  9. 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();

    }

     

    }

     

     

     

×
×
  • Create New...

Important Information

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