Jump to content

HoBoS_TaCo

Forge Modder
  • Posts

    140
  • Joined

  • Last visited

Posts posted by HoBoS_TaCo

  1. This is probably a horrible way of doing things, but I store my configs in json using the format:

    
    {
      "thirst-enabled": {
        "description": "Should DayZ thirst be enabled?",
        "value": true
      },
      "debug-mode": {
        "description": "Should DayZ log extra information?",
        "value": false
      },
      "structure-generation-chance": {
        "description": "1 in x chance to generate a structure in a given chunk",
        "value": 60
      },
      "show-world-type-warning": {
        "description": "Should DayZ warn if the worldtype is not DayZ?",
        "value": true
      },
      "spawn-zombies-in-default-world": {
        "description": "Should DayZ zombies generate in the surface world?",
        "value": false
      }
    }
    

  2.  

    I'm having a little trouble with 2 textures from my mod.

    Firstly the barbedWire block gives off a "Model definition for location dayz:barbedWire#inventory not found" error. I can't seem to get rid of it, the barbedWire block is 99% the same as my nailBlock block which works perfectly. If anyone knows where i've stuffed up, please let me know.

    Also if it's not to much trouble, if someone could point me the right way on how to render the ItemBlock for my lootChest block i'd appreciate it. It cant be too difficult since it looks identical to the stock Minecraft chest, but i'm stumped.

     

    https://github.com/DayZ-Minecraft/DayZ-Minecraft/blob/1.8.9/src/main/resources/assets/dayz/models/block/barbedWire.json

    https://github.com/DayZ-Minecraft/DayZ-Minecraft/blob/1.8.9/src/main/resources/assets/dayz/models/item/barbedWire.json

    https://github.com/DayZ-Minecraft/DayZ-Minecraft/blob/1.8.9/src/main/java/com/github/dayzminecraft/dayzminecraft/client/ClientProxy.java

    https://github.com/DayZ-Minecraft/DayZ-Minecraft/blob/1.8.9/src/main/java/com/github/dayzminecraft/dayzminecraft/common/blocks/BlockBarbed.java

    https://github.com/DayZ-Minecraft/DayZ-Minecraft/blob/1.8.9/src/main/java/com/github/dayzminecraft/dayzminecraft/common/blocks/ModBlocks.java

    Latest.log:

    https://gist.github.com/HoBoS-TaCo/368b4a4ece0ea004be5f687ced105a47

  3. IntelliJ IDEA, the free community edition. I got frustrated with it the first time I used it however I gave it a second chance and i'm never going back from it. This is mainly due to it giving suggestions as it predicts what you're typing (hard to explain) and the fact that it imports Gradle projects really well. All I do is click "Import project", select the build.gradle file and click next a couple of times. It sets up my src folder along with all of my dependencies leaving me ready to code around 20 seconds after the Gradle setup is complete. The only thing it doesn't do it set up the run configurations, but that's expected. I could go on for hours about how much I love it and all it's features (such as being a hell of a lot faster than eclipse and having themes!) but i'll leave it at this.

  4. Here's a little information on ForgeGradle that will help you understand:

     

    Gradle is a program used to build java and other programs by compiling the source and building your jar. ForgeGradle is a plugin for this builder which also adds some new commands (known as tasks) to Gradle such as decompiling and deobfuscating Minecraft's jars and reobfuscating your mod to srg names required by ForgeModLoader and Forge.

     

    Minecraft is no longer decompiled into a folder, as it was before ForgeGradle. Currently if you run the "setupDevWorkspace" command (otherwise called a gradle task) with ForgeGradle it will get the Minecraft jars, merge them together and swap all the obfuscated names (such as ab.class) to mcp names (such as EntityPlayer.class), which is known as deobfuscating. This will create the jar ~\.gradle\caches\minecraft\net\minecraftforge\forge\1.6.4-9.11.1.964\forge-1.6.4-9.11.1.964-mcp.jar (where ~ is your user folder). This jar should be referenced like the other library jars in your project, such as gson-2.2.2.jar and lwjgl-2.9.0.jar. With this setup you will unfortunately be unable to see what lies inside of each of Forge and Minecraft's many methods and classes.

     

    This is where the gradle task "setupDecompWorkspace" comes in handy. It creates the same jar as "setupDevWorkspace" but also creates a forge-1.6.4-9.11.1.964-src.jar in the same folder, which once you set it as the forge-1.6.4-9.11.1.964-mcp.jar's source, you will be able to browse the code similarly as you would with the old setup, and see how the classes tick. Do note that this source jar is read only.  After your mod is completed you will need to run the gradle task "build". This is the same as the normal gradle build task however it translates the mcp names you have referenced in the forge-1.6.4-9.11.1.964-mcp.jar to srg names (names created by the mcp developers that stay the same between each minecraft version, where mojang's obfuscations do not). You can then find your built mod in the build/libs folder inside the folder containing your build.gradle file.

     

    You will need the build.gradle file to remain in your project folder for the gradle tasks (commands) to take effect. If you don't have gradle installed on your computer, you will need the gradle wrapper in your project as well as you will need to send the build command to it.

     

    I am wanting to setup a Forge Gradle environment in what is best defined as the Pahimar style workspace.

    Chances are you are using eclipse, which I haven't  used in a while and will make this a little difficult. When I used eclipse I found that the "Pahimar workspace" aka "the normal workspace" was best used so there wasn't several mcp setups around your computer. As ForgeGradle stores most of it's files in the ~\.gradle directory setting up multiple build directories shouldn't take long or take up much space on your computer. As each mod will need it's own build.gradle file things become a little difficult. If you want the most hastle-free modding experience I can suggest opening up two eclipse windows and coding side-by-side. If you do want to use a "Pahimar workspace" you need to ask someone other than me. I may put together a tutorial on this at a later date.

     

    So where is all of the mcp files now?

    The ~/.gradle folder, see the the first four paragraphs.

     

    I see the build folder has file I remember inside it but things seem to be all over the place compared to the old build system.

    The only thing you need to worry about in the build folder is that when you run the "build" task in gradle, your compiled mod jar will be in there. The rest of the files in the build folder should be left alone.

     

    Also do I still need Gradle if I am using my own dev environment, I will be coding in straight java NOT gradle.

    You don't "code gradle", see the first paragraph.

  5. As 1.7 is nearly upon us it also gives us the opportunity to refactor some packages. I propose to combine FML's network handlers into forge events along with the addition of a ServerListPingEvent. Below I have outlined what I hope to put in my pull request, depending on how much 1.7 changes things. If you think these handlers should remain in FML, I could just convert IPlayerTracker to events and add the extra data shown below along with the ServerListPingEvent.

     

     

    (Client) net.minecraftforge.client.event.network.ClientConnectionOpenedRemoteEvent

    - Was IConnectionHandler.connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager)

    - Event would have access to:

      - NetClientHandler, was NetHandler. No longer need to cast to NetClientHandler.

      - Server IP address as string

      - Server Port as integer

      - INetworkManager

     

    (Client) net.minecraftforge.client.event.network.ClientConnectionOpenedIntegratedEvent

    - Was IConnectionHandler.connectionOpened(NetHandler netClientHandler, MinecraftServer server, INetworkManager manager)

    - Event would have access to:

      - NetClientHandler, was NetHandler. No longer need to cast to NetClientHandler.

      - Server as IntegratedServer, was MinecraftServer. No longer need to cast to IntegratedServer.

      - INetworkManager

     

    (Server) net.minecraftforge.common.event.network.ServerReceiveConnectionEvent

    - Was IConnectionHandler.connectionReceived(NetLoginHandler netHandler, INetworkManager manager)

    - Cancellable event, a custom kick message could be assigned

    - Event would have access to:

      - NetLoginHandler

      - TcpConnection (INetworkManager is an interface of TcpConnection, any reason to not use TcpConnection?)

     

     

    (Server) net.minecraftforge.common.event.network.PlayerLoginEvent

    - Was IConnectionHandler.playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager)

    - Can be combined with IPlayerTracker.onPlayerLogin(EntityPlayer player)

    - Event would have access to:

      - EntityPlayerMP

      - NetServerHandler, was NetHandler. No longer need to cast to NetServerHandler.

      - INetworkManager

      - MinecraftServer

     

    (Client) net.minecraftforge.client.event.network.ClientLoginEvent

    - Was IConnectionHandler.clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login)

    - Event would have access to:

      - NetClientHandler, was NetHandler. No longer need to cast to NetClientHandler.

      - INetworkManager

      - Packet1Login

     

    (Server) net.minecraftforge.common.event.network.PlayerLogoutEvent

    - Was IPlayerTracker.onPlayerLogout(EntityPlayer player)

    - Event would have access to:

      - NetClientHandler, was NetHandler. No longer need to cast to NetClientHandler.

      - INetworkManager

      - MinecraftServer

     

    (Both) net.minecraftforge.common.event.network.ConnectionClosedEvent

    - Was IConnectionHandler.connectionClosed(INetworkManager manager)

    - Event would have access to:

      - INetworkManager

     

    (Server) net.minecraftforge.common.event.network.PlayerChangedDimensionEvent

    - Was IPlayerTracker.onPlayerChangedDimension(EntityPlayer player)

    - Event would have access to:

      - EntityPlayerMP

      - MinecraftServer

      - Teleporter

      - Old dimension id

      - New dimension id

     

    (Server) net.minecraftforge.common.event.network.PlayerRespawnEvent

    - Was IPlayerTracker.onPlayerRespawn(EntityPlayer player)

    - Event would have access to:

      - EntityPlayerMP

      - MinecraftServer

      - world the player is being respawned into.

      - boolean for if the player beat the game.

     

     

    (Server) net.minecraftforge.common.event.network.ServerChatRecievedEvent

    - Was ServerChatEvent,changed the name to match the client event and move to network package

     

     

    (Client) net.minecraftforge.client.event.network.ClientChatRecievedEvent

    - Move to network package

     

     

    (Server) net.minecraftforge.common.event.network.ServerListPingEvent

    - Event would have access to:

      - Pinger's address

      - Able to send back a custom MOTD

      - Able to send back a custom number of current players

      - Able to send back a custom number of maximum players

  6. I get this error every time I start my server: https://gist.github.com/HoBoS-TaCo/6495336

     

     

    It seems the server can't find the BiomeEvent.BiomeColor method when my terrain event handler is called, however I never access that method anywhere. The closest I get is BiomeEvent.GetVillageBlockID which doesn't have an @SideOnly annotation unlike BiomeEvent.BiomeColor.

     

    I'm not sure what's going on, any help would be appreciated.

  7. I'm trying to play each block's stepsound when my projectile entity hits it, I need the Block.getStepSound getter to be added for this to happen as it's a public variable.

     

     

    Something along the lines of:

        /**
    
         * Gets the footstep sound for the block. Returns the StepSound.
         */
        public StepSound getStepSound()
        {
            return this.stepSound;
        }
    

  8.  

    Edit: I've figured out the problem I had below, I now need to know how to add external libraries in 1.6.

     

    I've packaged my mod for release and installed minecraft forge server using the installer which all works fine. When I place my packaged coremod (works fine in MCP) it throws a java.lang.NoClassDefFoundError: ab. This is odd as I don't access that class (ICommand) during launch.

     

     

    Log

     

     

    Code

  9. I can set up my ILibrarySet far enough that it downloads the library but I can't seem to access it. I know I'm making a simple error somewhere but I can't quite put my finger on it. Could someone please tell me where I've gone wrong?

     

     

    
    public class CoreLibrarySet implements ILibrarySet
    {
        private static String[] libraries = { "xstream-1.4.4.jar"};
        private static String[] checksums = { "488e9e4a47afc81d2b2dec3c3eb3a4d0f10fe105" };
    
    
        @Override
        public String[] getLibraries()
        {
            return libraries;
        }
    
    
        @Override
        public String[] getHashes()
        {
            return checksums;
        }
    
    
        @Override
        public String getRootURL()
        {
            return "https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/xstream/1.4.4/%s";
        }
    }
    

     

     

    Edit: Nevermind, I seemed to have solved it somehow.

  10. Sign Change and Creeper Explode Events would be very helpful for creating functional signs (canceling the creation of a shop sign if the creator doesn't have the privileges) and disabling creeper explosion damage in certain chunks. I'd love to see these in the upcoming 1.6 release (block break and place events would be great too).

  11. When I insert it into my jar CORRECTLY

    If you did it correctly it would have worked.

    I know that in the installsion directions, it says to install Modloader then forge

    The Mythicraft page says to install ModLoader before Forge, this is incorrect, all you need is Forge. The Forge download includes Forge Mod Loader which is a superior replacement. The mod also asks you to put the code into your jar rather then the mods folder, this is another sign that the creators don't know much about Forge and likely Java in general. The problem is most likely with Mythicraft because it's overwriting base files, otherwise it's your fault, read the Rules and Excessively Asked Questions.

×
×
  • Create New...

Important Information

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