• Content Count

  • Joined

  • Last visited

  • Days Won


joedobo last won the day on February 19 2015

joedobo had the most liked content!

Community Reputation

1079 Rare

About joedobo

  • Rank

Profile Information

  • Gender
    Not Telling


  • Xanadu

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I'd suggest making an actual model.dae (collada) and then ask in the modding forum how you would go about getting it into the game.
  2. I don't trust WO to prevent unique creatures from bashing into my deed. (imo, they should be able to bash out of a deed and never spawn on a deed) And thus, I'm looking for suggestions on securing animals. The only one I can come up with is hitching all horses to vehicles. But Hell horses won't stay hitched to a vehicle. Some animals can't be hitched at all. For me I have a greenish brown bear and some hell horses I'm not sure how to protect. Thanks for your ideas in advance.
  3. WU vanilla code is very lacking when it comes to java docs. If you askin specific question in modding Discord (or here too) we can probably help advise on what method(s) would be best to get object xyz.
  4. Make a method in your mod that does what you want and it can be written with Java. You'll likely only have access to the MyTile object. Although, there are static methods in WU that let you look up information for a tile or volatile zone. Then use Javassist expression editor to replace the return value from the wurm method with the return value from your new method. Javassist page has a tutorial on this. You could use bytecode to change it also but that isn't the easists approach.
  5. Java mainly. You can make some mods with Javascript and the script runner tool in ago's server mod launcher. One area that seems to be different with WU modding is using bytecode to make edits to Java Virtual Machine (JVM). A lot of mods tend to avoid the bytecode path as it is full of pitfalls. But it's also very versatile in that you can do anything with it. To keep things simple I'd stick with with JavaScript via script-runner. Using Java reflection to change various things about vanilla is good. And Java + the action-performer/behaviour-provider in modlauncher is also good.
  6. Client helper mod

    Is it possible to add a fishing macro for the new system? I've been looking into a ways to reimplement the keybind and wait play style. 1. Send fishing comand. 2. choose a location that is at max rod cast distance and directly in front of where the player is facing. Cast the line out to this location. 3. Wait for the fish to bite and auto pull it in. Execute all three of those with a single keybind.
  7. Hopefully I've got enough checks in here to stop tower griefing. Here's the two I hope will work best to protect player's deeded zoos. Thanks for the tip@Mthec // NO attacking creatures that aren't threats. if ( .noneMatch(longId -> longId == target.getWurmId())) { communicator.getPlayer().getCommunicator().sendNormalServerMessage( "Ghosts won't attack a creature that isn't currently or hasn't recently threatened you."); return MessagePolicy.PASS; } // No village permission to attack on deed. @Nullable Village occupiedVillage = Villages.getVillage(target.getTileX(), target.getTileY(), target.isOnSurface()); if (occupiedVillage != null && (!occupiedVillage.isActionAllowed((short)326, player) || !occupiedVillage.isActionAllowed((short)716, player))) { communicator.getPlayer().getCommunicator().sendNormalServerMessage( String.format("Ghosts refuse to help you because village %s has denied you attacking permission", occupiedVillage.getName())); } The others are here if your curious: Lastly, I'm have a sporadic issue with initializing Wurm classes (Creature, Player) in the javassist intended init() section. It's really weird so I'd like to somehow catch this when it happens and just just skip the mod. I'd rather have a warning in the log file and have modlauncher skip the mod then have it all crash. I'm not sure how difficult it is to do this.
  8. I'm surprised putting things in init doesn't cause a bunch of class frozen problems with javassist edits. Now, if you were careful and didn't use any WU classes it could work out. It's clearly setup that way in ago's creature demo and that has worked for some time.
  9. I'm make slow but steady progress with this. I fixed all the early loader problems by relocating code and using long wurmId's instead of wurm objects. Here are some new questions: 1. I'd like to run object clean up code to handle edge cases. Every 6 hours or so I want to check that the GhostTower objects have a matching Wurm item object and if that is lacking remove the tower. I can inject the needed code into say Item.poll() but I don't understand the polling frequency. And I need this to make a proper RNG roll that success about every 6 hours. 2. I foresee some doofus using these to grief people. I'm pretty sure they will attack other players at the moment. Also, it would be easy to build a tower next to a deed and kill all the animals on it. Currently I'm think about these limitations: Ghosts won't attack targets of the same kingdom as the player asking for help. No attacking hitched creatures. does branding make an animal of the same kingdom? things like branding, cared-for, tame, equipped-with-gear are all possible filters for blocking. Any other ideas? 3. Where do others put creature template creation? I put mine in onServerStarted() but that seem too late.
  10. One could make a new recipe that creates booze by simply cooking ingredients in a cooker. Although, that might be too fast. Along the lines of this fast, one could probably add a simple creation entry to make it. If we want to just speed up Wurm's booze production it's going to take a bunch of bytecode hacking as there is a lot of this kind of thing in pollDistilling and pollFermenting. They are RNG events tied in with polling frequency in order to achieve some desired overall distill or fermentation time. ////////////////////// //if (Server.rand.nextInt(20) == 0) { // this.pollFermenting(); //}
  11. I started to make a scriptrunner javascript mod for this (which is below in the code section) but I ran into a problem where it makes 3kg leathers. That is the standard weight for a leather. I can't figure out how to reduce the weight of the finished product using CreationEntryCreator.createSimpleEntry(). Note that setUseTemplateWeight() doesn't seem to do anything. One could make a custom action performer mod to do this but that is more then I wanted to do. var CreationEntryCreator =; var SkillList =; var ItemList =; var CreationCategories = var Logger =; var logger = Logger.getLogger("com.joedobo27.scriptRunnerMods.pelt-to-leather-creation"); function onServerStarted() { var creation = CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.lye, ItemList.pelt, ItemList.leather, true, true, 0.0, false, false, CreationCategories.RESOURCES); creation.setDepleteFromSource(200); creation.setDepleteFromTarget(200); creation.setUseTemplateWeight(true);"Pelts can be converted to leather with lye."); } If you want to use this save the code as a .js file and put it in the onServerStarted scriptrunner directory. It may look something like this: WU\WU-Server\mods\scriptrunner\scripts\onServerStarted
  12. This server mod (for use with Ago's server modlauncher) will add custom guard towers designed for PvE and especially folks who would like the option to not fight . The primary goal with these is to have simple towers not subjected to vanilla WU tower mechanics. My goal is to have few restriction over them. The server owner will be able to configure guard strength. This customed strength could be anything between not being able to kill a rat all the way to one hit killing a venerable red dragon. After asking for help within the tower's range a guard will be created right on top of the mob and immediately start attacking it. It's a ghost so they can just appear wherever, right? Source on GitHub: No releases at the moment as it's not ready. Although, the code is on github if you wanted to clone it and mess around. Requires I could use some help at this point (1/28/2019). #1) The onPlayerMessage() modloader hook so I can trigger events when players ask for help is loading WU bases classes too early and causing an error: java.lang.RuntimeException: com.wurmonline.server.players.Player class is frozen There is a bunch of these too: [07:25:23 AM] WARNING org.gotti.wurmunlimited.modloader.EarlyLoadingChecker: Mod GhostTowerGuardMod loaded server class com.wurmonline.server.creatures.Creature during phase load When I remove the PlayerMessageListener interface and its required methods the error goes away. #2) Also, I"m not sure if creature AI can be setup to destroy itself if its target no longer exists. I want to create a ghost, have it target and attack the mob. Once the target is dead have the ghost disappear and delete itself. I'm not asking you to do this. I just want to know how difficult it is before I start digging into it. I've never done anything with creature AI.
  13. Since when did we decided it was okay to make games less fun? If no one wants to use it, it should speak volumes as to how good the addition actually is. It's worth noting that I'm going to do exactly what the OP wants in WU with a mod.
  14. -1 on the system. I was going to commend why until I saw Retrograde going on and on. Rolf your making a mistake letting that person to do what he does.
  15. I keep seeing people mention fishing afk and I'd like to point out that is a terrible idea to do. I was fishing semi-afk once. I saw the macro question popup. I didn't answer it right away but did answer it about 15 minutes later. I got the question right. low and behold my priest Tarq was banned the next day for Macro. So be it, I don't like talking to GM's so I just moved on. But I'd like to point out its a terrable idea to think you can fish afk. You need to be able to respond the question right away or the GM's will ban you. btw, I'm not at all excited for this convoluted fishing system but lucky I'll just mod it out (or mod the old system back in) in WU.