Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Cadiboo

Members
  • Joined

  • Last visited

Posts posted by Cadiboo

  1. 1 minute ago, Jack4096 said:

    It ONLY fixed the crash on startup, ONLY. It's still bugged. Sorry, I should have specified. But the crash on startup is fixed, I feel that I can do all the rest of the debugging on my own, and if I can't, I'll ask on this forum for help if I can't figure it out.

    Use your IDE's auto-formatter function to automatically apply overrides etc.

  2. 10 hours ago, monkeybee said:

    im lurning JAVA as im going along do better learning something by doing then sitting there watching/reading/taking lessens 

    Learning java through modding Minecraft is really painful, I suggest getting a basic understanding of java or at least OOP (Object Oriented Programming) in general first

  3. 4 hours ago, Jack4096 said:

    protected BlockStateContainer createBlockState()
        {
            return new BlockStateContainer(this, new IProperty[] {VARIANT});
        }

    Is this being properly overriden?

     

    and how are you registering your block??

    4 hours ago, Jack4096 said:

    BlockStateContainer{block=null

    Can you post your entire log using GitHub Gist or pastebin and your code as a github(or similar) repository?

  4. 3 hours ago, MrChoke said:

    What if I pulled down the 1.13pre branch right now?  Would it even build yet?  Can I see the converted 1.13 code?  And last question,  do you guys need any help finishing it?

    You would be able to work on it, I think so, yes, not exactly needed but likely appreciated & you will get a feel for how Forge works by working on it

  5. 5 hours ago, purpleshadows said:

    As @Cadiboo sugested I fidled with the brigthness in doRender, on the lines starting with "blockrendererdispatcher":

      Reveal hidden contents

    image.thumb.png.712ec14b983318d256064665301fbba0.png

    Also my block now has an interesting texture after being ignited, but it is still not the texture I have asigned to it, as you can see here:

      Hide contents

    image.png.48f32ab6339ec01ad7bc0bf8847dd81d.png

    EDIT: @Animefan8888 everything is as you sugest, yet it does not fix my problem.

    That looks like the light map (not the blocks) texture to me

  6. You will probably also be using BLOCK and ITEM vertex formats. Heres how to upload with them

    BLOCK:

    bufferBuilder.pos(x, y, z).color(red, green, blue, alpha).tex(minU, maxV).lightmap(skyLight, blockLight).endVertex();

    ITEM:

    bufferBuilder.pos(x, y, z).color(red, green, blue, alpha).tex(minU, maxV).normal(x, y, z).endVertex();
    //theres also an element (1 byte) called padding in the ITEM format, however, since there is no method to create it, I assume it is literally padding and is automatically added if needed
  7. Posted

    mY cOREMOD iSNT wORKING yOU nEED tOO hELP mE hERES mY cODE gIVE mE cODE aND rEWRITE iT fOR mE yOU nEED tO

     

    import java.util.Iterator;

    import org.objectweb.asm.*;

    import net.minecraft.launchwrapper.IClassTransformer;

    public class null implements IClassTransformer {

    public static final int ALOAD = Opcodes.ALOAD;

    public static final int INVOKESTATIC = Opcodes.INVOKESTATIC;

    public static final int GETFIELD = Opcodes.GETFIELD;

    public static final int FLOAD = Opcodes.FLOAD;

    public static final int INVOKEVIRTUAL = Opcodes.INVOKEVIRTUAL;

    public static final int IFEQ = Opcodes.IFEQ;

    public static final int RETURN = Opcodes.RETURN;

    public static final int F_SAME = Opcodes.F_SAME;

    public static final int GETSTATIC = Opcodes.GETSTATIC;

    @Override

    public byte[] transform(final String name, final String transformedName, final byte[] basicClass) {

    if (name.equals("net.minecraft.client.renderer.chunk.Minecraft")) {

    System.out.println("********* INSIDE DEOBFUSCATED MinecRaft TRANSFORMER ABOUT TO PATCH: " + name);

    final byte[] undefined = vent(name, basicClass, true);

    final byte[] null = this.at(name, hookRebuildChunkEvent, true);

    return hook.null;

    }

    return basicClass;

    }package asm.net.minecraft.client.renderer.chunk;

    import java.util.*;

    import org.objectweb.asm.*;

    public class RenderChunkDump implements Opcodes {

    public static byte[] dump() throws Exception { final ClassWriter cw=new ClassWriter(0);FieldVisitor fv;MethodVisitor mv;AnnotationVisitor av0; cw.visit(V1_8,ACC_PUBLIC+ACC_SUPER,"net/minecraft/client/renderer/chunk/RenderChunk",null,"java/lang/Object",null); cw.visitSource("RenderChunk.java",null); {av0=cw.visitAnnotation("Lnet/minecraftforge/fml/relauncher/SideOnly;",true);av0.visitEnum("value","Lnet/minecraftforge/fml/relauncher/Side;","CLIENT");av0.visitEnd();}cw.visitInnerClass("net/minecraft/util/math/BlockPos$MutableBlockPos","net/minecraft/util/math/BlockPos","MutableBlockPos",ACC_PUBLIC+ACC_STATIC); cw.visitInnerClass("net/minecraft/client/renderer/BufferBuilder$State","net/minecraft/client/renderer/BufferBuilder","State",ACC_PUBLIC); cw.visitInnerClass("net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status","net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator","Status",ACC_PUBLIC+ACC()V",false);mv.visitLabel(l6);mv.visitLineNumber(398,l6);mv.visitFrame(Opcodes.F_SAME,0,null,0,null);mv.visitIincInsn(1,1);mv.visitJumpInsn(GOTO,l3);mv.visitLabel(l4);mv.visitLineNumber(405,l4);mv.visitFrame(Opcodes.F_CHOP,1,null,0,null);mv.visitInsn(this.RETURN);final Label l8=new Label();mv.visitLabel(l8);mv.visitLocalVariable("i","I",null,l3,l4,1);mv.visitLEvent(final String name, final byte[] bytes, final boolean deobfuscated) { final String targetMethodName; if (deobfuscated == false) {targetMethodName = "NULL"; } else {targetMethodName = "minecraft.Getminecraft()"; } final ClassNode classNodeRenderChunk = new ClassNode(); final ClassReader classReader = new ClassReader(bytes); classReader.accept(classNodeRenderChunk, 0); final Iterator<MethodNode> methods = classNodeRenderChunk.methods.iterator(); while (methods.hasNext()) {final MethodNode methodRebuildChunk = methods.next();if (!methodRebuildChunk.name.equals(targetMethodName)) { continue;}if (!methodRebuildChunk.desc.equals("(FFFLnet/minecraft//renderer/chunk/Minecraft;)V")) { continue;}System.out.println("********* Inside target method! " + targetMethodName + " | " + methodRebuildChunk.name);AbstractInsnNode targetNode = null;final Iterator<AbstractInsnNode> iter = methodRebuildChunk.instructions.iterator();iter.next();iter.next();iter.next();iter.next();iter.next();iter.next();while (iter.hasNext()) { final AbstractInsnNode currentNode = iter.next(); if (true && currentNode.getOpcode() == Opcodes.NEW && true) { targetNode = currentNode.getPrevious().getPrevious(); break; }} 147 - } 148 - 149 - VisGraph this.lvt_9_1_ = new VisGraph(); 147 - }148-if(net.minecraftforge.client.ForgeHooksClient.onRebuildChunkEvent(field_178589_e,field_189564_r,p_178581_4_,compiledchunk,this.field_178586_f,p_178581_1_,p_178581_2_,p_178581_3_).isCanceled())return;149-

    VisGraph lvt_9_1_ = new VisGraph();

    L16 LINENUMBER 145

    L16 ALOAD 0

    GETFIELD net/minecraft/client/renderer/chunk/RenderChunk.renderGlobal:Lnet/minecraft/client/renderer/RenderGlobal;ALOAD 0

    GETFIELD net/minecraft/client/renderer/chunk/RenderChunk.worldView:Lnet/minecraft/world/ChunkCache;ALOAD 4 ALOAD 5 ALOAD 0

    GETFIELD net/minecraft/client/renderer/chunk/RenderChunk.position:Lnet/minecraft/util/math/BlockPos$MutableBlockPos;FLOAD 1 FLOAD 2 FLOAD 3

    INVOKESTATIC net/minecraftforge/client/ForgeHooksClient.onRebuildChunkEvent(Lnet/minecraft/client/renderer/RenderGlobal;Lnet/minecraft/world/ChunkCache;Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;Lnet/minecraft/client/renderer/chunk/CompiledChunk;Lnet/minecraft/util/math/BlockPos$MutableBlockPos;FFF)Lnet/minecraftforge/client/event/RebuildChunkEvent;

    INVOKEVIRTUAL net/minecraftforge/client/event/RebuildChunkEvent.isCanceled()Z     IFEQ

    L17     RETURN L17System.out.println("********* PATCHING");

    final InsnList toInject = new InsnList();

    final Label l16 = new Label();toInject.add(new Label(l16));toInject.add(new LineNumberNode(145+3,l16));toInject.add(new VarInsnNode(ALOAD,0);toInject.add(new FieldInsnNode(GETFIELD,"net/minecraft/client/renderer/chunk/RenderChunk","renderGlobal","Lnet/minecraft/client/renderer/RenderGlobal;");toInject.add(new VarInsnNode(ALOAD,0);toInject.add(new FieldInsnNode(GETFIELD,"net/minecraft/client/renderer/chunk/RenderChunk","worldView","Lnet/minecraft/world/ChunkCache;");toInject.add(new VarInsnNode(ALOAD,4);toInject.add(new VarInsnNode(ALOAD,5);toInject.add(new VarInsnNode(ALOAD,0);toInject.add(new FieldInsnNode(GETFIELD,"net/minecraft/client/renderer/chunk/RenderChunk","position","Lnet/minecraft/util/math/BlockPos$MutableBlockPos;");toInject.add(new VarInsnNode(FLOAD,1);toInject.add(new VarInsnNode(FLOAD,2);toInject.add(new VarInsnNode(FLOAD,3);toInject.add(new MethodInsnNode(INVOKESTATIC,"cadiboo/renderchunkrebuildchunkhooks/hooks/RenderChunkRebuildChunkHooksHooks","onRebuildChunkEvent","(Lnet/minecraft/client/renderer/RenderGlobal;Lnet/minecraft/world/ChunkCache;Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;Lnet/minecraft/client/renderer/chunk/CompiledChunk;Lnet/minecraft/util/math/BlockPos$MutableBlockPos;FFF)Lnet/minecraftforge/client/event/RebuildChunkEvent;",false);toInject.add(new MethodInsnNode(INVOKEVIRTUAL,"cadiboo/renderchunkrebuildchunkhooks/event/RebuildChunkEvent","isCanceled","()Z",false);

    final Label l17 = new Label();toInject.add(new JumpInsnNode(IFEQ,l17);toInject.add(new InsnNode(RETURN);

    final Label l17 = new Label();

    final LabelNode l17node = new LabelNode(this.l17);toInject.add(l17node);toInject.add(new LineNumberNode(148,l17node));toInject.add(new FrameNode(F_SAME,0,null,0,null));toInject.add(new FieldInsnNode(GETSTATIC,"java/lang/System","out","Ljava/io/PrintStream;"));toInject.add(new LdcInsnNode("fuk"));toInject.add(new MethodInsnNode(INVOKEVIRTUAL,"java/io/PrintStream","println","(Ljava/lang/String;)V",false)); // inject new instruction list into method instruction list

     

    iT uSED tO wORK iTS aLL yOUR fAULT fOR bREAKING eVERYTHING wITH tHE nEW fORGE uPDATE I didn't getEnoGH tIME tO upDatE aND teST mY mOD yOU havE tO help MEEEE!!!

  8. 2 minutes ago, IdrisQe said:

    Giving even a brief period where the build is out in the open but not the RB yet would allow mod authors to prepare

    Correct me if I'm wrong but aren't the "latest" versions exactly this?

    2 minutes ago, IdrisQe said:

    What: Give mod authors a heads-up when a new reccommended build is coming, stating exactly what changes it contains since the last reccommended build.

    How: Add some note or something on downloads page, make a tweet, whatever, that says "Build [whatever] will become the reccommended 1 week after release" or something.
    Why: So mod authors have a week to make sure their mods work with the reccommended build before it becomes the reccommended build (and therefore the build most users expect any mods to work on), to avoid day-1 reccommended build downloaders flooding complaints that the mod doesn't work on the reccommended expected build.

    https://github.com/MinecraftForge/MinecraftForge/commits/1.12.x

    https://github.com/MinecraftForge/MinecraftForge/commit/76c138c40043431a6cdecf674570d757d89b26c7

     

    4 minutes ago, IdrisQe said:

    Besides. Being unproductive isn't a good reason to outright delete the thread, wiping any memory of it from existence.

    Agreed

  9. TESRs are a lot worse for performance (they run every frame) than multipart models (they get computed every time a block update close to them happens) AND with TESRs you have to handle lighting etc. While with multipart models lighting gets handled automatically. You can also use a combination of multipart models and TESRs or Forge's Animation API to add other textures & effects. You might want to take a look at my mod which renders my energy cables with multipart models and renders electricity flowing with a TESR

  10. ·

    Edited by Cadiboo

    The whole thread was pretty unproductive & boiled down to "Why didn't you modders enough time to update" -> "We did".

    Core mods aren't supported AND you can specify in 1 line of code what versions you mod does & does not run on. heres how:

    https://mcforge.readthedocs.io/en/latest/gettingstarted/structuring/#what-is-mod

    Quote

    A dependency string can start with the following four prefixes: "before", "after", "required-before", "required-after"; then ":" and the modid.

    Optionally, a version range can be specified for the mod by adding "@" and then the version range.*

    EDIT: I just found out that apparently core-mods can't do this? they can only use the @MCVersion annotation

  11. Seems to me as though you've got your horizontal EnumFacing values wrong. What exactly are you trying to do i.e. what are you trying to transfer? In your code I see vein and a custom energy capability and a whole bunch of classes with abbreviations in their name who's purpose is not immediately obvious.

    Also don't use IHasModel (or any variant - ItemM)

    Don't us static initialisers, use the @ObjectHolder annotation

  12. 23 hours ago, purpleshadows said:

    new ResourceLocation(Reference.MOD_ID + ":" + name)

    this -> new ResourceLocation(Reference.MOD_ID,name)

     

    23 hours ago, purpleshadows said:

    new ResourceLocation(Reference.MOD_ID + ":textures/entity/dankjess_explosiveblock.png");

    this -> new ResourceLocation(Reference.MOD_ID, "textures/entity/dankjess_explosiveblock.png");

     OR new ResourceLocation(Reference.MOD_ID, "entity/dankjess_explosiveblock.png");, I'm not sure which is correct, I think its the second one, but try both

     

    I think your brightness is somehow off. I think that you should replace your code with just the initial translation & try rendering your block with different brightnesses.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.