diff --git a/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/AbstractNode.java b/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/AbstractNode.java new file mode 100644 index 0000000..063c10f --- /dev/null +++ b/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/AbstractNode.java @@ -0,0 +1,44 @@ +/* + * + * AbstractNode + * + * This is the general definition of everything that is allowed inside a node and is called by our system + * + * +*/ + +package jesse.keeblarcraft.AttributeMgr.Nodes; + +import java.util.HashMap; +import java.util.List; + +abstract public class AbstractNode { + + ///////////////////////////////////////////////////////////////////////////// + /// @fn GetNodeTitle + /// + /// @brief The title of your node/skill! + ///////////////////////////////////////////////////////////////////////////// + abstract String GetNodeTitle(); + + ///////////////////////////////////////////////////////////////////////////// + /// @fn GetNodeDescription + /// + /// @brief This will become the hover-over text display of a skill in + /// the skill tree + ///////////////////////////////////////////////////////////////////////////// + abstract String GetNodeDescription(); + + ///////////////////////////////////////////////////////////////////////////// + /// @fn GetDetails + /// + /// @brief This is the general details that may be displayed inside the + /// GUI when the skill tree becomes available to a player. The + /// object is suggested to be treated as such: + /// + /// KEY (String) -> The title of an effect/attribute + /// VAL (List) -> Treated as a list of description + /// attributes. 1 string per description + ///////////////////////////////////////////////////////////////////////////// + abstract HashMap> GetDetails(); +} diff --git a/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/MetalJacket_Node.java b/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/MetalJacket_Node.java new file mode 100644 index 0000000..29090f2 --- /dev/null +++ b/src/main/java/jesse/keeblarcraft/AttributeMgr/Nodes/MetalJacket_Node.java @@ -0,0 +1,51 @@ +package jesse.keeblarcraft.AttributeMgr.Nodes; + +import java.util.HashMap; +import java.util.List; + +import jesse.keeblarcraft.Armor.MetalJacketArmor; +import jesse.keeblarcraft.CustomItems.ItemManager; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.Item; + +public final class MetalJacket_Node extends AbstractNode { + // This is the custom armor set that players will receive if no armor is on & attribute is equipped + public final Item jacketHelm = new ArmorItem(MetalJacketArmor.INSTANCE, ArmorItem.Type.HELMET, new Item.Settings()); + public final Item jacketChest = new ArmorItem(MetalJacketArmor.INSTANCE, ArmorItem.Type.CHESTPLATE, new Item.Settings()); + public final Item jacketLegs = new ArmorItem(MetalJacketArmor.INSTANCE, ArmorItem.Type.LEGGINGS, new Item.Settings()); + public final Item jacketBoots = new ArmorItem(MetalJacketArmor.INSTANCE, ArmorItem.Type.BOOTS, new Item.Settings()); + + public MetalJacket_Node() { + + // Finally register items with game + ItemManager.RegisterItem("metaljacket_helmet",jacketHelm); + ItemManager.RegisterItem("metaljacket_chestplate",jacketChest); + ItemManager.RegisterItem("metaljacket_leggings",jacketLegs); + ItemManager.RegisterItem("metaljacket_boots",jacketBoots); + } + + @Override + String GetNodeTitle() { + return "MetalJacket"; + } + + // Short description of node on hover-event in GUI + @Override + String GetNodeDescription() { + return "MetalJacket affects armor value modifiers or gives player base armor when none is worn"; + } + + // Detailed description of node on click-event in GUI + @Override + HashMap> GetDetails() { + HashMap> ret = new HashMap>(); + + // Filling out description item stuff here + ret.put("durability", List.of ( + "Gives player a base armor set with 3 protection and resistance", + "If armor is being worn, this attribute multiplies each pieces armor value by 120% (rounding up to nearest integer)" + )); + + return ret; + } +} diff --git a/src/main/java/jesse/keeblarcraft/AttributeMgr/SkillTree.java b/src/main/java/jesse/keeblarcraft/AttributeMgr/SkillTree.java new file mode 100644 index 0000000..cc1fbd0 --- /dev/null +++ b/src/main/java/jesse/keeblarcraft/AttributeMgr/SkillTree.java @@ -0,0 +1,4 @@ +package jesse.keeblarcraft.AttributeMgr; + +public class SkillTree { +} diff --git a/src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java b/src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java index 25c4d3b..48c9579 100644 --- a/src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java +++ b/src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java @@ -1,4 +1,8 @@ +<<<<<<<< HEAD:src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java package jesse.keeblarcraft.EventMgr; +======== +package jesse.keeblarcraft.Utils; +>>>>>>>> d94f405 ([5] Initial implementation of some attribute stuff. Nothing in this commit actually works but the game still launches! Will need to move item and armor stuff to a more generic file as well to make it less unique so it can be used broadly. Directory structure extended to add items and resources):src/main/java/jesse/keeblarcraft/Utils/ServerTickListener.java import jesse.CommonServerUtils; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; diff --git a/src/main/java/jesse/keeblarcraft/Utils/ServerTickListener.java b/src/main/java/jesse/keeblarcraft/Utils/ServerTickListener.java new file mode 100644 index 0000000..48c9579 --- /dev/null +++ b/src/main/java/jesse/keeblarcraft/Utils/ServerTickListener.java @@ -0,0 +1,25 @@ +<<<<<<<< HEAD:src/main/java/jesse/keeblarcraft/EventMgr/ServerTickListener.java +package jesse.keeblarcraft.EventMgr; +======== +package jesse.keeblarcraft.Utils; +>>>>>>>> d94f405 ([5] Initial implementation of some attribute stuff. Nothing in this commit actually works but the game still launches! Will need to move item and armor stuff to a more generic file as well to make it less unique so it can be used broadly. Directory structure extended to add items and resources):src/main/java/jesse/keeblarcraft/Utils/ServerTickListener.java + +import jesse.CommonServerUtils; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; +import net.minecraft.server.MinecraftServer; + +// This interface is responsible for the end tick of a server world event tick +public class ServerTickListener implements ServerTickEvents.EndTick { + CommonServerUtils config = new CommonServerUtils(); + @Override + public void onEndTick(MinecraftServer server) { + if (server != null) { + config.SetServerInstance(server); + } + } + + // Static method to register the server tick listener + public static void InitializeServerTicks() { + ServerTickEvents.END_SERVER_TICK.register(new ServerTickListener()); + } +}