Posted September 30, 2017 I saw someone request this elsewhere. I don't want to maintain Javassist/Hookmanager based mods so wrote the code and am putting it here. In addition to the code below, which handles sowing, you'd need to make something almost identical for the TileFieldBehaviour.class so raking is possible. All you need to do is copy the code and change the CtClass's path to reflect "com.wurmonline.server.behaviours.TileFieldBehaviour". Spoiler public void configureMaxSowingSlope(int customMaxSlope){ try { CtClass ctClassTileDirtBehaviour = HookManager.getInstance().getClassPool().get( "com.wurmonline.server.behaviours.TileDirtBehaviour"); CtClass returnType = CtPrimitiveType.booleanType; //Action act, Creature performer, Item source, int tilex, int tiley, boolean onSurface, int heightOffset, // int tile, short action, float counter CtClass[] paramTypes = { HookManager.getInstance().getClassPool().get("com.wurmonline.server.behaviours.Action"), HookManager.getInstance().getClassPool().get("com.wurmonline.server.creatures.Creature"), HookManager.getInstance().getClassPool().get("com.wurmonline.server.items.Item"), CtPrimitiveType.intType, CtPrimitiveType.intType, CtPrimitiveType.booleanType, CtPrimitiveType.intType, CtPrimitiveType.intType, CtPrimitiveType.shortType, CtPrimitiveType.floatType }; CtMethod ctMethodAction = ctClassTileDirtBehaviour.getMethod("action", Descriptor.ofMethod(returnType, paramTypes)); ctMethodAction.instrument(new ExprEditor() { @Override public void edit(MethodCall methodCall) throws CannotCompileException { if (Objects.equals("isFlat", methodCall.getMethodName())) { methodCall.replace("{ $4 = "+customMaxSlope+"; $_ = $proceed($$); }"); } }}); } catch (NotFoundException | CannotCompileException e){ logger.warning(e.getMessage()); } } Share this post Link to post Share on other sites