DwarfCraft 4.2.1

Player progression plugin with skills that are improved by training with npcs (not xp)

  1. Jessy1237
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    Contributors:
    Drekryan
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Please post all issues on the Github page(under the issues tab on github)
    Description:
    DwarfCraft is an RPG plugin that allows players to improve their characters skills and capabilities. Players can pay trainers to improve their skills, which provides benefits such as increased weapon damage, decreased tool wear, increased drops from blocks or mobs, etc. Because of the training system, DwarfCraft can provide an interesting and fun RPG base for Survival MP servers that will remain relevant and interesting for casual and intense players alike. The races brought upon by this plugin can be used in very interesting ways. You could add back story to the races and make your world be at war between the races or you could have a peaceful world where all races live in harmony.

    Features:
    • Players may choose to play as any race you choose. The default races i have provided are Human, Gnome, Dwarf and Elf. Switching resets all skills. The race names are entirely configurable. Players will default to the default race in the config if not they will be forced to chose a race before they can level anything.
    • Players use the ItemGUIs (Second Image) to train and deposit items with trainers. Cyan deposits all available required items to the trainer. Lime green trains the skill, while Cactus green trains the skill and then deposits any leftover items to the trainer. Individually clicking an item just deposits that item type to the trainer.
    • All settings, skills, effects and races are fully customisable. The level cap could be 1000 if you wanted it to however it is recommended to keep it at level 30 unless you are adept enough to alter the CSV files accordingly.
    • Races allow players to specialize in certain skills which allows them to train it past the vanilla level. i.e. Human's (smithing, cooking and farming), Elves (Combat and Hunting), Dwarves (Mining and Excavating) and Gnomes (Brewery and Crafting)
    • Races are fully customisable to every extent. You can add up to 9 races but i highly reccommend to have around 4 otherwise the races wont have a distinct personality to them.
    • The plugin contains 40+ skills that progress from level 0 (worse than normal) to level 30 (extremely proficient). Each skill has several effects. Most effects reach par at skill level 5. New supported skills will be released.
    • Skills are improved by paying a training cost to a trainer. Server admins may place trainers and customized messaging NPCs. Skill costs are increased with level and balanced to encourage specialization. Example: To train "Pickaxe Use" from 0 to 1 cost 16 cobblestone. To train from 15 to 16 cost 640. At level 0 pickaxes degrade 20% faster than normal, at level 20 they degrade about 45% slower.
    • A trainer can be almost any EntityType. I.E. the fishing trainer could be a squid.
    • Skills and Effect details are easily found through in-game commands.
    Github: Here
    [NOTE] There are pre-releases available on github however they could be unstable and buggy.

    Requirements:
    • Vault
    • Citizens
    • A Permissions Plugin that is supported by Vault
    • Spigot

    Original Authors' Thread Page: Here

    PlaceHolder API plugin support:
    Basic PlaceHolders

    --------------------------------------------------------------------------------------------------------------------------

    %dwarfcraft_maxskilllevel% - Displays the maximum level a player can level a skill to.

    %dwarfcraft_racelevellimit% - Displays the maximum level a player can level a skill to for when their race doesn't specialise in a skill

    --------------------------------------------------------------------------------------------------------------------------

    Player PlaceHolders

    --------------------------------------------------------------------------------------------------------------------------

    %dwarfcraft_playerrace% - Displays the player's race.

    %dwarfcraft_playerlevel% - Displays the player's level

    --------------------------------------------------------------------------------------------------------------------------

    For Plugin Developers:
    The API in DwarfCraft is slowly coming along. Everything should be accessible if you make an object of the plugin through spigot. You can have a look through the source code if it helps. Also your IDE should tell you what most methods do. A Javadocs is in progress. If you need any help just PM me.

    Currently there are six events, DwarfLevelUp, DwarfDepositEvent, DwarfEffectEvent, DwarfRaceChangeEvent, DwarfLoadSkillsEvent and DwarfLoadRacesEvent.
    DwarfLevelUpEvent is fired whenever a player levels up a DwarfSkill.
    DwarfDepositEvent is fired whenever a player deposits item for a DwarfSkill to a trainer.
    DwafEffectEvent is fired whenever an effect is fired. i.e. whenever DwarfCraft alters a mob drop, crafting recipe, block drop, etc.
    DwarfRaceChangeEvent is fired when a player's race is attempted to be changed. (Just before the race change is saved into the database)
    DwarfLoadSkillsEvent is fired just after all the skills are read from the csv files.
    DwarfLoadRacesEvent is fired just after the races.config file is read.

    Here's an example of how to utilise DwarfCraft.
    Code (Java):
    public class Companion extends JavaPlugin implements Listener {

        private DwarfCraft dwarfcraft;

        @Override
        public void onDisable() {
        }

        /**
         * Called upon enabling the plugin
         */

        @Override
        public void onEnable() {
            PluginManager pm = getServer().getPluginManager();
            if (getServer().getPluginManager().getPlugin("DwarfCraft") == null || getServer().getPluginManager().getPlugin("DwarfCraft").isEnabled() == false) {
                System.out.println("[Companion] Couldn't find DwarfCraft!");
                System.out.println("[Companion] Companion now disabiling...");
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
            dwarfcraft = (DwarfCraft) pm.getPlugin("DwarfCraft");
            System.out.println("[Companion] Hooked into DwarfCraft!");
            pm.registerEvents(this, this);
            System.out.println("[Companion]" + getDescription().getName() + " version " + getDescription().getVersion() + " is enabled!");
        }

    public void onPlayerInteract(PlayerInteractEvent event) {
            DCPlayer player = dwarfcraft.getDataManager().find(event.getPlayer());

            if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
                   if(player.getRace().equalsIgnoreCase("Dwarf")) {
                         //DO SOMETHING HERE
                  }
            }
        }
    }

    Commands & Permission Nodes:
    The commands shown below are all sub commands of the base command DwarfCraft. i.e. "/DwarfCraft <subcommand>"
    For Example "/DwarfCraft SkillSheet"

    Basic Commands

    --------------------------------------------------------------------------------------------------------------------------

    SkillSheet - Displays your skillsheet.

    Info - Displays a General Info Page about DwarfCraft.

    Rules - Displays the set Server Rules in the DwarfCraft config.

    SkillInfo - Displays the Progress/Info of the specific Skill of that player.

    Race - Displays the DwarfCraft Race GUI which displays a players race information, or changes it.

    EffectInfo - Displays the Effect of the specified skill of the specified player.

    Tutorial - Gives the player the DwarfCraft Pocket Guide

    --------------------------------------------------------------------------------------------------------------------------

    Admin Commands

    --------------------------------------------------------------------------------------------------------------------------

    Debug - Changes the Debug Level the less it is the more Debug Messages you will see.

    Reload - Reloads DwarfCraft.

    Race - Allows an admin to manually change a players race.

    Tutorial - Allows an admin to give a player the DwarfCraft Pocket Guide

    List - List all the trainers that are on the server.

    SetSkill - Sets the level of the specified skill on the specified player.

    Create - Creates a DwarfCraft Trainer at your location.

    --------------------------------------------------------------------------------------------------------------------------



    Permissions Nodes:

    dwarfcraft.norm.dwarfcraft
    • This base command permission node is required for all sub commands to work

    dwarfcraft.norm.commandname
    • This permissions node is only for the specified Basic Commands.

    dwarfcraft.norm.race.racename
    • This permissions node is for races, if the player doesn't have the perm they can't change to this race. The race name has to be in lowercase.

    dwarfcraft.op.commandname
    • This permission node is only for the specified Admin Commands.

    Skills:
    Tool Use Skills: These skills impact how quickly your tools will degrade. High levels will enable you to get as much as three times as many uses out of shovels, axes, and picks. See also Plowman and Swordsman skills.
    • [1] Pickaxe Use - Pickaxes
    • [2] Shovel Use - Shovels
    • [3] Axe Durability - Axes
    • (Repeat) [6] Fisher Man - Rod Durability and Quantity of Fish.

    Harvesting Skills: There are many skills that effect the rate at which you gather materials from blocks such as stone, ores, dirt, sand, gravel, and logs. Higher skill levels will drop several of the desired block, and will increase the chance that you instantly break what you are digging or chopping.

    • [11] Excavator - Cobblestone instant-break
    • [12] Quarry Worker - Cobblestone quantity
    • [13] Ore Miner - Gold, Coal and Iron quantity
    • [14] Exotic Miner - Emerald, Lapis Lazuli, Diamond, and Redstone quantity
    • [17] Nether Miner - Quartz, Glowstone and Netherrack quantity.
    • [21] Sand Digger - Sand quantity and instant-break
    • [22] Gravel Digger - Gravel and Flint quantity and instant-break
    • [23] Dirt Digger - Dirt quantity and Dirt/Grass instant-break
    • [31] Lumberjack - Log quantity and instant-break

    Farming Skills: Several skill handle how effective you are at farming wheat or gathering other plant materials. The Plowman skill also affects the durability of plows. Note that in DwarfCraft it is much harder to gather both seeds and wheat, so level 0 farmers will not be able to provide an endless supply of bread.

    • [4] Seed Gatherer - Plow durability and Seed Quantity from hoeing grass.
    • [5] Melon Farmer - Melon Slice Quantity from Melon Blocks.
    • [6] Fisher Man - Rod Durability and Quantity of Fish.
    • [41] Wheat Farmer - Quantity of Wheat and Seeds from reaping grown Crops
    • [42] Exotic Farmer - Cane(Reed), Cactus and Cocoa Beans Quantity
    • [43] Vegetable Farmer - Potato and Carrot Quantity.
    • [74] Florist - Flowers and Pumpkins Quantity
    • (Repeat) [91] Alchemist - Can sometimes make extra potions and nether wart quantity.
    • [80] Shearer - Quantity of Mushrooms when shearing Mooshrooms and quantity of Wool when shearing Sheep.

    Crafting/Smelting Skills: The crafting skills affect how many of an item you craft when using the normal recipe at a crafting bench. Many crafting skills have additional effects. The Smelting skills affact how many extra items are dropped from furnaces when smelting items.

    • [7] Stone Shaper - Stone tools
    • [8] Smelter - When smelting gold/iron ore, extra ingots and stone can be dropped.
    • [9] Iron Forger - Iron tools
    • [10] Diamond Forger - Diamond tools
    • [15] Wood Carver - Wooden tools
    • [16] Gold Forger - Gold tools
    • [32] Wood Splitter - Planks and Sticks
    • [51] Mason - Cobblestone Tiles and Steps and Smooth Stone Tiles
    • [53] Wood Crafter - Ladders, Fences, Doors, and Wood Tiles and Steps
    • [61] Book Maker - Books
    • [62] Brick Maker - Brick Blocks
    • [63] Demolitionist - TNT and damage from explosions.
    • [65] Rail Worker - Rail sections
    • [66] Baker Man - Bread, Pumpkin Pie, Cookies, Cake, and Baked Potatoes
    • [67] Fletcher - Arrows
    • [68] Grillardin - When smelting raw meets, extra cooked meats can be dropped.
    • [86] Exotic Armour - Gold and Diamond armour
    • [88] Sign Maker - Signs
    • [89] Torch Maker - Torches
    • [91] Alchemist - Can sometimes make extra potions and nether wart quantity.

    Damage Reduction Skills: In addition to Demolitionist reducing damage from explosions, there are skills that effect fire, falling, suffocation, and lava damage. There are also skills that affect the durability and crafting count of armor.

    • (Repeat) [63] Demolitionist - Damage from explosions
    • [64] Fire Starter - Damage from fire, durability of Flint and Tinder
    • [72] Climbing - Damage from falls, short fall forgiveness
    • [83] Scout - Leather armor durability, amount crafted, projectile damage reduction.
    • [84] Soldier - Iron armor durability, amount crafted

    Combat Skills: The Swordsman, Axe Swinger and Bowman skills affect the damage you do with those weapons. The swordsman skill also has a durability effect.

    • [85] Archer - Arrow Damage and Enemy Feather/Arrow Drops
    • [87] Swordsman - Sword Damage and Durability
    • [101] Axe Swinger - Axe Damage

    Hunting Skills: These skills allow a player to gather more resources for killing enemies with sword or bow. Note that this mod completely removes drops from creatures killed in any other way, to prevent "automated mob farming"

    • [76] Nether Hunter - Blaze, Magma Cube, Pig Zombie, Ghast
    • [81] Animal Hunter - Pig, Cow, Sheep, Chicken
    • [82] Monster Hunter - Creeper, Skeleton, Spider
    • (Repeat)[85] Archer - Zombie

    Exploration Skills: These skills benefit activities related to exploring, travel, and adventure. The effects vary widely, but should result in more successful forays into the wilderness, and more valuable materials brought home.

    • [71] Sailor - Boat Travel Speed and Boat break results (sailor>15 allows recoverable boats)
    • [73] Survivalist - Health gained from uncooked pork, fish, and mushroom stew
    • [75] Dungeon Delver - Monster Spawners can drop Iron, Gold, Diamond, and Lapis blocks

    Other Skills: See details -
    • [99] Noble - Dwarf Fortress nobles are useless. DwarfCraft nobles mine obsidian better, and it costs 100s of eggs to train. Any player that collects 100s of eggs and spends all day mining obsidian is just like a Dwarf Fortress noble.

    List of Items Required:
    • [1] Pickaxe Use - Cobblestone
    • [2] Shovel Use - Dirt
    • [3] Axe Durability - Log
    • [4] Seed Gatherer - Seeds
    • [5] Melon Farmer - Melon Slices
    • [6] Fisher Man - Raw Fish
    • [7] Stone Shaper - Stone tools
    • [8] Smelter - Lava Bucket/coal
    • [9] Iron Forger - Iron tools
    • [10] Diamond Forger - Diamond tools
    • [11] Excavator - Cobblestone
    • [12] Quarry Worker - Cobblestone
    • [13] Ore Miner - Coal/Iron Ingot/Gold Ingot
    • [14] Exotic Miner - Emerald/Lapis Lazuli/Diamond/Redstone
    • [15] Wood Carver - Wooden tools
    • [16] Gold Forger - Gold tools
    • [17] Nether Miner - Quartz/Glowstone Dust/Netherrack
    • [21] Sand Digger - Sand
    • [22] Gravel Digger - Gravel
    • [23] Dirt Digger - Dirt
    • [31] Lumberjack - Log
    • [32] Woodsplitter - Log
    • [41] Wheat Farmer - Wheat/Seeds
    • [42] Exotic Farmer - Reed/Cactus/Cocoa Beans
    • [43] Vegetable Farmer - Potatoes/Carrots
    • [51] Mason - Half-steps
    • [52] Glass Worker - Glass
    • [53] Wood Crafter - Plank/Stick
    • [61] Book Maker - Paper/Books
    • [62] Brick Maker - Bricks/Brickblock
    • [63] Demolitionist - Gunpower/TNT
    • [64] Fire Starter - Fint + Tinder
    • [65] Rail Worker - Powered Cart
    • [66] Baker Man- Cake Block
    • [67] Fletcher - Arrows
    • [68] Grillardin - Cooked Porkchop/Steak/Cooked Fish
    • [71] Sailor - Clay Block
    • [72] Climber - Pumpkin
    • [73] Survivalist - Mushrooms
    • [74] Florist - Flower
    • [75] Dungeon Delver - Saddles
    • [76] Nether Hunter - Blaze Rods
    • [80] Shearer - Shears/Wool
    • [81] Animal Hunter - Pork Leather Wool
    • [82] Monster Hunter - String/Gunpowder
    • [83] Scout - Leather Breastplates
    • [84] Soldier - Iron Breasplates
    • [85] Archer - Feather/Flint
    • [86] Exotic Armor - Gold and Diamond armour
    • [87] Swordsman - Leather/String
    • [88] Sign Maker - Signs
    • [89] Torch Maker - Torches
    • [91] Alchemist - Nether Warts
    • [99] Noble - Eggs
    • [101] Axe Swinger - Rotten Flesh/String

    How to create Skills:
    This is here to help you create some new skills that are based upon the already made skill "skeletons". This page will explain what each part of the .csv files mean. First thing first there is a relation between skills and effects. Skills are what the trainer teaches the player but effects are what the skills do. If you had a skill with id 6 your effect id's can range between 60 - 69, this means Effect 0 of skill 6 to Effect 9 of skill 6, etc.

    Skill csv:
    ID: The id of the skill
    Name: The Name for your skill
    Item1: The first item id for leveling your skill
    Item1Base: The base amount required for leveling
    Item1Max: The maximum amount required for leveling the skill.
    Item2: The second item id for leveling your skill.
    Item2Base: The Base amount for leveling your skill.
    Item2Max: The maximum amount required for leveling the skill.
    Item3: The third tiem id for leveling your skill
    Item3Base: The Base amount for leveling your skill.
    Item3Max: The maximum amount required for leveling the skill.
    Held: The id for the item held by the trainer that knows the skill.

    Effects csv:
    ID:
    The skill id and the Effect number e.g. if your skill id is 60 then your first effect would have an id of 600.
    BaseValue: The Base Value of the effect. e.g. Tall_Grass drops 0.6 seeds when broken.
    LevelIncrease: This is the increment that is added to basevalue of the effect depending on your level. This can be a negative value for example in tool durability you wouldn't want your tool to be destroyed more so the increment is a negative value.
    LevelIncreaseNovice: I am not too sure what this does but its generally a considerably smaller value of the LevelIncrease or 0.
    Min: The minimum that the effects value can reach e.g. (BaseValue + LevelIncrease) * skill can't be less than 5.
    Max: The maximum that the effects value can reach.
    Floor: If true floors the effect value. i.e. always rounds down to a whole integer.
    Exception: If true then between the Low skill level and the High Skill level it will only give the ExceptionValue for the effects value. (i.e. between lvls 0-5 only 0 iron ingots are dropped).
    ExceptionLow: The lower integer of the interval for the ExceptionValue to be applied to the effect.
    ExceptionHigh: The higher integer of the interval for the ExceptionValue to be applied to the effect.
    ExceptionValue: The value that will replace the effect value when the players skill level is in between the ExceptionLow and ExceptionHigh interval.
    NormalLevel: The vanilla level of the effect e.g. 1 cobblestone is dropped when stone is broken.
    Type: This is what the effect is Based on below this there will be a list of Effect Types.
    OriginID: The Block id or item id of the effect. If the Type is MOBDROP or SHEAR then a mob can be specified by name from the Spigot EntityType.class. If no mob is specified then it applied the effect on all mobs that drop the outputID.
    OutputID: The output item id of the effect once the block is broken of the item is activated.
    RequireTool: True if your skill/effect requires a tool to activate e.g. Mining - Pickaxe.
    Tools: the list of tools that can activate the effect if true. For Example: 270 274 257 285 278. This only has a space between item ids.

    Effect Types:
    BLOCKDROP - An itemstack is dropped when a block is broken
    MOBDROP - An itemstack is dropped when a mob is killed
    SWORDDURABILITY - Sword durability
    PVPDAMAGE - Player vs. Player Damage, all damage effect types either increase of decrease the damage taken.
    PVEDAMAGE - Player vs. Entity Damage
    EXPLOSIONDAMAGE - Explosion Damage
    FIREDAMAGE - Fire Damage
    FALLDAMAGE - Fall Damage
    FALLTHRESHOLD - Unknown
    PLOWDURARBILTY - Durability of hoes
    TOOLDURABILITY - General Tool durabilty
    EAT - When a player eats determines how much hunger is gained
    CRAFT - When crafting determines the amount is crafted per recipe
    PLOW - An itemstack is dropped when grass is plowed
    DIGTIME - Something to do with digging.
    BOWATTACK - When a player attacks with its bow, how much damage is done.
    VEHICLEDROP - If your boat or minecraft is dropped or destroyed.
    VEHICLEMOVE - How fast or if you can move your vehicle.
    SPECIAL - Special and unknown
    FISH - When a player fishes with their rod an itemstack can be dropped as well as their fish.
    RODDURABILITY - The amount of durability that is lost when a player successfully catches fish.
    SMELT - The amount of items dropped out of the furnace after smelting.
    SHEAR - The amount of items dropped when shearing animals

    Skill Submission:
    To submit skills for me to add to DwarfCraft all you have to do is follow the simple template below and the specified instructions. You can submit a request because the base skill code isn't implemented or you have to submit an edited .csv file with your skill in it.

    Template:
    Skill Name:
    Skill Description (Brief):
    Skill.csv link (if not a request):
    Effects.csv link (if not a request):

    If you follow this simple template then i will take your skills into consideration and will hopefully add it into the official skill database. If you have multiple skills that you have added or requested don't bother making two posts just do more Skill Name's and Skill Description's. For Example:
    Skill Name: skill1
    Skill Description: Blah
    Skill Name skill2
    Skill Description Blah

    Downloads Prior to MC1.8:
    (Previous versions were built against CraftBukkit, Downloads on bukkitdev page.)


    Donations:
    [​IMG]

    Changelog Prior to MC1.8:
    V2.0
    • Updated the NPCLib
    • Now built against spigot instead of craftbukkit.
    • Fixed the plugin always converting the database of trainers.

    (Remainder of the Changelog on my old bukkit forum page)

    Permission to continue the plugin from the original authors:

    [​IMG]

Recent Reviews

  1. Shadowpauler
    Shadowpauler
    5/5,
    Version: 4.1.6
    This would be great, but the fact that 99% of my plugins are purely unique, this plugin isn't compatible at all with my server. But amazing idea!
  2. scarce
    scarce
    5/5,
    Version: 4.1.4
    Great concept of a plugin and the authors are great! Found a bug that was quite annoying and left it on github and they were able to find and fix it almost instantly, plus the features of the plugin are super unique and add flavor to my rpg server.
  3. doitliketyler
    doitliketyler
    2/5,
    Version: 4.1.3
    This plugin used to work without a hitch but lately with all the new features bug after bug has arisen. I diligently reported these bugs to the devs and they were getting them fixed until they reached a couple they couldn't figure out.

    One of the bugs I reported is game-breaking. Basically, after using crafting tables or furnaces the players are unable to pick up ground items without having to relog every 5 minutes. The first time I reported this they were able to replicate it and put out a "fix" but the bug came back and now they claim it's me that's not giving them enough information and they can't replicate.

    This plugin has no business being on a production server and I would avoid it until these devs stop breaking what once was a stable plugin. Thanks for wasting all my time and effort fitting your plugin into one of my servers.
    1. Jessy1237
      Author's Response
      Sorry that we couldn't live up to your standards but not answering our questions or supplying a stack trace error when requested isn't enough information to resolve issues. Not to mention that under your specified conditions we couldn't replicate the issue as you described.
  4. Shadowpauler
    Shadowpauler
    5/5,
    Version: 4.0.3
    Very well created! My staff team from Setaria loves the plugin, and couldn't live without it! No errors or problems so far, it's free, and highly creative! I hope to see more soon, also what would be a great idea is adding MCMMO integration and making skills for them, which would be more awesome :D
  5. Rediac
    Rediac
    4/5,
    Version: 3.1.5
    Great plugin, able to create your own races and skills. It really adds a interesting aspect to player interaction! Cant wait for 1.11.2 update!
  6. Nathan2439
    Nathan2439
    5/5,
    Version: 2.6.3
    Really good plugin, i dont think it gets the credit it deserves. the owner works hard on the plugin, and it is regularly updated,
    Its great for any RPG server.
    good plugin, m8, 10/10
  7. Bolean
    Bolean
    5/5,
    Version: 2.1.5
    WOW NICE IDEA
  8. CyranoTrinity
    CyranoTrinity
    5/5,
    Version: 2.1.5
    Nice idea! One of the best and free Pickaxes plugin out there. 10/10 would recommend!