DEV Community

Fisher for SupremeObsidian

Posted on

Devblog 3

What's new this week in SupremeObsidian.

This week we worked an absolute ton on professions, as well as worked on biomes and how they work within our terrain generation system.

Fisher

This week I did some minimal work on spells, getting different specific subclasses working. Each player class type will have a different set of spells that they can use. Inside of those sets will be other different types, like specializations.

SpellTypes

Again, very primitive, early work on this, but still laying the groundwork for that.

This week I mostly contributed to the resourcepack building script that I talked about in detail in this post. This makes it very easy for us to host our resourcepacks in a Github repository, so we can all make changes and update it automatically through Github Actions.

I also started updating our Discord bot with new code, and prepared a new branch for Fyrlex, one of our new Developers, and I to start working on the bot rewrite.

Discord Rank Separators
This is an image of the new rank specific separators that I implemented just last night.

pssst we are gonna have a towny server soon
did anyone hear something? not I.

Async

This week I made the world more realistic by making it use more octaves for noise, and also added in Frational Brownian Motion, and made the oceans slightly steeper.

Height map
This is an example of a height map that uses random noise!

Fyrlex

Disclaimer, this is Fisher speaking for Fyrlex
This week, we got a new Developer by the name of Fyrlex. He's gonna be working on our discord bot, as well as his own. I hear he's got a lot of experience in this area and can't wait to collaborate with him rewriting the current iteration of our bot.

violetskyzz

Still Fisher speaking
This week, violet spent a lot of time working on the textures and models for the Professions. Here's a good amount of textures that have been made now.

Different Grindstone Speeds
Different Grindstone Speeds are shown here

New Models
Here we see the Bucket with nothing, with water, the bellows for the blacksmith furnace, and all of the different new types of ingots.

Bellow animation
Here we see the new bellow animation for the blacksmith furnace.

Kennedy

New Items and Blocks

Each new item and block that Kennedy has added this week is accessible with the command "/ci"

Blacksmith Grindstone (Block)

The Blacksmith Grindstone will be used by the blacksmith profession to sharpen swords and axes- possibly tools as well! The sharpness of an item increases the temporary lifespan of that item by increasing the item's instantaneous durability. However, every time an item is sharpened, the max durability of that item is decreased by half of what the item gained back in durability. Therefore, items are doomed to break... eventually, but it can be delayed with sharpening.

Example: A sword with 100/500 durability is sharpened. The sword now has 200/450 durability.

This Grindstone is also animated using custom model data when it is being used. There will also be an animation for the item being sharpened in the next update to the grindstone.

Blacksmith Furnace (Block)

The Blacksmith Furnace will be used by the blacksmith profession to smelt ores into Metal Ingots. Only Metal Ores can be placed into the crafting slot of the furnace. Metal Ores must each reach a specific Melting Point in the furnace to turn into ingots. The furnace's heat can be initially set using different tiers of burnable fuel. (Not implemented yet) Each Fuel will have a different base burning temperature. The furnace's temperature can then be increased from its base temperature using a Blacksmith Bellow.

Furnace

There will also be an animation for the ore being smelted, and placed into the furnace in the next update to the furnaces.

Blacksmith Cauldron (Block)

The Blacksmith Cauldron will be used by the blacksmith profession to cool down hot items that were just crafted on the Blacksmith Anvil. Hot items cannot be equipped or used until cooled. Also, the attributes of that item/weapon will become visible once that item/weapon is cooled. A Blacksmith Cauldron must be filled with water using a Water Pail (See unimplemented items) before it can be used. When used, a "cooling" animation plays.

Cauldron Animation

Blacksmith Anvil (Block)

The Blacksmith Anvil will be used by the blacksmith profession to choose and craft hot armor and weapons from Metal Ingots. A Blacksmith Hammer is necessary to craft items on the anvil. When crafting, a "hammer" animation will play with the blacksmith hammer. The item crafted on the anvil will be a "Hot" variant of its selected parent item, which is either a piece of Armor or a weapon. This "Hot" item cannot be used or equipped, until cooled in the Blacksmith Cauldron.

Each item has a recipe cost of 1-5 ingots of any Metal Ingot. This means you can use any combination of metal alloys to craft armor, and the attribute boosts will stack.

Anvil

Metal Ingots and Ores (Items)

Metal Ingots will be used by the blacksmith profession to craft items. They are obtained by smelting ores in a Blacksmith Furnace. You can use any combination of metal alloys to craft Armor, and the attribute boosts will stack. The melting point is the temperature at which the furnace needs to be to melt the metal's ore into Metal Ingots.

Example: An item created with 4 aluminum ingots (1% boost each) will have a total of +4% attribute boost applied to the final item.

Ingots

Blacksmith Bellow (Handheld Item)

The bellow is an animated hand-held tool that can be used by the blacksmith profession to increase the instantaneous temperature of a Blacksmith Furnace. The rate at which it increases temperature is still undetermined. It will likely be dependent on the level of the blacksmith themselves.
All professions can use it by clicking or holding down their right mouse button to blow air particles.

Bellow

Hot Items (Items)

Hot Items are crafted on a Blacksmith Anvil, and cannot be worn or used until cooled in a Blacksmith Cauldron. Attributes are inherited on that item, but not visible to the player. The attributes will become visible once that item is cooled. They can be differentiated from their cooled counterparts by a red texture overlay on their icon, and "Hot" in their ItemMeta displayname.

Hot Chestplate

Armor (Wearable Items)

Armor is a wearable item that is used by different character classes to defend against attacks from monsters or other players in PVP. Each piece of armor has a level, attributes, initial durability, and a specific player class by whom which the armor can only be used by. Armor can either be crafted on a Blacksmith Anvil, purchased from other players, or found in loot.

Armor Craft/Drop Rates

Drop rates for Armor is increased by crafting it on a Blacksmith Anvil:

Item Level Natural Drop Rate Anvil Drop Rate
1 1.80% 1.6%
2 1.78 1.59%
3 - 99 ... ...
100 0.19% 0.39%

Natural Drop Rate = (5-((Level-1)0.045))/2.7725
**Anvil Drop Rate
* = -0.0254585*(Level)+(5.045/1.5)

Chestplate Lore

The Armor's attributes, materials, and required class are all included in the armor's lore.

The Armor's star-rating is determined by calculating the total "score" accumulated by armor level, positive attributes, initial durability, and material used compared to a piece of armor with "perfect" armor level, attributes, initial durability, and material.

The Armor's current durability is shown in green on the durability bar in the item's lore. Durability that can be regained by repair or sharpening (weapons only) is indicated by grey on the durability bar. Durability that cannot be regained due to sharpening (weapons only) or [OTHER REASONS REDACTED] is indicated by red on the durability bar.

The length of the divider line between item information and its attributes is equal to the length of the longest line of lore applied to the item.

Blacksmith Items not yet implemented

Blacksmith Hammer

The Blacksmith Hammer is a tool used by the blacksmith profession to craft items with the Blacksmith Anvil. It can be found in natural drops around the world. There are 5 tiers of Blacksmith Hammers that can be acquired, each with different attributes.
The attributes of each tier of Blacksmith Hammer can be seen below:

Name Crafting Time Reduction Durability
Broken Hammer -50% 200
Old Hammer -25% 300
Firm Hammer 0% 400
Sturdy Hammer +25% 500
Shiny Hammer +50% 600

Hammer

Water Pail

A Water Pail is a handheld item that can be used to transport water and fill Blacksmith Cauldrons.
There will be an animation when filling a Water Pail at a water source block, or another full cauldron.

Water Pail

Profession Crafting Mechanics

SupremeItems and CraftBlocks

Kennedy and Fisher have both been working on implementing into the core an item builder called "SupremeItem" for creating and managing custom items with specified tags, persistent data, and other cool features. The items currently implemented with this class can be accessed with the command "/ci"

Custom Items Menu

Each custom item is initialized and can be referenced as an enum, as seen here:

Custom Item Enum

BLACKSMITH_BELLOW(                                                                      // CUSTOM ITEM ENUM IDENTIFIER
            "Bellow",                                                                   // CUSTOM ITEM NAME
            ItemStackBuilder.of(Material.IRON_AXE)                                      // CUSTOM ITEM MATERIAL
                    .name("Bellow")                                                     // CUSTOM ITEM            
                    .lore("Left-Click on blast furnace to increase its heat.")          // CUSTOM ITEM LORE/DESCRIPTION
                    .build(),                                                           // RETURNS ITEMSTACK
            new HashMap<ItemFlags, Object>() {                                          
                {
                put(ItemFlags.CRAFTABLE_AT, ItemCraftLocations.BLACKSMITH);             // ITEM TAGS
                }
            },
            new HashMap<String, String>() {                                             // PERSISTENT DATA
                {
                    put("custom-item", "true");                                         
                    put("custom-model", "4");                                           
                }
            }
    )

Enter fullscreen mode Exit fullscreen mode

Kennedy also created an object class called CraftingBlock for creating and managing custom profession crafting blocks that can be associated with SupremeItems. Each CraftingBlock is similarly initialized and can be referenced as an enum as well, as seen here:

CraftingBlock Enum
BLACKSMITH_FURNACE(
            "blacksmith-furnace",                                                                       //NAME
            SupremeItem.BLACKSMITH_FURNACE,                                                             //ASSOCIATED SUPREMEITEM
            new HashMap<String, Object>() {                                                             // DATA STORED IN BLOCK
                {
                    put("blacksmith-furnace", "true");
                    put("block-durability", SupremeItem.BLACKSMITH_FURNACE.getBlockDurability());
                }
            },
            new HashMap<Integer, String>() {                                                            // TUTORIAL STAGES
                {
                    put(1, "Blacksmith Furnace");
                    put(2, "Right-click to smelt ores!");
                }
            }
    )

Enter fullscreen mode Exit fullscreen mode

Any type of Data can be stored in CraftingBlocks as armorstands. These are the methods that can be called from a CraftingBlock:

CraftBlock Static Methods:

Method Use
getCraftingBlockFromSupremeItem(SupremeItem) Returns CraftingBlock from supremeitem associated
getCraftingBlockMaterials() Returns List of materials used by CraftingBlocks
isCraftingBlock(Block) Returns true if block is an instance of CraftingBlock
getCraftingBlock(Block) Returns CraftingBlock for block instance of CraftingBlock.

Inherited Methods:

Method Use
CraftingBlock.getItem() Returns itemstack from supremeitem for this CraftingBlock
CraftingBlock.getSupremeItem() Returns raw supremeitem for this CraftingBlock
CraftingBlock.getTutorialStages() Returns HashMap of tutorial stages for this CraftingBlock
CraftingBlock.getTutorialStage(Stage) Returns String of tutorial stage for this CraftingBlock
CraftingBlock.getBlockId() Returns specific CraftingBlock id for this CraftingBlock
CraftingBlock.getMaterial() Returns material of SupremeItem associated with this CraftingBlock
CraftingBlock.getStandKeys() Returns HashMap of data that this CraftingBlock should be storing in armorstands
CraftingBlock.hasKey(ArmorStand, Key) Returns boolean if ArmorStand has Key
Crafting Bossbar

The CraftingBossBar object allows for displaying progress during crafting tasks.

Bossbar

There are a few methods that can be called to manage a CraftingBossBar:

Method Use
Constructor: CraftingBossBar(EventName, Player, BarColor) Uses parameters to initialize bossbar. Does NOT display bar.
CraftingBossBar.displayBar(Player) Displays the bar for a specific player
CraftingBossBar.displayBar() Displays the bar to initialized player
CraftingBossBar.removeBar() Removes the bar
CraftingBossBar.setProgress(Progress) Sets the bar's live progress out of 1.0
CraftingBossBar.setTitle(Title) Sets the bar's title to format: (%title% + %progress% + "%")
CraftingBossBar.isDisplayed() Returns true if bar is visible for player
Also...

Some features that Kalinox doesn't get to know about yet.

+ added different speeds of grindstone
+ added new grindstone handlers, blacksmith furnace handlers, cauldron animations, bellow animation.
+ new discord branch for bot rewrite.
+ fixed server listing on the discord (amount of players and if online)
+ new discord rank separators.
+ new biomes as well as new noise types, and edits to noise octaves.
+ new craftblock handlers for information on blocks and checking if a block is a certain type with armor stands and custom nbt
- removed the singular grindstone static in place for adding different speeds as well as static.
- removed herobrine
Enter fullscreen mode Exit fullscreen mode

Top comments (0)