diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..6b61ab0
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b536c54
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+# Gradle build system ignores
+.gradle/
+build/
+
+# Other IDE related folders
+.idea/
+.settings/
+
+# MCreator workspace
+.mcreator/
+
+# Minecraft client/server files
+run/
+
+# MacOS system files
+.DS_STORE
\ No newline at end of file
diff --git a/.project b/.project
new file mode 100644
index 0000000..29c4853
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ Darkdays_Mod
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..cfe84dd
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,57 @@
+buildscript {
+ repositories {
+ maven { url = 'https://files.minecraftforge.net/maven' }
+ jcenter()
+ mavenCentral()
+ }
+ dependencies {
+ classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
+ }
+}
+apply plugin: 'net.minecraftforge.gradle'
+apply plugin: 'eclipse'
+
+version = '1.0'
+group = 'com.yourname.modid'
+archivesBaseName = 'modid'
+
+sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
+
+minecraft {
+ mappings channel: 'snapshot', version: '20200514-1.15.1'
+
+ runs {
+ client {
+ workingDirectory project.file('run')
+
+ property 'forge.logging.markers', 'REGISTRIES'
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ examplemod {
+ source sourceSets.main
+ }
+ }
+ }
+
+ server {
+ workingDirectory project.file('run')
+
+ property 'forge.logging.markers', 'REGISTRIES'
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ examplemod {
+ source sourceSets.main
+ }
+ }
+ }
+ }
+}
+
+dependencies {
+ minecraft 'net.minecraftforge:forge:1.15.2-31.2.0'
+}
+
+apply from: 'mcreator.gradle'
+
diff --git a/darkdays.mcreator b/darkdays.mcreator
new file mode 100644
index 0000000..ac81a15
--- /dev/null
+++ b/darkdays.mcreator
@@ -0,0 +1,1092 @@
+{
+ "id_map": {},
+ "mod_elements": [
+ {
+ "name": "SmaelingPickAxeBlockDestroyedWithTool",
+ "type": "procedure",
+ "sortid": 1,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "smaeling_pick_axe_block_destroyed_with_tool",
+ "metadata": {
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ }
+ },
+ {
+ "name": "SmeltingTouch",
+ "type": "enchantment",
+ "sortid": 2,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "smelting_touch"
+ },
+ {
+ "name": "GGwandBulletHitsNull",
+ "type": "procedure",
+ "sortid": 3,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "g_gwand_bullet_hits_null",
+ "metadata": {
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ }
+ },
+ {
+ "name": "GGwand",
+ "type": "gun",
+ "sortid": 3,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "g_gwand"
+ },
+ {
+ "name": "GGwandWhileBulletFlyingTick",
+ "type": "procedure",
+ "sortid": 4,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "g_gwand_while_bullet_flying_tick",
+ "metadata": {
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ }
+ },
+ {
+ "name": "Ggbullet",
+ "type": "item",
+ "sortid": 5,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "ggbullet"
+ },
+ {
+ "name": "SteelIngot",
+ "type": "item",
+ "sortid": 6,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_ingot"
+ },
+ {
+ "name": "SteelOre",
+ "type": "block",
+ "sortid": 7,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_ore"
+ },
+ {
+ "name": "SteelBlock",
+ "type": "block",
+ "sortid": 8,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_block"
+ },
+ {
+ "name": "SteelOreBlockRecipe",
+ "type": "recipe",
+ "sortid": 9,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_ore_block_recipe"
+ },
+ {
+ "name": "SteelBlockOreRecipe",
+ "type": "recipe",
+ "sortid": 10,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_block_ore_recipe"
+ },
+ {
+ "name": "SteelOreSmelting",
+ "type": "recipe",
+ "sortid": 11,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_ore_smelting"
+ },
+ {
+ "name": "SteelPickaxe",
+ "type": "tool",
+ "sortid": 12,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_pickaxe"
+ },
+ {
+ "name": "SteelAxe",
+ "type": "tool",
+ "sortid": 13,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_axe"
+ },
+ {
+ "name": "SteelSword",
+ "type": "tool",
+ "sortid": 14,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_sword"
+ },
+ {
+ "name": "SteelShovel",
+ "type": "tool",
+ "sortid": 15,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_shovel"
+ },
+ {
+ "name": "SteelHoe",
+ "type": "tool",
+ "sortid": 16,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_hoe"
+ },
+ {
+ "name": "SteelPickaxeRecipe",
+ "type": "recipe",
+ "sortid": 17,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_pickaxe_recipe"
+ },
+ {
+ "name": "SteelAxeRecipe",
+ "type": "recipe",
+ "sortid": 18,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_axe_recipe"
+ },
+ {
+ "name": "SteelSwordRecipe",
+ "type": "recipe",
+ "sortid": 19,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_sword_recipe"
+ },
+ {
+ "name": "SteelShovelRecipe",
+ "type": "recipe",
+ "sortid": 20,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_shovel_recipe"
+ },
+ {
+ "name": "SteelHoeRecipe",
+ "type": "recipe",
+ "sortid": 21,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_hoe_recipe"
+ },
+ {
+ "name": "SteelArmor",
+ "type": "armor",
+ "sortid": 22,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_armor",
+ "metadata": {
+ "eh": true,
+ "el": true,
+ "eb": true,
+ "ec": true
+ }
+ },
+ {
+ "name": "SteelArmorHelmetRecipe",
+ "type": "recipe",
+ "sortid": 23,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_armor_helmet_recipe"
+ },
+ {
+ "name": "SteelArmorBodyRecipe",
+ "type": "recipe",
+ "sortid": 24,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_armor_body_recipe"
+ },
+ {
+ "name": "SteelArmorLeggingsRecipe",
+ "type": "recipe",
+ "sortid": 25,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_armor_leggings_recipe"
+ },
+ {
+ "name": "SteelArmorBootsRecipe",
+ "type": "recipe",
+ "sortid": 26,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_armor_boots_recipe"
+ },
+ {
+ "name": "BedrockDust",
+ "type": "item",
+ "sortid": 28,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_dust"
+ },
+ {
+ "name": "BedrockOre",
+ "type": "block",
+ "sortid": 29,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_ore"
+ },
+ {
+ "name": "BedrockBlock",
+ "type": "block",
+ "sortid": 30,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_block"
+ },
+ {
+ "name": "BedrockOreBlockRecipe",
+ "type": "recipe",
+ "sortid": 31,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_ore_block_recipe"
+ },
+ {
+ "name": "BedrockBlockOreRecipe",
+ "type": "recipe",
+ "sortid": 32,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_block_ore_recipe"
+ },
+ {
+ "name": "BedrockOreSmelting",
+ "type": "recipe",
+ "sortid": 33,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_ore_smelting"
+ },
+ {
+ "name": "BedrockPickaxe",
+ "type": "tool",
+ "sortid": 34,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_pickaxe"
+ },
+ {
+ "name": "BedrockAxe",
+ "type": "tool",
+ "sortid": 35,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_axe"
+ },
+ {
+ "name": "BedrockSword",
+ "type": "tool",
+ "sortid": 36,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_sword"
+ },
+ {
+ "name": "BedrockShovel",
+ "type": "tool",
+ "sortid": 37,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_shovel"
+ },
+ {
+ "name": "BedrockHoe",
+ "type": "tool",
+ "sortid": 38,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_hoe"
+ },
+ {
+ "name": "BedrockPickaxeRecipe",
+ "type": "recipe",
+ "sortid": 39,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_pickaxe_recipe"
+ },
+ {
+ "name": "BedrockAxeRecipe",
+ "type": "recipe",
+ "sortid": 40,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_axe_recipe"
+ },
+ {
+ "name": "BedrockSwordRecipe",
+ "type": "recipe",
+ "sortid": 41,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_sword_recipe"
+ },
+ {
+ "name": "BedrockShovelRecipe",
+ "type": "recipe",
+ "sortid": 42,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_shovel_recipe"
+ },
+ {
+ "name": "BedrockHoeRecipe",
+ "type": "recipe",
+ "sortid": 43,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_hoe_recipe"
+ },
+ {
+ "name": "BedrockArmor",
+ "type": "armor",
+ "sortid": 44,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_armor",
+ "metadata": {
+ "eh": true,
+ "el": true,
+ "eb": true,
+ "ec": true
+ }
+ },
+ {
+ "name": "BedrockArmorHelmetRecipe",
+ "type": "recipe",
+ "sortid": 45,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_armor_helmet_recipe"
+ },
+ {
+ "name": "BedrockArmorBodyRecipe",
+ "type": "recipe",
+ "sortid": 46,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_armor_body_recipe"
+ },
+ {
+ "name": "BedrockArmorLeggingsRecipe",
+ "type": "recipe",
+ "sortid": 47,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_armor_leggings_recipe"
+ },
+ {
+ "name": "BedrockArmorBootsRecipe",
+ "type": "recipe",
+ "sortid": 48,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_armor_boots_recipe"
+ },
+ {
+ "name": "Bedstone",
+ "type": "block",
+ "sortid": 49,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedstone"
+ },
+ {
+ "name": "Bedsoil",
+ "type": "block",
+ "sortid": 50,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedsoil"
+ },
+ {
+ "name": "Bed_WoodWood",
+ "type": "block",
+ "sortid": 51,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_wood"
+ },
+ {
+ "name": "Bed_WoodLog",
+ "type": "block",
+ "sortid": 52,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_log"
+ },
+ {
+ "name": "Bed_WoodPlanks",
+ "type": "block",
+ "sortid": 53,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_planks"
+ },
+ {
+ "name": "Bed_WoodLeaves",
+ "type": "block",
+ "sortid": 54,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_leaves"
+ },
+ {
+ "name": "Bed_WoodStairs",
+ "type": "block",
+ "sortid": 55,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_stairs"
+ },
+ {
+ "name": "Bed_WoodSlab",
+ "type": "block",
+ "sortid": 56,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_slab"
+ },
+ {
+ "name": "Bed_WoodFence",
+ "type": "block",
+ "sortid": 57,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_fence"
+ },
+ {
+ "name": "Bed_WoodFenceGate",
+ "type": "block",
+ "sortid": 58,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_fence_gate"
+ },
+ {
+ "name": "Bed_WoodItemsTag",
+ "type": "tag",
+ "sortid": 59,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_items_tag"
+ },
+ {
+ "name": "Bed_WoodWoodRecipe",
+ "type": "recipe",
+ "sortid": 60,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_wood_recipe"
+ },
+ {
+ "name": "Bed_WoodPlanksRecipe",
+ "type": "recipe",
+ "sortid": 61,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_planks_recipe"
+ },
+ {
+ "name": "Bed_WoodStairsRecipe",
+ "type": "recipe",
+ "sortid": 62,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_stairs_recipe"
+ },
+ {
+ "name": "Bed_WoodSlabRecipe",
+ "type": "recipe",
+ "sortid": 63,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_slab_recipe"
+ },
+ {
+ "name": "Bed_WoodFenceRecipe",
+ "type": "recipe",
+ "sortid": 64,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_fence_recipe"
+ },
+ {
+ "name": "Bed_WoodFenceGateRecipe",
+ "type": "recipe",
+ "sortid": 65,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_fence_gate_recipe"
+ },
+ {
+ "name": "Bed_WoodStickRecipe",
+ "type": "recipe",
+ "sortid": 66,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bed_wood_stick_recipe"
+ },
+ {
+ "name": "BedrockBiome",
+ "type": "biome",
+ "sortid": 49,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "bedrock_biome"
+ },
+ {
+ "name": "LiquidBedrock",
+ "type": "fluid",
+ "sortid": 67,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "liquid_bedrock"
+ },
+ {
+ "name": "Beder",
+ "type": "dimension",
+ "sortid": 49,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "beder"
+ },
+ {
+ "name": "GGwandRecipie",
+ "type": "recipe",
+ "sortid": 68,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "g_gwand_recipie"
+ },
+ {
+ "name": "GasBombTxtr",
+ "type": "item",
+ "sortid": 69,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "gas_bomb_txtr"
+ },
+ {
+ "name": "SmokeBombBulletHitsBlock",
+ "type": "procedure",
+ "sortid": 70,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "smoke_bomb_bullet_hits_block",
+ "metadata": {
+ "dependencies": [
+ {
+ "name": "entity",
+ "type": "entity"
+ },
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ }
+ },
+ {
+ "name": "SmokeBomb",
+ "type": "gun",
+ "sortid": 69,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "smoke_bomb"
+ },
+ {
+ "name": "Darklands",
+ "type": "biome",
+ "sortid": 71,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "darklands"
+ },
+ {
+ "name": "DarkApple",
+ "type": "food",
+ "sortid": 72,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "dark_apple"
+ },
+ {
+ "name": "DarkAppleFruit",
+ "type": "block",
+ "sortid": 73,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "dark_apple_fruit"
+ },
+ {
+ "name": "Ammo",
+ "type": "item",
+ "sortid": 74,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "ammo"
+ },
+ {
+ "name": "UziWhileBulletFlyingTick",
+ "type": "procedure",
+ "sortid": 75,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "uzi_while_bullet_flying_tick",
+ "metadata": {
+ "dependencies": [
+ {
+ "name": "x",
+ "type": "number"
+ },
+ {
+ "name": "y",
+ "type": "number"
+ },
+ {
+ "name": "z",
+ "type": "number"
+ },
+ {
+ "name": "world",
+ "type": "world"
+ }
+ ]
+ }
+ },
+ {
+ "name": "Uzi",
+ "type": "gun",
+ "sortid": 75,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "uzi"
+ },
+ {
+ "name": "AmmoRecipie",
+ "type": "recipe",
+ "sortid": 76,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "ammo_recipie"
+ },
+ {
+ "name": "SteelRecipie",
+ "type": "recipe",
+ "sortid": 77,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "steel_recipie"
+ },
+ {
+ "name": "UziRecipie",
+ "type": "recipe",
+ "sortid": 78,
+ "compiles": true,
+ "locked_code": false,
+ "ids": {},
+ "registry_name": "uzi_recipie"
+ }
+ ],
+ "variable_elements": [],
+ "sound_elements": [
+ {
+ "name": "ggwandsound",
+ "files": [
+ "ggwandsound"
+ ],
+ "category": "master",
+ "subtitle": ""
+ }
+ ],
+ "language_map": {
+ "en_us": {
+ "item.momileren.steel_armor_boots": "Steel Boots",
+ "block.darkdays.dark_apple_fruit": "Dark Apple Fruit",
+ "item.darkdays.smoke_bomb": "Smoke Bomb",
+ "block.darkdays.bed_wood_planks": "Bed_Wood Planks",
+ "block.momileren.bedsoil": "Bedsoil",
+ "block.darkdays.bedrock_ore": "Bedrock Ore",
+ "block.momileren.steel_block": "Block of Steel",
+ "block.darkdays.bed_wood_fence": "Bed_Wood Fence",
+ "block.momileren.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "item.darkdays.ggbullet": "Ggbullet",
+ "item.darkdays.bedrock_pickaxe": "Bedrock Pickaxe",
+ "item.darkdays.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.steel_ingot": "Steel",
+ "item.momileren.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.dark_apple": "Dark Apple",
+ "item.momileren.bedrock_shovel": "Bedrock Shovel",
+ "item.momileren.bedrock_dust": "Bedrock",
+ "item.momileren.steel_sword": "Steel Sword",
+ "item.darkdays.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.steel_axe": "Steel Axe",
+ "item.momileren.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.darkdays.g_gwand": "GGwand",
+ "item.momileren.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.steel_shovel": "Steel Shovel",
+ "block.darkdays.bedrock_block": "Block of Bedrock",
+ "block.momileren.bed_wood_leaves": "Bed_Wood Leaves",
+ "item.darkdays.bedrock_axe": "Bedrock Axe",
+ "item.momileren.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.darkdays.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.darkdays.steel_axe": "Steel Axe",
+ "item.darkdays.steel_armor_helmet": "Steel Helmet",
+ "block.momileren.bed_wood_fence": "Bed_Wood Fence",
+ "item.darkdays.dark_apple": "Dark Apple",
+ "item.momileren.steel_armor_chestplate": "Steel Chestplate",
+ "item.darkdays.bedrock_hoe": "Bedrock Hoe",
+ "item.darkdays.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.bedrock_armor_helmet": "Bedrock Helmet",
+ "block.darkdays.bed_wood_stairs": "Bed_Wood Stairs",
+ "subtitles.ggwandsound": "",
+ "item.darkdays.uzi": "Uzi",
+ "block.momileren.bed_wood_planks": "Bed_Wood Planks",
+ "block.darkdays.bed_wood_slab": "Bed_Wood Slab",
+ "item.darkdays.steel_sword": "Steel Sword",
+ "item.momileren.ammo": "Ammo",
+ "block.momileren.bed_wood_wood": "Bed Wood",
+ "item.darkdays.bedrock_armor_helmet": "Bedrock Helmet",
+ "biome.darkdays.bedrock_biome": "Bedrock Biome",
+ "item.darkdays.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.momileren.steel_hoe": "Steel Hoe",
+ "item.momileren.steel_armor_leggings": "Steel Leggings",
+ "item.momileren.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.bedrock_dust": "Bedrock",
+ "item.momileren.bedrock_hoe": "Bedrock Hoe",
+ "item.momileren.beder": "Beder Stone",
+ "block.darkdays.bed_wood_leaves": "Bed_Wood Leaves",
+ "biome.darkdays.darklands": "Darklands",
+ "block.darkdays.steel_ore": "Steel Ore",
+ "item.darkdays.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.steel_shovel": "Steel Shovel",
+ "item.momileren.steel_armor_helmet": "Steel Helmet",
+ "enchantment.momileren.smelting_touch": "Smelting Touch",
+ "item.darkdays.steel_hoe": "Steel Hoe",
+ "item.darkdays.steel_armor_leggings": "Steel Leggings",
+ "block.darkdays.bedsoil": "Bedsoil",
+ "item.momileren.bedrock_pickaxe": "Bedrock Pickaxe",
+ "block.darkdays.bedstone": "Bedstone",
+ "item.darkdays.steel_armor_boots": "Steel Boots",
+ "block.momileren.steel_ore": "Steel Ore",
+ "item.momileren.smoke_bomb": "Smoke Bomb",
+ "item.momileren.bedrock_axe": "Bedrock Axe",
+ "item.darkdays.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.bedrock_shovel": "Bedrock Shovel",
+ "item.darkdays.ammo": "Ammo",
+ "block.darkdays.bed_wood_log": "Bed_Wood Log",
+ "biome.momileren.darklands": "Darklands",
+ "block.darkdays.steel_block": "Block of Steel",
+ "block.momileren.bedrock_ore": "Bedrock Ore",
+ "block.momileren.bed_wood_log": "Bed_Wood Log",
+ "item.darkdays.beder": "Beder Stone",
+ "block.momileren.bedstone": "Bedstone",
+ "item.momileren.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.momileren.steel_ingot": "Steel",
+ "item.momileren.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.g_gwand": "GGwand",
+ "biome.momileren.bedrock_biome": "Bedrock Biome",
+ "block.momileren.bed_wood_stairs": "Bed_Wood Stairs",
+ "enchantment.darkdays.smelting_touch": "Smelting Touch",
+ "block.momileren.bedrock_block": "Block of Bedrock",
+ "block.darkdays.bed_wood_wood": "Bed Wood",
+ "item.momileren.uzi": "Uzi",
+ "item.darkdays.steel_armor_chestplate": "Steel Chestplate",
+ "block.darkdays.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "block.momileren.dark_apple_fruit": "Dark Apple Fruit",
+ "item.momileren.ggbullet": "Ggbullet",
+ "block.momileren.bed_wood_slab": "Bed_Wood Slab",
+ "fluid.liquid_bedrock": "LiquidBedrock"
+ },
+ "tr_tr": {
+ "item.momileren.steel_armor_boots": "Steel Boots",
+ "block.darkdays.dark_apple_fruit": "Dark Apple Fruit",
+ "item.darkdays.smoke_bomb": "Smoke Bomb",
+ "block.darkdays.bed_wood_planks": "Bed_Wood Planks",
+ "block.momileren.bedsoil": "Bedsoil",
+ "block.darkdays.bedrock_ore": "Bedrock Ore",
+ "block.momileren.steel_block": "Block of Steel",
+ "block.darkdays.bed_wood_fence": "Bed_Wood Fence",
+ "block.momileren.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "item.darkdays.ggbullet": "Ggbullet",
+ "item.darkdays.bedrock_pickaxe": "Bedrock Pickaxe",
+ "item.darkdays.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.steel_ingot": "Steel",
+ "item.momileren.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.dark_apple": "Dark Apple",
+ "item.momileren.bedrock_shovel": "Bedrock Shovel",
+ "item.momileren.bedrock_dust": "Bedrock",
+ "item.momileren.steel_sword": "Steel Sword",
+ "item.darkdays.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.steel_axe": "Steel Axe",
+ "item.darkdays.g_gwand": "GGwand",
+ "item.momileren.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.steel_shovel": "Steel Shovel",
+ "block.darkdays.bedrock_block": "Block of Bedrock",
+ "block.momileren.bed_wood_leaves": "Bed_Wood Leaves",
+ "item.darkdays.bedrock_axe": "Bedrock Axe",
+ "item.momileren.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.darkdays.steel_axe": "Steel Axe",
+ "item.darkdays.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.darkdays.steel_armor_helmet": "Steel Helmet",
+ "block.momileren.bed_wood_fence": "Bed_Wood Fence",
+ "item.darkdays.dark_apple": "Dark Apple",
+ "item.momileren.steel_armor_chestplate": "Steel Chestplate",
+ "item.darkdays.bedrock_hoe": "Bedrock Hoe",
+ "item.darkdays.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.bedrock_armor_helmet": "Bedrock Helmet",
+ "block.darkdays.bed_wood_stairs": "Bed_Wood Stairs",
+ "subtitles.ggwandsound": "",
+ "block.darkdays.bed_wood_slab": "Bed_Wood Slab",
+ "block.momileren.bed_wood_planks": "Bed_Wood Planks",
+ "item.darkdays.uzi": "Uzi",
+ "item.darkdays.steel_sword": "Steel Sword",
+ "item.momileren.ammo": "Ammo",
+ "block.momileren.bed_wood_wood": "Bed Wood",
+ "item.darkdays.bedrock_armor_helmet": "Bedrock Helmet",
+ "biome.darkdays.bedrock_biome": "Bedrock Biome",
+ "item.darkdays.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.momileren.steel_hoe": "Steel Hoe",
+ "item.momileren.steel_armor_leggings": "Steel Leggings",
+ "item.momileren.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.bedrock_dust": "Bedrock",
+ "item.momileren.bedrock_hoe": "Bedrock Hoe",
+ "item.momileren.beder": "Beder Stone",
+ "block.darkdays.bed_wood_leaves": "Bed_Wood Leaves",
+ "biome.darkdays.darklands": "Darklands",
+ "block.darkdays.steel_ore": "Steel Ore",
+ "item.darkdays.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.steel_shovel": "Steel Shovel",
+ "item.momileren.steel_armor_helmet": "Steel Helmet",
+ "enchantment.momileren.smelting_touch": "Smelting Touch",
+ "item.darkdays.steel_hoe": "Steel Hoe",
+ "item.darkdays.steel_armor_leggings": "Steel Leggings",
+ "block.darkdays.bedsoil": "Bedsoil",
+ "item.momileren.bedrock_pickaxe": "Bedrock Pickaxe",
+ "block.darkdays.bedstone": "Bedstone",
+ "item.darkdays.steel_armor_boots": "Steel Boots",
+ "block.momileren.steel_ore": "Steel Ore",
+ "item.momileren.smoke_bomb": "Smoke Bomb",
+ "item.momileren.bedrock_axe": "Bedrock Axe",
+ "item.darkdays.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.bedrock_shovel": "Bedrock Shovel",
+ "item.darkdays.ammo": "Ammo",
+ "block.darkdays.bed_wood_log": "Bed_Wood Log",
+ "biome.momileren.darklands": "Darklands",
+ "block.darkdays.steel_block": "Block of Steel",
+ "block.momileren.bedrock_ore": "Bedrock Ore",
+ "block.momileren.bed_wood_log": "Bed_Wood Log",
+ "item.darkdays.beder": "Beder Stone",
+ "block.momileren.bedstone": "Bedstone",
+ "item.momileren.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.momileren.steel_ingot": "Steel",
+ "item.momileren.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.g_gwand": "GGwand",
+ "biome.momileren.bedrock_biome": "Bedrock Biome",
+ "block.momileren.bed_wood_stairs": "Bed_Wood Stairs",
+ "enchantment.darkdays.smelting_touch": "Smelting Touch",
+ "block.momileren.bedrock_block": "Block of Bedrock",
+ "block.darkdays.bed_wood_wood": "Bed Wood",
+ "item.momileren.uzi": "Uzi",
+ "item.darkdays.steel_armor_chestplate": "Steel Chestplate",
+ "block.darkdays.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "block.momileren.dark_apple_fruit": "Dark Apple Fruit",
+ "item.momileren.ggbullet": "Ggbullet",
+ "block.momileren.bed_wood_slab": "Bed_Wood Slab",
+ "fluid.liquid_bedrock": "LiquidBedrock"
+ }
+ },
+ "workspaceSettings": {
+ "modid": "darkdays",
+ "modName": "Darkdays",
+ "version": "1.0.0",
+ "author": "Rickroller01",
+ "websiteURL": "https://bitbucket.org/Rickroller01/darkdays1.0.0/src",
+ "disableForgeVersionCheck": true,
+ "serverSideOnly": false,
+ "updateURL": "https://bitbucket.org/Rickroller01/darkdays1.0.0/src",
+ "modPicture": "wandammo",
+ "requiredMods": [],
+ "dependencies": [],
+ "dependants": [],
+ "mcreatorDependencies": [],
+ "currentGenerator": "forge-1.15.2",
+ "credits": "Created using mod maker MCreator - https://mcreator.net/about",
+ "modElementsPackage": "bitbucket.org.darkdays",
+ "lockBaseModFiles": false
+ },
+ "mcreatorVersion": 202000547520
+}
\ No newline at end of file
diff --git a/elements/Ammo.mod.json b/elements/Ammo.mod.json
new file mode 100644
index 0000000..10f50fc
--- /dev/null
+++ b/elements/Ammo.mod.json
@@ -0,0 +1,32 @@
+{
+ "_fv": 13,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "ammo",
+ "customModelName": "Normal",
+ "name": "Ammo",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInfo": [],
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/AmmoRecipie.mod.json b/elements/AmmoRecipie.mod.json
new file mode 100644
index 0000000..da6b370
--- /dev/null
+++ b/elements/AmmoRecipie.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 16,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Ammo"
+ },
+ "name": "ammo_recipie",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodFence.mod.json b/elements/Bed_WoodFence.mod.json
new file mode 100644
index 0000000..d6367ca
--- /dev/null
+++ b/elements/Bed_WoodFence.mod.json
@@ -0,0 +1,108 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_planks",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "Fence",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Fence",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 3.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodFenceGate.mod.json b/elements/Bed_WoodFenceGate.mod.json
new file mode 100644
index 0000000..8fe5aa9
--- /dev/null
+++ b/elements/Bed_WoodFenceGate.mod.json
@@ -0,0 +1,108 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_planks",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "FenceGate",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Fence Gate",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 3.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodFenceGateRecipe.mod.json b/elements/Bed_WoodFenceGateRecipe.mod.json
new file mode 100644
index 0000000..5924b00
--- /dev/null
+++ b/elements/Bed_WoodFenceGateRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "Items.STICK"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodFenceGate"
+ },
+ "name": "bed_wood_fence_gate_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodFenceRecipe.mod.json b/elements/Bed_WoodFenceRecipe.mod.json
new file mode 100644
index 0000000..51f7f67
--- /dev/null
+++ b/elements/Bed_WoodFenceRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 3,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodFence"
+ },
+ "name": "bed_wood_fence_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodItemsTag.mod.json b/elements/Bed_WoodItemsTag.mod.json
new file mode 100644
index 0000000..94e4b7a
--- /dev/null
+++ b/elements/Bed_WoodItemsTag.mod.json
@@ -0,0 +1,19 @@
+{
+ "_fv": 13,
+ "_type": "tag",
+ "definition": {
+ "type": "Items",
+ "items": [
+ {
+ "value": "CUSTOM:Bed_WoodWood"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodLog"
+ }
+ ],
+ "blocks": [],
+ "functions": [],
+ "name": "bed_wood_log",
+ "namespace": "forge"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodLeaves.mod.json b/elements/Bed_WoodLeaves.mod.json
new file mode 100644
index 0000000..c30346d
--- /dev/null
+++ b/elements/Bed_WoodLeaves.mod.json
@@ -0,0 +1,108 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_leaves",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "Leaves",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Leaves",
+ "specialInfo": [],
+ "hardness": 0.2,
+ "resistance": 0.2,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "LEAVES"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 30,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "PLANT"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodLog.mod.json b/elements/Bed_WoodLog.mod.json
new file mode 100644
index 0000000..6900207
--- /dev/null
+++ b/elements/Bed_WoodLog.mod.json
@@ -0,0 +1,107 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_log_top",
+ "textureTop": "bed_wood_log_top",
+ "textureLeft": "bed_wood_log_side",
+ "textureFront": "bed_wood_log_side",
+ "textureRight": "bed_wood_log_side",
+ "textureBack": "bed_wood_log_side",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Log",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 2.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "axe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": true,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodPlanks.mod.json b/elements/Bed_WoodPlanks.mod.json
new file mode 100644
index 0000000..4d53a1c
--- /dev/null
+++ b/elements/Bed_WoodPlanks.mod.json
@@ -0,0 +1,107 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_planks",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Planks",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 3.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "axe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodPlanksRecipe.mod.json b/elements/Bed_WoodPlanksRecipe.mod.json
new file mode 100644
index 0000000..dabb515
--- /dev/null
+++ b/elements/Bed_WoodPlanksRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 4,
+ "group": "",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:bed_wood_log"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ "name": "bed_wood_planks_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodSlab.mod.json b/elements/Bed_WoodSlab.mod.json
new file mode 100644
index 0000000..1563edd
--- /dev/null
+++ b/elements/Bed_WoodSlab.mod.json
@@ -0,0 +1,108 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_planks",
+ "textureTop": "bed_wood_planks",
+ "textureLeft": "",
+ "textureFront": "bed_wood_planks",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "Slab",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Slab",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 3.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodSlabRecipe.mod.json b/elements/Bed_WoodSlabRecipe.mod.json
new file mode 100644
index 0000000..f9c846e
--- /dev/null
+++ b/elements/Bed_WoodSlabRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 6,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodSlab"
+ },
+ "name": "bed_wood_slab_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodStairs.mod.json b/elements/Bed_WoodStairs.mod.json
new file mode 100644
index 0000000..d507fee
--- /dev/null
+++ b/elements/Bed_WoodStairs.mod.json
@@ -0,0 +1,108 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_planks",
+ "textureTop": "bed_wood_planks",
+ "textureLeft": "",
+ "textureFront": "bed_wood_planks",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "blockBase": "Stairs",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed_Wood Stairs",
+ "specialInfo": [],
+ "hardness": 3.0,
+ "resistance": 2.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodStairsRecipe.mod.json b/elements/Bed_WoodStairsRecipe.mod.json
new file mode 100644
index 0000000..50160c8
--- /dev/null
+++ b/elements/Bed_WoodStairsRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 4,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodStairs"
+ },
+ "name": "bed_wood_stairs_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodStickRecipe.mod.json b/elements/Bed_WoodStickRecipe.mod.json
new file mode 100644
index 0000000..136ad07
--- /dev/null
+++ b/elements/Bed_WoodStickRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 4,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodPlanks"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "Items.STICK"
+ },
+ "name": "bed_wood_stick_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodWood.mod.json b/elements/Bed_WoodWood.mod.json
new file mode 100644
index 0000000..cee261c
--- /dev/null
+++ b/elements/Bed_WoodWood.mod.json
@@ -0,0 +1,107 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bed_wood_log_side",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bed Wood",
+ "specialInfo": [],
+ "hardness": 2.0,
+ "resistance": 2.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "axe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": true,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 5,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bed_WoodWoodRecipe.mod.json b/elements/Bed_WoodWoodRecipe.mod.json
new file mode 100644
index 0000000..e1e36b5
--- /dev/null
+++ b/elements/Bed_WoodWoodRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 3,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Bed_WoodWood"
+ },
+ "name": "bed_wood_wood_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Beder.mod.json b/elements/Beder.mod.json
new file mode 100644
index 0000000..af2b494
--- /dev/null
+++ b/elements/Beder.mod.json
@@ -0,0 +1,47 @@
+{
+ "_fv": 13,
+ "_type": "dimension",
+ "definition": {
+ "portalFrame": {
+ "value": "CUSTOM:BedrockBlock"
+ },
+ "portalParticles": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "portalLuminance": 0.74,
+ "portalSound": {
+ "value": "CUSTOM:ggwandsound"
+ },
+ "igniterName": "Beder Stone",
+ "igniterTab": {
+ "value": "TOOLS"
+ },
+ "texture": "wandammo",
+ "portalTexture": "liquidbedrock",
+ "enablePortal": true,
+ "biomesInDimension": [
+ {
+ "value": "CUSTOM:BedrockBiome"
+ }
+ ],
+ "worldGenType": "Nether like gen",
+ "mainFillerBlock": {
+ "value": "CUSTOM:Bedstone"
+ },
+ "fluidBlock": {
+ "value": "CUSTOM:LiquidBedrock"
+ },
+ "airColor": {
+ "value": -12961222,
+ "falpha": 0.0
+ },
+ "canRespawnHere": false,
+ "hasFog": true,
+ "hasWeather": false,
+ "isDark": false,
+ "doesWaterVaporize": false,
+ "sleepResult": "BED_EXPLODES",
+ "hasSkyLight": false,
+ "imitateOverworldBehaviour": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockArmor.mod.json b/elements/BedrockArmor.mod.json
new file mode 100644
index 0000000..02dfafb
--- /dev/null
+++ b/elements/BedrockArmor.mod.json
@@ -0,0 +1,57 @@
+{
+ "_fv": 13,
+ "_type": "armor",
+ "definition": {
+ "enableHelmet": true,
+ "textureHelmet": "bedrock_head",
+ "enableBody": true,
+ "textureBody": "bedrock_body",
+ "enableLeggings": true,
+ "textureLeggings": "bedrock_leggings",
+ "enableBoots": true,
+ "textureBoots": "bedrock_boots",
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "armorTextureFile": "bedrock",
+ "helmetName": "Bedrock Helmet",
+ "bodyName": "Bedrock Chestplate",
+ "leggingsName": "Bedrock Leggings",
+ "bootsName": "Bedrock Boots",
+ "helmetSpecialInfo": [],
+ "bodySpecialInfo": [],
+ "leggingsSpecialInfo": [],
+ "bootsSpecialInfo": [],
+ "helmetModelName": "Default",
+ "helmetModelPart": "Helmet",
+ "helmetModelTexture": "From armor",
+ "bodyModelName": "Default",
+ "bodyModelPart": "Body",
+ "armsModelPartL": "Arms L",
+ "armsModelPartR": "Arms R",
+ "bodyModelTexture": "From armor",
+ "leggingsModelName": "Default",
+ "leggingsModelPartL": "Leggings L",
+ "leggingsModelPartR": "Leggings R",
+ "leggingsModelTexture": "From armor",
+ "bootsModelName": "Default",
+ "bootsModelPartL": "Boots L",
+ "bootsModelPartR": "Boots R",
+ "bootsModelTexture": "From armor",
+ "maxDamage": 19,
+ "damageValueHelmet": 2,
+ "damageValueBody": 5,
+ "damageValueLeggings": 6,
+ "damageValueBoots": 2,
+ "enchantability": 9,
+ "toughness": 5.0,
+ "equipSound": {
+ "value": ""
+ },
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockArmorBodyRecipe.mod.json b/elements/BedrockArmorBodyRecipe.mod.json
new file mode 100644
index 0000000..5a72693
--- /dev/null
+++ b/elements/BedrockArmorBodyRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockArmor.body"
+ },
+ "name": "bedrock_armor_body_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockArmorBootsRecipe.mod.json b/elements/BedrockArmorBootsRecipe.mod.json
new file mode 100644
index 0000000..cd2cee7
--- /dev/null
+++ b/elements/BedrockArmorBootsRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockArmor.boots"
+ },
+ "name": "bedrock_armor_boots_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockArmorHelmetRecipe.mod.json b/elements/BedrockArmorHelmetRecipe.mod.json
new file mode 100644
index 0000000..0e51ffd
--- /dev/null
+++ b/elements/BedrockArmorHelmetRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockArmor.helmet"
+ },
+ "name": "bedrock_armor_helmet_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockArmorLeggingsRecipe.mod.json b/elements/BedrockArmorLeggingsRecipe.mod.json
new file mode 100644
index 0000000..c540d1d
--- /dev/null
+++ b/elements/BedrockArmorLeggingsRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockArmor.legs"
+ },
+ "name": "bedrock_armor_leggings_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockAxe.mod.json b/elements/BedrockAxe.mod.json
new file mode 100644
index 0000000..caea887
--- /dev/null
+++ b/elements/BedrockAxe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_axe",
+ "customModelName": "Normal",
+ "name": "Bedrock Axe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Axe",
+ "harvestLevel": 2,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockAxeRecipe.mod.json b/elements/BedrockAxeRecipe.mod.json
new file mode 100644
index 0000000..2079ee8
--- /dev/null
+++ b/elements/BedrockAxeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockAxe"
+ },
+ "name": "bedrock_axe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockBiome.mod.json b/elements/BedrockBiome.mod.json
new file mode 100644
index 0000000..78712da
--- /dev/null
+++ b/elements/BedrockBiome.mod.json
@@ -0,0 +1,135 @@
+{
+ "_fv": 13,
+ "_type": "biome",
+ "definition": {
+ "name": "Bedrock Biome",
+ "groundBlock": {
+ "value": "CUSTOM:Bedsoil"
+ },
+ "undergroundBlock": {
+ "value": "CUSTOM:Bedstone"
+ },
+ "treeType": 1,
+ "vanillaTreeType": "Default",
+ "minHeight": 7,
+ "spawnVines": true,
+ "treeVines": {
+ "value": "CUSTOM:Bed_WoodLeaves"
+ },
+ "treeStem": {
+ "value": "CUSTOM:Bed_WoodWood"
+ },
+ "treeBranch": {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ "treeFruits": {
+ "value": "CUSTOM:BedrockOre"
+ },
+ "airColor": {
+ "value": -13750738,
+ "falpha": 0.0
+ },
+ "grassColor": {
+ "value": -13750738,
+ "falpha": 0.0
+ },
+ "foliageColor": {
+ "value": -13750738,
+ "falpha": 0.0
+ },
+ "waterColor": {
+ "value": -13750738,
+ "falpha": 0.0
+ },
+ "waterFogColor": {
+ "value": -13750738,
+ "falpha": 0.0
+ },
+ "treesPerChunk": 32,
+ "grassPerChunk": 4,
+ "seagrassPerChunk": 20,
+ "flowersPerChunk": 4,
+ "mushroomsPerChunk": 0,
+ "bigMushroomsChunk": 0,
+ "sandPathcesPerChunk": 0,
+ "gravelPatchesPerChunk": 0,
+ "reedsPerChunk": 0,
+ "cactiPerChunk": 0,
+ "rainingPossibility": 0.5,
+ "temperature": 0.5,
+ "baseHeight": 0.1,
+ "heightVariation": 0.2,
+ "spawnBiome": true,
+ "biomeWeight": 10,
+ "biomeType": "DESERT",
+ "biomeCategory": "NONE",
+ "parent": {
+ "value": "No parent"
+ },
+ "spawnStronghold": false,
+ "spawnMineshaft": true,
+ "spawnPillagerOutpost": false,
+ "villageType": "none",
+ "spawnWoodlandMansion": false,
+ "spawnJungleTemple": false,
+ "spawnDesertPyramid": false,
+ "spawnIgloo": false,
+ "spawnOceanMonument": false,
+ "spawnShipwreck": false,
+ "oceanRuinType": "NONE",
+ "biomeDictionaryTypes": [],
+ "defaultFeatures": [
+ "Caves",
+ "MonsterRooms",
+ "Structures",
+ "Ores"
+ ],
+ "spawnEntries": [
+ {
+ "entity": {
+ "value": "EntityPigZombie"
+ },
+ "minGroup": 4,
+ "maxGroup": 4,
+ "weight": 20,
+ "spawnType": "monster"
+ },
+ {
+ "entity": {
+ "value": "EntityBlaze"
+ },
+ "minGroup": 4,
+ "maxGroup": 4,
+ "weight": 20,
+ "spawnType": "monster"
+ },
+ {
+ "entity": {
+ "value": "EntityEvokerFangs"
+ },
+ "minGroup": 4,
+ "maxGroup": 4,
+ "weight": 20,
+ "spawnType": "monster"
+ },
+ {
+ "entity": {
+ "value": "EntityHusk"
+ },
+ "minGroup": 4,
+ "maxGroup": 4,
+ "weight": 20,
+ "spawnType": "monster"
+ },
+ {
+ "entity": {
+ "value": "EntityGhast"
+ },
+ "minGroup": 4,
+ "maxGroup": 4,
+ "weight": 20,
+ "spawnType": "monster"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockBlock.mod.json b/elements/BedrockBlock.mod.json
new file mode 100644
index 0000000..ab26f0f
--- /dev/null
+++ b/elements/BedrockBlock.mod.json
@@ -0,0 +1,107 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bedrock_ore_block",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Block of Bedrock",
+ "specialInfo": [],
+ "hardness": 5.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "IRON"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "METAL"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockBlockOreRecipe.mod.json b/elements/BedrockBlockOreRecipe.mod.json
new file mode 100644
index 0000000..3f5e54a
--- /dev/null
+++ b/elements/BedrockBlockOreRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 9,
+ "group": "",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockBlock"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockDust"
+ },
+ "name": "bedrock_block_ore_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockDust.mod.json b/elements/BedrockDust.mod.json
new file mode 100644
index 0000000..3cfb1de
--- /dev/null
+++ b/elements/BedrockDust.mod.json
@@ -0,0 +1,32 @@
+{
+ "_fv": 13,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_dust",
+ "customModelName": "Normal",
+ "name": "Bedrock",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInfo": [],
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockHoe.mod.json b/elements/BedrockHoe.mod.json
new file mode 100644
index 0000000..2b7d0cf
--- /dev/null
+++ b/elements/BedrockHoe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_hoe",
+ "customModelName": "Normal",
+ "name": "Bedrock Hoe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Hoe",
+ "harvestLevel": 2,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockHoeRecipe.mod.json b/elements/BedrockHoeRecipe.mod.json
new file mode 100644
index 0000000..836b7d0
--- /dev/null
+++ b/elements/BedrockHoeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockHoe"
+ },
+ "name": "bedrock_hoe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockOre.mod.json b/elements/BedrockOre.mod.json
new file mode 100644
index 0000000..deecfb0
--- /dev/null
+++ b/elements/BedrockOre.mod.json
@@ -0,0 +1,109 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bedrock_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": true,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bedrock Ore",
+ "specialInfo": [],
+ "hardness": 10.0,
+ "resistance": 10000.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": "CUSTOM:BedrockDust"
+ },
+ "dropAmount": 3,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 10,
+ "spawnParticles": true,
+ "particleToSpawn": {
+ "value": "CAMPFIRE_COSY_SMOKE"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [
+ "Surface"
+ ],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 11,
+ "frequencyOnChunk": 7,
+ "minGenerateHeight": 1,
+ "maxGenerateHeight": 12
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockOreBlockRecipe.mod.json b/elements/BedrockOreBlockRecipe.mod.json
new file mode 100644
index 0000000..9b96d86
--- /dev/null
+++ b/elements/BedrockOreBlockRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockBlock"
+ },
+ "name": "bedrock_ore_block_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockOreSmelting.mod.json b/elements/BedrockOreSmelting.mod.json
new file mode 100644
index 0000000..483ae52
--- /dev/null
+++ b/elements/BedrockOreSmelting.mod.json
@@ -0,0 +1,52 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smelting",
+ "xpReward": 0.7,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": ""
+ },
+ "smeltingInputStack": {
+ "value": "CUSTOM:BedrockOre"
+ },
+ "smeltingReturnStack": {
+ "value": "CUSTOM:BedrockDust"
+ },
+ "name": "bedrock_ore_smelting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockPickaxe.mod.json b/elements/BedrockPickaxe.mod.json
new file mode 100644
index 0000000..5e69069
--- /dev/null
+++ b/elements/BedrockPickaxe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_pickaxe",
+ "customModelName": "Normal",
+ "name": "Bedrock Pickaxe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Pickaxe",
+ "harvestLevel": 2,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockPickaxeRecipe.mod.json b/elements/BedrockPickaxeRecipe.mod.json
new file mode 100644
index 0000000..c755ad1
--- /dev/null
+++ b/elements/BedrockPickaxeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockPickaxe"
+ },
+ "name": "bedrock_pickaxe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockShovel.mod.json b/elements/BedrockShovel.mod.json
new file mode 100644
index 0000000..573fcb9
--- /dev/null
+++ b/elements/BedrockShovel.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_shovel",
+ "customModelName": "Normal",
+ "name": "Bedrock Shovel",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Spade",
+ "harvestLevel": 2,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockShovelRecipe.mod.json b/elements/BedrockShovelRecipe.mod.json
new file mode 100644
index 0000000..6544bc8
--- /dev/null
+++ b/elements/BedrockShovelRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockShovel"
+ },
+ "name": "bedrock_shovel_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockSword.mod.json b/elements/BedrockSword.mod.json
new file mode 100644
index 0000000..4478024
--- /dev/null
+++ b/elements/BedrockSword.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "bedrock_sword",
+ "customModelName": "Normal",
+ "name": "Bedrock Sword",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "toolType": "Sword",
+ "harvestLevel": 2,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:BedrockDust"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/BedrockSwordRecipe.mod.json b/elements/BedrockSwordRecipe.mod.json
new file mode 100644
index 0000000..27ad996
--- /dev/null
+++ b/elements/BedrockSwordRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:BedrockDust"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BedrockSword"
+ },
+ "name": "bedrock_sword_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bedsoil.mod.json b/elements/Bedsoil.mod.json
new file mode 100644
index 0000000..ef82c42
--- /dev/null
+++ b/elements/Bedsoil.mod.json
@@ -0,0 +1,103 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bedsoil",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bedsoil",
+ "specialInfo": [],
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "GROUND"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Bedstone.mod.json b/elements/Bedstone.mod.json
new file mode 100644
index 0000000..4224ab0
--- /dev/null
+++ b/elements/Bedstone.mod.json
@@ -0,0 +1,103 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "bedstone",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "bedstone",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Bedstone",
+ "specialInfo": [],
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "GROUND"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/DarkApple.mod.json b/elements/DarkApple.mod.json
new file mode 100644
index 0000000..587b0f1
--- /dev/null
+++ b/elements/DarkApple.mod.json
@@ -0,0 +1,26 @@
+{
+ "_fv": 13,
+ "_type": "food",
+ "definition": {
+ "renderType": 0,
+ "texture": "darkapple",
+ "customModelName": "Normal",
+ "name": "Dark Apple",
+ "rarity": "COMMON",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "FOOD"
+ },
+ "stackSize": 64,
+ "nutritionalValue": 6,
+ "saturation": 1.5,
+ "eatingSpeed": 32,
+ "resultItem": {
+ "value": ""
+ },
+ "forDogs": false,
+ "isAlwaysEdible": false,
+ "animation": "eat",
+ "hasGlow": false
+ }
+}
\ No newline at end of file
diff --git a/elements/DarkAppleFruit.mod.json b/elements/DarkAppleFruit.mod.json
new file mode 100644
index 0000000..d669031
--- /dev/null
+++ b/elements/DarkAppleFruit.mod.json
@@ -0,0 +1,103 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "darkapple",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 13,
+ "customModelName": "Crop model",
+ "rotationMode": 0,
+ "emissiveRendering": true,
+ "displayFluidOverlay": true,
+ "itemTexture": "darkapple",
+ "particleTexture": "darkapple",
+ "hasTransparency": true,
+ "connectedSides": true,
+ "transparencyType": "TRANSLUCENT",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Dark Apple Fruit",
+ "specialInfo": [],
+ "hardness": 0.05,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "FOOD"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": "CUSTOM:DarkApple"
+ },
+ "dropAmount": 4,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 0,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "DESTROY",
+ "isNotColidable": true,
+ "soundOnStep": {
+ "value": "GROUND"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 0,
+ "spawnParticles": true,
+ "particleToSpawn": {
+ "value": "SPELL_INSTANT"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 1.500000001490116,
+ "particleAmount": 15,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Darklands.mod.json b/elements/Darklands.mod.json
new file mode 100644
index 0000000..3d074d8
--- /dev/null
+++ b/elements/Darklands.mod.json
@@ -0,0 +1,99 @@
+{
+ "_fv": 13,
+ "_type": "biome",
+ "definition": {
+ "name": "Darklands",
+ "groundBlock": {
+ "value": "CUSTOM:Bedsoil"
+ },
+ "undergroundBlock": {
+ "value": "CUSTOM:Bedstone"
+ },
+ "treeType": 1,
+ "vanillaTreeType": "Default",
+ "minHeight": 7,
+ "spawnVines": true,
+ "treeVines": {
+ "value": "CUSTOM:Bed_WoodLeaves"
+ },
+ "treeStem": {
+ "value": "CUSTOM:Bed_WoodLog"
+ },
+ "treeBranch": {
+ "value": "CUSTOM:Bed_WoodWood"
+ },
+ "treeFruits": {
+ "value": "CUSTOM:DarkAppleFruit"
+ },
+ "airColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "grassColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "foliageColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "waterColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "waterFogColor": {
+ "value": -13421773,
+ "falpha": 0.0
+ },
+ "treesPerChunk": 72,
+ "grassPerChunk": 4,
+ "seagrassPerChunk": 20,
+ "flowersPerChunk": 4,
+ "mushroomsPerChunk": 0,
+ "bigMushroomsChunk": 0,
+ "sandPathcesPerChunk": 0,
+ "gravelPatchesPerChunk": 0,
+ "reedsPerChunk": 0,
+ "cactiPerChunk": 0,
+ "rainingPossibility": 0.5,
+ "temperature": 0.5,
+ "baseHeight": 0.1,
+ "heightVariation": 0.2,
+ "spawnBiome": true,
+ "biomeWeight": 10,
+ "biomeType": "WARM",
+ "biomeCategory": "NONE",
+ "parent": {
+ "value": "CUSTOM:BedrockBiome"
+ },
+ "spawnStronghold": true,
+ "spawnMineshaft": true,
+ "spawnPillagerOutpost": true,
+ "villageType": "none",
+ "spawnWoodlandMansion": true,
+ "spawnJungleTemple": true,
+ "spawnDesertPyramid": true,
+ "spawnIgloo": true,
+ "spawnOceanMonument": true,
+ "spawnShipwreck": true,
+ "oceanRuinType": "NONE",
+ "biomeDictionaryTypes": [],
+ "defaultFeatures": [
+ "Caves",
+ "MonsterRooms",
+ "Structures",
+ "Ores"
+ ],
+ "spawnEntries": [
+ {
+ "entity": {
+ "value": "EntityAreaEffectCloud"
+ },
+ "minGroup": 56,
+ "maxGroup": 100,
+ "weight": 50,
+ "spawnType": "creature"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/GGwand.mod.json b/elements/GGwand.mod.json
new file mode 100644
index 0000000..a249b1e
--- /dev/null
+++ b/elements/GGwand.mod.json
@@ -0,0 +1,51 @@
+{
+ "_fv": 13,
+ "_type": "gun",
+ "definition": {
+ "renderType": 0,
+ "texture": "ggwandtexture",
+ "customModelName": "Normal",
+ "name": "GGwand",
+ "specialInfo": [
+ "Shoots Fireballs"
+ ],
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "stackSize": 1,
+ "ammoItem": {
+ "value": "CUSTOM:Ggbullet"
+ },
+ "shootConstantly": true,
+ "usageCount": 100,
+ "actionSound": {
+ "value": "CUSTOM:ggwandsound"
+ },
+ "hasGlow": true,
+ "animation": "none",
+ "enableMeleeDamage": true,
+ "damageVsEntity": 6.0,
+ "bulletPower": 1.5,
+ "bulletDamage": 10.0,
+ "bulletKnockback": 1,
+ "bulletParticles": true,
+ "bulletIgnitesFire": true,
+ "bulletItemTexture": {
+ "value": "CUSTOM:Ggbullet"
+ },
+ "bulletModel": "Default",
+ "customBulletModelTexture": "wandammo.png",
+ "onBulletHitsBlock": {
+ "name": "GGwandBulletHitsNull"
+ },
+ "onBulletHitsPlayer": {
+ "name": "GGwandBulletHitsNull"
+ },
+ "onBulletHitsEntity": {
+ "name": "GGwandBulletHitsNull"
+ },
+ "onBulletFlyingTick": {
+ "name": "GGwandWhileBulletFlyingTick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/GGwandBulletHitsNull.mod.json b/elements/GGwandBulletHitsNull.mod.json
new file mode 100644
index 0000000..8148e22
--- /dev/null
+++ b/elements/GGwandBulletHitsNull.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 13,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger2"
+ }
+}
\ No newline at end of file
diff --git a/elements/GGwandRecipie.mod.json b/elements/GGwandRecipie.mod.json
new file mode 100644
index 0000000..dc8ceb7
--- /dev/null
+++ b/elements/GGwandRecipie.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:Ggbullet"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.BLAZE_ROD"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.BLAZE_ROD"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:GGwand"
+ },
+ "name": "ggwand_recipie",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/GGwandWhileBulletFlyingTick.mod.json b/elements/GGwandWhileBulletFlyingTick.mod.json
new file mode 100644
index 0000000..fa6f345
--- /dev/null
+++ b/elements/GGwandWhileBulletFlyingTick.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 13,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:ggwandsound151"
+ }
+}
\ No newline at end of file
diff --git a/elements/GasBombTxtr.mod.json b/elements/GasBombTxtr.mod.json
new file mode 100644
index 0000000..f6eb748
--- /dev/null
+++ b/elements/GasBombTxtr.mod.json
@@ -0,0 +1,32 @@
+{
+ "_fv": 13,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gasbombtxtr",
+ "customModelName": "Normal",
+ "name": "Gas Bomb Txtr",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "No creative tab entry"
+ },
+ "stackSize": 16,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInfo": [],
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/Ggbullet.mod.json b/elements/Ggbullet.mod.json
new file mode 100644
index 0000000..00646a6
--- /dev/null
+++ b/elements/Ggbullet.mod.json
@@ -0,0 +1,34 @@
+{
+ "_fv": 13,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "wandammo",
+ "customModelName": "Normal",
+ "name": "Ggbullet",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInfo": [
+ "The bullet of GGwand"
+ ],
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/LiquidBedrock.mod.json b/elements/LiquidBedrock.mod.json
new file mode 100644
index 0000000..0af6b72
--- /dev/null
+++ b/elements/LiquidBedrock.mod.json
@@ -0,0 +1,23 @@
+{
+ "_fv": 13,
+ "_type": "fluid",
+ "definition": {
+ "name": "LiquidBedrock",
+ "textureStill": "liquidbedrock",
+ "textureFlowing": "liquidbedrock",
+ "luminosity": 0,
+ "density": 1000,
+ "viscosity": 1000,
+ "isGas": false,
+ "type": "WATER",
+ "generateBucket": true,
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "frequencyOnChunks": 5,
+ "spawnWorldTypes": [
+ "Surface"
+ ],
+ "restrictionBiomes": []
+ }
+}
\ No newline at end of file
diff --git a/elements/SmaelingPickAxeBlockDestroyedWithTool.mod.json b/elements/SmaelingPickAxeBlockDestroyedWithTool.mod.json
new file mode 100644
index 0000000..a138e3e
--- /dev/null
+++ b/elements/SmaelingPickAxeBlockDestroyedWithTool.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 13,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "Remove_Blockblock_breakEQCUSTOM:SmeltingTouch1Blocks.AIRTRUEADD0.5ADD0.5ADD0.510local:Remove_BlockTRUElocal:Remove_BlockFALSEEQlocal:Remove_BlockTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/SmeltingTouch.mod.json b/elements/SmeltingTouch.mod.json
new file mode 100644
index 0000000..ee9ef91
--- /dev/null
+++ b/elements/SmeltingTouch.mod.json
@@ -0,0 +1,17 @@
+{
+ "_fv": 13,
+ "_type": "enchantment",
+ "definition": {
+ "name": "Smelting Touch",
+ "type": "ALL",
+ "rarity": "COMMON",
+ "minLevel": 1,
+ "maxLevel": 1,
+ "damageModifier": 0,
+ "compatibleEnchantments": [],
+ "compatibleItems": [],
+ "isTreasureEnchantment": true,
+ "isCurse": false,
+ "isAllowedOnBooks": true
+ }
+}
\ No newline at end of file
diff --git a/elements/SmokeBomb.mod.json b/elements/SmokeBomb.mod.json
new file mode 100644
index 0000000..1a8928f
--- /dev/null
+++ b/elements/SmokeBomb.mod.json
@@ -0,0 +1,49 @@
+{
+ "_fv": 13,
+ "_type": "gun",
+ "definition": {
+ "renderType": 0,
+ "texture": "gasbombtxtr",
+ "customModelName": "Normal",
+ "name": "Smoke Bomb",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "stackSize": 1,
+ "ammoItem": {
+ "value": ""
+ },
+ "shootConstantly": false,
+ "usageCount": 16,
+ "actionSound": {
+ "value": "entity.arrow.shoot"
+ },
+ "hasGlow": false,
+ "animation": "spear",
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "bulletPower": 1.0,
+ "bulletDamage": 5.0,
+ "bulletKnockback": 5,
+ "bulletParticles": true,
+ "bulletIgnitesFire": false,
+ "bulletItemTexture": {
+ "value": "CUSTOM:GasBombTxtr"
+ },
+ "bulletModel": "Default",
+ "customBulletModelTexture": "",
+ "onBulletHitsBlock": {
+ "name": "SmokeBombBulletHitsBlock"
+ },
+ "onBulletHitsPlayer": {
+ "name": "GGwandWhileBulletFlyingTick"
+ },
+ "onBulletHitsEntity": {
+ "name": "GGwandWhileBulletFlyingTick"
+ },
+ "onBulletFlyingTick": {
+ "name": "GGwandWhileBulletFlyingTick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/SmokeBombBulletHitsBlock.mod.json b/elements/SmokeBombBulletHitsBlock.mod.json
new file mode 100644
index 0000000..7f7ebc5
--- /dev/null
+++ b/elements/SmokeBombBulletHitsBlock.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 13,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerBLINDNESS1125FALSEFALSESMOKE_LARGE5001010100.5"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelArmor.mod.json b/elements/SteelArmor.mod.json
new file mode 100644
index 0000000..f9cd1f4
--- /dev/null
+++ b/elements/SteelArmor.mod.json
@@ -0,0 +1,57 @@
+{
+ "_fv": 13,
+ "_type": "armor",
+ "definition": {
+ "enableHelmet": true,
+ "textureHelmet": "steel_head",
+ "enableBody": true,
+ "textureBody": "steel_body",
+ "enableLeggings": true,
+ "textureLeggings": "steel_leggings",
+ "enableBoots": true,
+ "textureBoots": "steel_boots",
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "armorTextureFile": "steel",
+ "helmetName": "Steel Helmet",
+ "bodyName": "Steel Chestplate",
+ "leggingsName": "Steel Leggings",
+ "bootsName": "Steel Boots",
+ "helmetSpecialInfo": [],
+ "bodySpecialInfo": [],
+ "leggingsSpecialInfo": [],
+ "bootsSpecialInfo": [],
+ "helmetModelName": "Default",
+ "helmetModelPart": "Helmet",
+ "helmetModelTexture": "From armor",
+ "bodyModelName": "Default",
+ "bodyModelPart": "Body",
+ "armsModelPartL": "Arms L",
+ "armsModelPartR": "Arms R",
+ "bodyModelTexture": "From armor",
+ "leggingsModelName": "Default",
+ "leggingsModelPartL": "Leggings L",
+ "leggingsModelPartR": "Leggings R",
+ "leggingsModelTexture": "From armor",
+ "bootsModelName": "Default",
+ "bootsModelPartL": "Boots L",
+ "bootsModelPartR": "Boots R",
+ "bootsModelTexture": "From armor",
+ "maxDamage": 14,
+ "damageValueHelmet": 2,
+ "damageValueBody": 5,
+ "damageValueLeggings": 6,
+ "damageValueBoots": 2,
+ "enchantability": 9,
+ "toughness": 2.7,
+ "equipSound": {
+ "value": ""
+ },
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelArmorBodyRecipe.mod.json b/elements/SteelArmorBodyRecipe.mod.json
new file mode 100644
index 0000000..55ede0a
--- /dev/null
+++ b/elements/SteelArmorBodyRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelArmor.body"
+ },
+ "name": "steel_armor_body_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelArmorBootsRecipe.mod.json b/elements/SteelArmorBootsRecipe.mod.json
new file mode 100644
index 0000000..0a5243d
--- /dev/null
+++ b/elements/SteelArmorBootsRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelArmor.boots"
+ },
+ "name": "steel_armor_boots_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelArmorHelmetRecipe.mod.json b/elements/SteelArmorHelmetRecipe.mod.json
new file mode 100644
index 0000000..00ebbef
--- /dev/null
+++ b/elements/SteelArmorHelmetRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelArmor.helmet"
+ },
+ "name": "steel_armor_helmet_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelArmorLeggingsRecipe.mod.json b/elements/SteelArmorLeggingsRecipe.mod.json
new file mode 100644
index 0000000..62b3587
--- /dev/null
+++ b/elements/SteelArmorLeggingsRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelArmor.legs"
+ },
+ "name": "steel_armor_leggings_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelAxe.mod.json b/elements/SteelAxe.mod.json
new file mode 100644
index 0000000..b6ffa58
--- /dev/null
+++ b/elements/SteelAxe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_axe",
+ "customModelName": "Normal",
+ "name": "Steel Axe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Axe",
+ "harvestLevel": 10,
+ "efficiency": 7.0,
+ "attackSpeed": 2.0,
+ "enchantability": 14,
+ "damageVsEntity": 13.5,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelAxeRecipe.mod.json b/elements/SteelAxeRecipe.mod.json
new file mode 100644
index 0000000..53e4f90
--- /dev/null
+++ b/elements/SteelAxeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelAxe"
+ },
+ "name": "steel_axe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelBlock.mod.json b/elements/SteelBlock.mod.json
new file mode 100644
index 0000000..f04441e
--- /dev/null
+++ b/elements/SteelBlock.mod.json
@@ -0,0 +1,107 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "steel_ore_block",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Block of Steel",
+ "specialInfo": [],
+ "hardness": 5.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "IRON"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "METAL"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelBlockOreRecipe.mod.json b/elements/SteelBlockOreRecipe.mod.json
new file mode 100644
index 0000000..0ef7eee
--- /dev/null
+++ b/elements/SteelBlockOreRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 9,
+ "group": "",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelBlock"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelIngot"
+ },
+ "name": "steel_block_ore_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelHoe.mod.json b/elements/SteelHoe.mod.json
new file mode 100644
index 0000000..a8bb5ae
--- /dev/null
+++ b/elements/SteelHoe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_hoe",
+ "customModelName": "Normal",
+ "name": "Steel Hoe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Hoe",
+ "harvestLevel": 10,
+ "efficiency": 6.0,
+ "attackSpeed": 1.0,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelHoeRecipe.mod.json b/elements/SteelHoeRecipe.mod.json
new file mode 100644
index 0000000..ff1832b
--- /dev/null
+++ b/elements/SteelHoeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelHoe"
+ },
+ "name": "steel_hoe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelIngot.mod.json b/elements/SteelIngot.mod.json
new file mode 100644
index 0000000..1295555
--- /dev/null
+++ b/elements/SteelIngot.mod.json
@@ -0,0 +1,32 @@
+{
+ "_fv": 13,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_ingot",
+ "customModelName": "Normal",
+ "name": "Steel",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInfo": [],
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelOre.mod.json b/elements/SteelOre.mod.json
new file mode 100644
index 0000000..e0f0314
--- /dev/null
+++ b/elements/SteelOre.mod.json
@@ -0,0 +1,109 @@
+{
+ "_fv": 13,
+ "_type": "block",
+ "definition": {
+ "texture": "steel_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 1.0,
+ "My": 1.0,
+ "Mz": 1.0,
+ "name": "Steel Ore",
+ "specialInfo": [],
+ "hardness": 3.0,
+ "resistance": 5.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "BUILDING_BLOCKS"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": "CUSTOM:SteelIngot"
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "isBeaconBase": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canProvidePower": false,
+ "lightOpacity": 255,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 10,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "luminance": 0.0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "spawnParticles": false,
+ "particleToSpawn": {
+ "value": "EXPLOSION_NORMAL"
+ },
+ "particleSpawningShape": "Spread",
+ "particleSpawningRadious": 0.5,
+ "particleAmount": 4,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "spawnWorldTypes": [
+ "Surface"
+ ],
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "Blocks.STONE"
+ }
+ ],
+ "frequencyPerChunks": 11,
+ "frequencyOnChunk": 7,
+ "minGenerateHeight": 1,
+ "maxGenerateHeight": 63
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelOreBlockRecipe.mod.json b/elements/SteelOreBlockRecipe.mod.json
new file mode 100644
index 0000000..e683ec5
--- /dev/null
+++ b/elements/SteelOreBlockRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelBlock"
+ },
+ "name": "steel_ore_block_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelOreSmelting.mod.json b/elements/SteelOreSmelting.mod.json
new file mode 100644
index 0000000..b174df6
--- /dev/null
+++ b/elements/SteelOreSmelting.mod.json
@@ -0,0 +1,52 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smelting",
+ "xpReward": 0.7,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": ""
+ },
+ "smeltingInputStack": {
+ "value": "CUSTOM:SteelOre"
+ },
+ "smeltingReturnStack": {
+ "value": "CUSTOM:SteelIngot"
+ },
+ "name": "steel_ore_smelting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelPickaxe.mod.json b/elements/SteelPickaxe.mod.json
new file mode 100644
index 0000000..85194f3
--- /dev/null
+++ b/elements/SteelPickaxe.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_pickaxe",
+ "customModelName": "Normal",
+ "name": "Steel Pickaxe",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Pickaxe",
+ "harvestLevel": 10,
+ "efficiency": 10.0,
+ "attackSpeed": 2.7,
+ "enchantability": 14,
+ "damageVsEntity": 5.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": true
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelPickaxeRecipe.mod.json b/elements/SteelPickaxeRecipe.mod.json
new file mode 100644
index 0000000..9f1f140
--- /dev/null
+++ b/elements/SteelPickaxeRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelPickaxe"
+ },
+ "name": "steel_pickaxe_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelRecipie.mod.json b/elements/SteelRecipie.mod.json
new file mode 100644
index 0000000..8eaf20c
--- /dev/null
+++ b/elements/SteelRecipie.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "Items.COAL"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelIngot"
+ },
+ "name": "steel_recipie",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelShovel.mod.json b/elements/SteelShovel.mod.json
new file mode 100644
index 0000000..04cbb5d
--- /dev/null
+++ b/elements/SteelShovel.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_shovel",
+ "customModelName": "Normal",
+ "name": "Steel Shovel",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "TOOLS"
+ },
+ "toolType": "Spade",
+ "harvestLevel": 10,
+ "efficiency": 7.5,
+ "attackSpeed": 1.1,
+ "enchantability": 14,
+ "damageVsEntity": 2.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelShovelRecipe.mod.json b/elements/SteelShovelRecipe.mod.json
new file mode 100644
index 0000000..b3ab729
--- /dev/null
+++ b/elements/SteelShovelRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelShovel"
+ },
+ "name": "steel_shovel_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelSword.mod.json b/elements/SteelSword.mod.json
new file mode 100644
index 0000000..8b721ed
--- /dev/null
+++ b/elements/SteelSword.mod.json
@@ -0,0 +1,30 @@
+{
+ "_fv": 13,
+ "_type": "tool",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_sword",
+ "customModelName": "Normal",
+ "name": "Steel Sword",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "toolType": "Sword",
+ "harvestLevel": 10,
+ "efficiency": 7.0,
+ "attackSpeed": 7.4,
+ "enchantability": 14,
+ "damageVsEntity": 10.0,
+ "usageCount": 250,
+ "blocksAffected": [],
+ "hasGlow": false,
+ "repairItems": [
+ {
+ "value": "CUSTOM:SteelIngot"
+ }
+ ],
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelSwordRecipe.mod.json b/elements/SteelSwordRecipe.mod.json
new file mode 100644
index 0000000..70150e5
--- /dev/null
+++ b/elements/SteelSwordRecipe.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelSword"
+ },
+ "name": "steel_sword_recipe",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Uzi.mod.json b/elements/Uzi.mod.json
new file mode 100644
index 0000000..8aff8d7
--- /dev/null
+++ b/elements/Uzi.mod.json
@@ -0,0 +1,40 @@
+{
+ "_fv": 13,
+ "_type": "gun",
+ "definition": {
+ "renderType": 0,
+ "texture": "uzi",
+ "customModelName": "Normal",
+ "name": "Uzi",
+ "specialInfo": [],
+ "creativeTab": {
+ "value": "COMBAT"
+ },
+ "stackSize": 1,
+ "ammoItem": {
+ "value": "CUSTOM:Ammo"
+ },
+ "shootConstantly": true,
+ "usageCount": 250,
+ "actionSound": {
+ "value": "entity.arrow.shoot"
+ },
+ "hasGlow": false,
+ "animation": "none",
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "bulletPower": 1.3,
+ "bulletDamage": 5.0,
+ "bulletKnockback": 5,
+ "bulletParticles": true,
+ "bulletIgnitesFire": false,
+ "bulletItemTexture": {
+ "value": "CUSTOM:Ammo"
+ },
+ "bulletModel": "Default",
+ "customBulletModelTexture": "ammo.png",
+ "onBulletFlyingTick": {
+ "name": "UziWhileBulletFlyingTick"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/UziRecipie.mod.json b/elements/UziRecipie.mod.json
new file mode 100644
index 0000000..e093566
--- /dev/null
+++ b/elements/UziRecipie.mod.json
@@ -0,0 +1,46 @@
+{
+ "_fv": 13,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "recipeRetstackSize": 1,
+ "group": "",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.GLASS_PANE"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": "CUSTOM:SteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.TRIPWIRE_HOOK"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Uzi"
+ },
+ "name": "uzi_recipie",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/UziWhileBulletFlyingTick.mod.json b/elements/UziWhileBulletFlyingTick.mod.json
new file mode 100644
index 0000000..6fa4659
--- /dev/null
+++ b/elements/UziWhileBulletFlyingTick.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 13,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerSMOKE_LARGE010"
+ }
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..7a3265e
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..1d5b29f
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..1b030e8
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,180 @@
+#!/usr/bin/env bash
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..5025538
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,106 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/mcreator.gradle b/mcreator.gradle
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/java/bitbucket/org/darkdays/DarkdaysMod.java b/src/main/java/bitbucket/org/darkdays/DarkdaysMod.java
new file mode 100644
index 0000000..b540248
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/DarkdaysMod.java
@@ -0,0 +1,103 @@
+/*
+ * MCreator note:
+ *
+ * If you lock base mod element files, you can edit this file and the proxy files
+ * and they won't get overwritten. If you change your mod package or modid, you
+ * need to apply these changes to this file MANUALLY.
+ *
+ * Settings in @Mod annotation WON'T be changed in case of the base mod element
+ * files lock too, so you need to set them manually here in such case.
+ *
+ * Keep the DarkdaysModElements object in this class and all calls to this object
+ * INTACT in order to preserve functionality of mod elements generated by MCreator.
+ *
+ * If you do not lock base mod element files in Workspace settings, this file
+ * will be REGENERATED on each build.
+ *
+ */
+package bitbucket.org.darkdays;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+
+import net.minecraftforge.fml.network.simple.SimpleChannel;
+import net.minecraftforge.fml.network.NetworkRegistry;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.biome.Biome;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.item.Item;
+import net.minecraft.entity.EntityType;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.block.Block;
+
+import java.util.function.Supplier;
+
+@Mod("darkdays")
+public class DarkdaysMod {
+ public static final Logger LOGGER = LogManager.getLogger(DarkdaysMod.class);
+ private static final String PROTOCOL_VERSION = "1";
+ public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation("darkdays", "darkdays"),
+ () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
+ public DarkdaysModElements elements;
+ public DarkdaysMod() {
+ elements = new DarkdaysModElements();
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init);
+ FMLJavaModLoadingContext.get().getModEventBus().register(this);
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ private void init(FMLCommonSetupEvent event) {
+ elements.getElements().forEach(element -> element.init(event));
+ }
+
+ @SubscribeEvent
+ public void serverLoad(FMLServerStartingEvent event) {
+ elements.getElements().forEach(element -> element.serverLoad(event));
+ }
+
+ @SubscribeEvent
+ @OnlyIn(Dist.CLIENT)
+ public void clientLoad(FMLClientSetupEvent event) {
+ elements.getElements().forEach(element -> element.clientLoad(event));
+ }
+
+ @SubscribeEvent
+ public void registerBlocks(RegistryEvent.Register event) {
+ event.getRegistry().registerAll(elements.getBlocks().stream().map(Supplier::get).toArray(Block[]::new));
+ }
+
+ @SubscribeEvent
+ public void registerItems(RegistryEvent.Register- event) {
+ event.getRegistry().registerAll(elements.getItems().stream().map(Supplier::get).toArray(Item[]::new));
+ }
+
+ @SubscribeEvent
+ public void registerBiomes(RegistryEvent.Register event) {
+ event.getRegistry().registerAll(elements.getBiomes().stream().map(Supplier::get).toArray(Biome[]::new));
+ }
+
+ @SubscribeEvent
+ public void registerEntities(RegistryEvent.Register> event) {
+ event.getRegistry().registerAll(elements.getEntities().stream().map(Supplier::get).toArray(EntityType[]::new));
+ }
+
+ @SubscribeEvent
+ public void registerEnchantments(RegistryEvent.Register event) {
+ event.getRegistry().registerAll(elements.getEnchantments().stream().map(Supplier::get).toArray(Enchantment[]::new));
+ }
+
+ @SubscribeEvent
+ public void registerSounds(RegistryEvent.Register event) {
+ elements.registerSounds(event);
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/DarkdaysModElements.java b/src/main/java/bitbucket/org/darkdays/DarkdaysModElements.java
new file mode 100644
index 0000000..720ac39
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/DarkdaysModElements.java
@@ -0,0 +1,132 @@
+/*
+ * MCreator note:
+ *
+ * This file is autogenerated to connect all MCreator mod elements together.
+ *
+ */
+package bitbucket.org.darkdays;
+
+import net.minecraftforge.forgespi.language.ModFileScanData;
+import net.minecraftforge.fml.network.NetworkEvent;
+import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fml.ModList;
+import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.biome.Biome;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.tags.Tag;
+import net.minecraft.network.PacketBuffer;
+import net.minecraft.item.Item;
+import net.minecraft.entity.EntityType;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.block.Block;
+
+import java.util.function.Supplier;
+import java.util.function.Function;
+import java.util.function.BiConsumer;
+import java.util.Set;
+import java.util.Map;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Collections;
+import java.util.ArrayList;
+
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Retention;
+
+public class DarkdaysModElements {
+ public final List elements = new ArrayList<>();
+ public final List> blocks = new ArrayList<>();
+ public final List> items = new ArrayList<>();
+ public final List> biomes = new ArrayList<>();
+ public final List>> entities = new ArrayList<>();
+ public final List> enchantments = new ArrayList<>();
+ public static Map sounds = new HashMap<>();
+ public DarkdaysModElements() {
+ sounds.put(new ResourceLocation("darkdays", "ggwandsound"),
+ new net.minecraft.util.SoundEvent(new ResourceLocation("darkdays", "ggwandsound")));
+ try {
+ ModFileScanData modFileInfo = ModList.get().getModFileById("darkdays").getFile().getScanResult();
+ Set annotations = modFileInfo.getAnnotations();
+ for (ModFileScanData.AnnotationData annotationData : annotations) {
+ if (annotationData.getAnnotationType().getClassName().equals(ModElement.Tag.class.getName())) {
+ Class> clazz = Class.forName(annotationData.getClassType().getClassName());
+ if (clazz.getSuperclass() == DarkdaysModElements.ModElement.class)
+ elements.add((DarkdaysModElements.ModElement) clazz.getConstructor(this.getClass()).newInstance(this));
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ Collections.sort(elements);
+ elements.forEach(DarkdaysModElements.ModElement::initElements);
+ }
+
+ public void registerSounds(RegistryEvent.Register event) {
+ for (Map.Entry sound : sounds.entrySet())
+ event.getRegistry().register(sound.getValue().setRegistryName(sound.getKey()));
+ }
+ private int messageID = 0;
+ public void addNetworkMessage(Class messageType, BiConsumer encoder, Function decoder,
+ BiConsumer> messageConsumer) {
+ DarkdaysMod.PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer);
+ messageID++;
+ }
+
+ public List getElements() {
+ return elements;
+ }
+
+ public List> getBlocks() {
+ return blocks;
+ }
+
+ public List> getItems() {
+ return items;
+ }
+
+ public List> getBiomes() {
+ return biomes;
+ }
+
+ public List>> getEntities() {
+ return entities;
+ }
+
+ public List> getEnchantments() {
+ return enchantments;
+ }
+ public static class ModElement implements Comparable {
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Tag {
+ }
+ protected final DarkdaysModElements elements;
+ protected final int sortid;
+ public ModElement(DarkdaysModElements elements, int sortid) {
+ this.elements = elements;
+ this.sortid = sortid;
+ }
+
+ public void initElements() {
+ }
+
+ public void init(FMLCommonSetupEvent event) {
+ }
+
+ public void serverLoad(FMLServerStartingEvent event) {
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ public void clientLoad(FMLClientSetupEvent event) {
+ }
+
+ @Override
+ public int compareTo(ModElement other) {
+ return this.sortid - other.sortid;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceBlock.java
new file mode 100644
index 0000000..e7256c6
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceBlock.java
@@ -0,0 +1,66 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.FenceGateBlock;
+import net.minecraft.block.FenceBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodFenceBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_fence")
+ public static final Block block = null;
+ public Bed_WoodFenceBlock(DarkdaysModElements instance) {
+ super(instance, 57);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends FenceBlock {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 3f).lightValue(0));
+ setRegistryName("bed_wood_fence");
+ }
+
+ @Override
+ public boolean canConnect(BlockState state, boolean checkattach, Direction face) {
+ boolean flag = state.getBlock() instanceof FenceBlock && state.getMaterial() == this.material;
+ boolean flag1 = state.getBlock() instanceof FenceGateBlock && FenceGateBlock.isParallel(state, face);
+ return !cannotAttach(state.getBlock()) && checkattach || flag || flag1;
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceGateBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceGateBlock.java
new file mode 100644
index 0000000..ba00e47
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodFenceGateBlock.java
@@ -0,0 +1,58 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.FenceGateBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodFenceGateBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_fence_gate")
+ public static final Block block = null;
+ public Bed_WoodFenceGateBlock(DarkdaysModElements instance) {
+ super(instance, 58);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends FenceGateBlock {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 3f).lightValue(0));
+ setRegistryName("bed_wood_fence_gate");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLeavesBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLeavesBlock.java
new file mode 100644
index 0000000..af71b81
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLeavesBlock.java
@@ -0,0 +1,58 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.LeavesBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodLeavesBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_leaves")
+ public static final Block block = null;
+ public Bed_WoodLeavesBlock(DarkdaysModElements instance) {
+ super(instance, 54);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends LeavesBlock {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.LEAVES).sound(SoundType.PLANT).hardnessAndResistance(0.2f, 0.2f).lightValue(0).notSolid());
+ setRegistryName("bed_wood_leaves");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 30;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLogBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLogBlock.java
new file mode 100644
index 0000000..720fe23
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodLogBlock.java
@@ -0,0 +1,65 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.common.ToolType;
+import net.minecraftforge.common.IPlantable;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodLogBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_log")
+ public static final Block block = null;
+ public Bed_WoodLogBlock(DarkdaysModElements instance) {
+ super(instance, 52);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 2f).lightValue(0).harvestLevel(0)
+ .harvestTool(ToolType.AXE));
+ setRegistryName("bed_wood_log");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction direction, IPlantable plantable) {
+ return true;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodPlanksBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodPlanksBlock.java
new file mode 100644
index 0000000..af464d1
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodPlanksBlock.java
@@ -0,0 +1,59 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.common.ToolType;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodPlanksBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_planks")
+ public static final Block block = null;
+ public Bed_WoodPlanksBlock(DarkdaysModElements instance) {
+ super(instance, 53);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 3f).lightValue(0).harvestLevel(0)
+ .harvestTool(ToolType.AXE));
+ setRegistryName("bed_wood_planks");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodSlabBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodSlabBlock.java
new file mode 100644
index 0000000..4a5245c
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodSlabBlock.java
@@ -0,0 +1,59 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.state.properties.SlabType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.SlabBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodSlabBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_slab")
+ public static final Block block = null;
+ public Bed_WoodSlabBlock(DarkdaysModElements instance) {
+ super(instance, 56);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends SlabBlock {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 3f).lightValue(0));
+ setRegistryName("bed_wood_slab");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, state.get(TYPE) == SlabType.DOUBLE ? 2 : 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodStairsBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodStairsBlock.java
new file mode 100644
index 0000000..507349d
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodStairsBlock.java
@@ -0,0 +1,59 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.StairsBlock;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodStairsBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_stairs")
+ public static final Block block = null;
+ public Bed_WoodStairsBlock(DarkdaysModElements instance) {
+ super(instance, 55);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends StairsBlock {
+ public CustomBlock() {
+ super(new Block(Block.Properties.create(Material.ROCK).hardnessAndResistance(3f, 2f)).getDefaultState(),
+ Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(3f, 2f).lightValue(0));
+ setRegistryName("bed_wood_stairs");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/Bed_WoodWoodBlock.java b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodWoodBlock.java
new file mode 100644
index 0000000..88a518f
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/Bed_WoodWoodBlock.java
@@ -0,0 +1,65 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.common.ToolType;
+import net.minecraftforge.common.IPlantable;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class Bed_WoodWoodBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bed_wood_wood")
+ public static final Block block = null;
+ public Bed_WoodWoodBlock(DarkdaysModElements instance) {
+ super(instance, 51);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2f, 2f).lightValue(0).harvestLevel(0)
+ .harvestTool(ToolType.AXE));
+ setRegistryName("bed_wood_wood");
+ }
+
+ @Override
+ public int getFlammability(BlockState state, IBlockReader world, BlockPos pos, Direction face) {
+ return 5;
+ }
+
+ @Override
+ public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction direction, IPlantable plantable) {
+ return true;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/BedrockBlockBlock.java b/src/main/java/bitbucket/org/darkdays/block/BedrockBlockBlock.java
new file mode 100644
index 0000000..ef86b2d
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/BedrockBlockBlock.java
@@ -0,0 +1,51 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.common.ToolType;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockBlockBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_block")
+ public static final Block block = null;
+ public BedrockBlockBlock(DarkdaysModElements instance) {
+ super(instance, 30);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(5f, 10f).lightValue(0).harvestLevel(2)
+ .harvestTool(ToolType.PICKAXE));
+ setRegistryName("bedrock_block");
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/BedrockOreBlock.java b/src/main/java/bitbucket/org/darkdays/block/BedrockOreBlock.java
new file mode 100644
index 0000000..d9f1584
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/BedrockOreBlock.java
@@ -0,0 +1,121 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.common.ToolType;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.gen.placement.Placement;
+import net.minecraft.world.gen.placement.CountRangeConfig;
+import net.minecraft.world.gen.feature.OreFeatureConfig;
+import net.minecraft.world.gen.feature.OreFeature;
+import net.minecraft.world.gen.GenerationStage;
+import net.minecraft.world.gen.ChunkGenerator;
+import net.minecraft.world.dimension.DimensionType;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.World;
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.particles.ParticleTypes;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.client.Minecraft;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.Random;
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.item.BedrockDustItem;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockOreBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_ore")
+ public static final Block block = null;
+ public BedrockOreBlock(DarkdaysModElements instance) {
+ super(instance, 29);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(10f, 10000f).lightValue(0).harvestLevel(10)
+ .harvestTool(ToolType.PICKAXE));
+ setRegistryName("bedrock_ore");
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public boolean isEmissiveRendering(BlockState blockState) {
+ return true;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(BedrockDustItem.block, (int) (3)));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public void animateTick(BlockState state, World world, BlockPos pos, Random random) {
+ super.animateTick(state, world, pos, random);
+ PlayerEntity entity = Minecraft.getInstance().player;
+ int x = pos.getX();
+ int y = pos.getY();
+ int z = pos.getZ();
+ if (true)
+ for (int l = 0; l < 4; ++l) {
+ double d0 = (x + random.nextFloat());
+ double d1 = (y + random.nextFloat());
+ double d2 = (z + random.nextFloat());
+ int i1 = random.nextInt(2) * 2 - 1;
+ double d3 = (random.nextFloat() - 0.5D) * 0.5D;
+ double d4 = (random.nextFloat() - 0.5D) * 0.5D;
+ double d5 = (random.nextFloat() - 0.5D) * 0.5D;
+ world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, d0, d1, d2, d3, d4, d5);
+ }
+ }
+ }
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ for (Biome biome : ForgeRegistries.BIOMES.getValues()) {
+ biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, new OreFeature(OreFeatureConfig::deserialize) {
+ @Override
+ public boolean place(IWorld world, ChunkGenerator generator, Random rand, BlockPos pos, OreFeatureConfig config) {
+ DimensionType dimensionType = world.getDimension().getType();
+ boolean dimensionCriteria = false;
+ if (dimensionType == DimensionType.OVERWORLD)
+ dimensionCriteria = true;
+ if (!dimensionCriteria)
+ return false;
+ return super.place(world, generator, rand, pos, config);
+ }
+ }.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.create("bedrock_ore", "bedrock_ore", blockAt -> {
+ boolean blockCriteria = false;
+ if (blockAt.getBlock() == Blocks.STONE.getDefaultState().getBlock())
+ blockCriteria = true;
+ return blockCriteria;
+ }), block.getDefaultState(), 7)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(11, 1, 1, 12))));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/BedsoilBlock.java b/src/main/java/bitbucket/org/darkdays/block/BedsoilBlock.java
new file mode 100644
index 0000000..1d3c1f3
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/BedsoilBlock.java
@@ -0,0 +1,49 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedsoilBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedsoil")
+ public static final Block block = null;
+ public BedsoilBlock(DarkdaysModElements instance) {
+ super(instance, 50);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.ROCK).sound(SoundType.GROUND).hardnessAndResistance(1f, 10f).lightValue(0));
+ setRegistryName("bedsoil");
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/BedstoneBlock.java b/src/main/java/bitbucket/org/darkdays/block/BedstoneBlock.java
new file mode 100644
index 0000000..80f7d50
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/BedstoneBlock.java
@@ -0,0 +1,49 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedstoneBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedstone")
+ public static final Block block = null;
+ public BedstoneBlock(DarkdaysModElements instance) {
+ super(instance, 49);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.ROCK).sound(SoundType.GROUND).hardnessAndResistance(1f, 10f).lightValue(0));
+ setRegistryName("bedstone");
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/DarkAppleFruitBlock.java b/src/main/java/bitbucket/org/darkdays/block/DarkAppleFruitBlock.java
new file mode 100644
index 0000000..0c7569c
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/DarkAppleFruitBlock.java
@@ -0,0 +1,124 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.World;
+import net.minecraft.world.ILightReader;
+import net.minecraft.world.IBlockReader;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.particles.ParticleTypes;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.fluid.IFluidState;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.client.renderer.RenderTypeLookup;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.Minecraft;
+import net.minecraft.block.material.PushReaction;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.Random;
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.item.DarkAppleItem;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class DarkAppleFruitBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:dark_apple_fruit")
+ public static final Block block = null;
+ public DarkAppleFruitBlock(DarkdaysModElements instance) {
+ super(instance, 73);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items.add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.FOOD)).setRegistryName(block.getRegistryName()));
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void clientLoad(FMLClientSetupEvent event) {
+ RenderTypeLookup.setRenderLayer(block, RenderType.getTranslucent());
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.ROCK).sound(SoundType.GROUND).hardnessAndResistance(0.05f, 10f).lightValue(0)
+ .doesNotBlockMovement().notSolid());
+ setRegistryName("dark_apple_fruit");
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public boolean isEmissiveRendering(BlockState blockState) {
+ return true;
+ }
+
+ @Override
+ public boolean shouldDisplayFluidOverlay(BlockState state, ILightReader world, BlockPos pos, IFluidState fluidstate) {
+ return true;
+ }
+
+ @Override
+ public boolean isNormalCube(BlockState state, IBlockReader worldIn, BlockPos pos) {
+ return false;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, Direction side) {
+ return adjacentBlockState.getBlock() == this ? true : super.isSideInvisible(state, adjacentBlockState, side);
+ }
+
+ @Override
+ public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) {
+ return true;
+ }
+
+ @Override
+ public PushReaction getPushReaction(BlockState state) {
+ return PushReaction.DESTROY;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(DarkAppleItem.block, (int) (4)));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public void animateTick(BlockState state, World world, BlockPos pos, Random random) {
+ super.animateTick(state, world, pos, random);
+ PlayerEntity entity = Minecraft.getInstance().player;
+ int x = pos.getX();
+ int y = pos.getY();
+ int z = pos.getZ();
+ if (true)
+ for (int l = 0; l < 15; ++l) {
+ double d0 = (x + random.nextFloat());
+ double d1 = (y + random.nextFloat());
+ double d2 = (z + random.nextFloat());
+ int i1 = random.nextInt(2) * 2 - 1;
+ double d3 = (random.nextFloat() - 0.5D) * 1.500000001490116D;
+ double d4 = (random.nextFloat() - 0.5D) * 1.500000001490116D;
+ double d5 = (random.nextFloat() - 0.5D) * 1.500000001490116D;
+ world.addParticle(ParticleTypes.INSTANT_EFFECT, d0, d1, d2, d3, d4, d5);
+ }
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/LiquidBedrockBlock.java b/src/main/java/bitbucket/org/darkdays/block/LiquidBedrockBlock.java
new file mode 100644
index 0000000..32f4cbf
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/LiquidBedrockBlock.java
@@ -0,0 +1,101 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fluids.ForgeFlowingFluid;
+import net.minecraftforge.fluids.FluidAttributes;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.gen.placement.Placement;
+import net.minecraft.world.gen.placement.ChanceConfig;
+import net.minecraft.world.gen.feature.LakesFeature;
+import net.minecraft.world.gen.feature.BlockStateFeatureConfig;
+import net.minecraft.world.gen.GenerationStage;
+import net.minecraft.world.gen.ChunkGenerator;
+import net.minecraft.world.dimension.DimensionType;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.item.Items;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BucketItem;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.fluid.FlowingFluid;
+import net.minecraft.client.renderer.RenderTypeLookup;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.FlowingFluidBlock;
+import net.minecraft.block.Block;
+
+import java.util.Random;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class LiquidBedrockBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:liquid_bedrock")
+ public static final FlowingFluidBlock block = null;
+ @ObjectHolder("darkdays:liquid_bedrock_bucket")
+ public static final Item bucket = null;
+ public static FlowingFluid flowing = null;
+ public static FlowingFluid still = null;
+ private ForgeFlowingFluid.Properties fluidproperties = null;
+ public LiquidBedrockBlock(DarkdaysModElements instance) {
+ super(instance, 67);
+ FMLJavaModLoadingContext.get().getModEventBus().register(this);
+ }
+
+ @SubscribeEvent
+ public void registerFluids(RegistryEvent.Register event) {
+ event.getRegistry().register(still);
+ event.getRegistry().register(flowing);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void clientLoad(FMLClientSetupEvent event) {
+ RenderTypeLookup.setRenderLayer(still, RenderType.getTranslucent());
+ RenderTypeLookup.setRenderLayer(flowing, RenderType.getTranslucent());
+ }
+
+ @Override
+ public void initElements() {
+ fluidproperties = new ForgeFlowingFluid.Properties(() -> still, () -> flowing,
+ FluidAttributes.builder(new ResourceLocation("darkdays:blocks/liquidbedrock"), new ResourceLocation("darkdays:blocks/liquidbedrock"))
+ .luminosity(0).density(1000).viscosity(1000)).bucket(() -> bucket).block(() -> block);
+ still = (FlowingFluid) new ForgeFlowingFluid.Source(fluidproperties).setRegistryName("liquid_bedrock");
+ flowing = (FlowingFluid) new ForgeFlowingFluid.Flowing(fluidproperties).setRegistryName("liquid_bedrock_flowing");
+ elements.blocks.add(() -> new FlowingFluidBlock(still, Block.Properties.create(Material.WATER)) {
+ }.setRegistryName("liquid_bedrock"));
+ elements.items.add(() -> new BucketItem(still, new Item.Properties().containerItem(Items.BUCKET).maxStackSize(1).group(ItemGroup.MISC))
+ .setRegistryName("liquid_bedrock_bucket"));
+ }
+
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ for (Biome biome : ForgeRegistries.BIOMES.getValues()) {
+ biome.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, new LakesFeature(BlockStateFeatureConfig::deserialize) {
+ @Override
+ public boolean place(IWorld world, ChunkGenerator generator, Random rand, BlockPos pos, BlockStateFeatureConfig config) {
+ DimensionType dimensionType = world.getDimension().getType();
+ boolean dimensionCriteria = false;
+ if (dimensionType == DimensionType.OVERWORLD)
+ dimensionCriteria = true;
+ if (!dimensionCriteria)
+ return false;
+ return super.place(world, generator, rand, pos, config);
+ }
+ }.withConfiguration(new BlockStateFeatureConfig(block.getDefaultState()))
+ .withPlacement(Placement.WATER_LAKE.configure(new ChanceConfig(5))));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/SteelBlockBlock.java b/src/main/java/bitbucket/org/darkdays/block/SteelBlockBlock.java
new file mode 100644
index 0000000..c72ba64
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/SteelBlockBlock.java
@@ -0,0 +1,51 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.common.ToolType;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelBlockBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_block")
+ public static final Block block = null;
+ public SteelBlockBlock(DarkdaysModElements instance) {
+ super(instance, 8);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(5f, 10f).lightValue(0).harvestLevel(2)
+ .harvestTool(ToolType.PICKAXE));
+ setRegistryName("steel_block");
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/block/SteelOreBlock.java b/src/main/java/bitbucket/org/darkdays/block/SteelOreBlock.java
new file mode 100644
index 0000000..9dc7bf5
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/block/SteelOreBlock.java
@@ -0,0 +1,88 @@
+
+package bitbucket.org.darkdays.block;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.common.ToolType;
+
+import net.minecraft.world.storage.loot.LootContext;
+import net.minecraft.world.gen.placement.Placement;
+import net.minecraft.world.gen.placement.CountRangeConfig;
+import net.minecraft.world.gen.feature.OreFeatureConfig;
+import net.minecraft.world.gen.feature.OreFeature;
+import net.minecraft.world.gen.GenerationStage;
+import net.minecraft.world.gen.ChunkGenerator;
+import net.minecraft.world.dimension.DimensionType;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.BlockItem;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.Random;
+import java.util.List;
+import java.util.Collections;
+
+import bitbucket.org.darkdays.item.SteelIngotItem;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelOreBlock extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_ore")
+ public static final Block block = null;
+ public SteelOreBlock(DarkdaysModElements instance) {
+ super(instance, 7);
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomBlock());
+ elements.items
+ .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
+ }
+ public static class CustomBlock extends Block {
+ public CustomBlock() {
+ super(Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(3f, 5f).lightValue(0).harvestLevel(2)
+ .harvestTool(ToolType.PICKAXE));
+ setRegistryName("steel_ore");
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootContext.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ for (Biome biome : ForgeRegistries.BIOMES.getValues()) {
+ biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, new OreFeature(OreFeatureConfig::deserialize) {
+ @Override
+ public boolean place(IWorld world, ChunkGenerator generator, Random rand, BlockPos pos, OreFeatureConfig config) {
+ DimensionType dimensionType = world.getDimension().getType();
+ boolean dimensionCriteria = false;
+ if (dimensionType == DimensionType.OVERWORLD)
+ dimensionCriteria = true;
+ if (!dimensionCriteria)
+ return false;
+ return super.place(world, generator, rand, pos, config);
+ }
+ }.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.create("steel_ore", "steel_ore", blockAt -> {
+ boolean blockCriteria = false;
+ if (blockAt.getBlock() == Blocks.STONE.getDefaultState().getBlock())
+ blockCriteria = true;
+ return blockCriteria;
+ }), block.getDefaultState(), 7)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(11, 1, 1, 63))));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/enchantment/SmeltingTouchEnchantment.java b/src/main/java/bitbucket/org/darkdays/enchantment/SmeltingTouchEnchantment.java
new file mode 100644
index 0000000..24e286f
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/enchantment/SmeltingTouchEnchantment.java
@@ -0,0 +1,54 @@
+
+package bitbucket.org.darkdays.enchantment;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.inventory.EquipmentSlotType;
+import net.minecraft.enchantment.EnchantmentType;
+import net.minecraft.enchantment.Enchantment;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SmeltingTouchEnchantment extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:smelting_touch")
+ public static final Enchantment enchantment = null;
+ public SmeltingTouchEnchantment(DarkdaysModElements instance) {
+ super(instance, 2);
+ }
+
+ @Override
+ public void initElements() {
+ elements.enchantments.add(() -> new CustomEnchantment(EquipmentSlotType.MAINHAND).setRegistryName("smelting_touch"));
+ }
+ public static class CustomEnchantment extends Enchantment {
+ public CustomEnchantment(EquipmentSlotType... slots) {
+ super(Enchantment.Rarity.COMMON, EnchantmentType.ALL, slots);
+ }
+
+ @Override
+ public int getMinLevel() {
+ return 1;
+ }
+
+ @Override
+ public int getMaxLevel() {
+ return 1;
+ }
+
+ @Override
+ public boolean isTreasureEnchantment() {
+ return true;
+ }
+
+ @Override
+ public boolean isCurse() {
+ return false;
+ }
+
+ @Override
+ public boolean isAllowedOnBooks() {
+ return true;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/AmmoItem.java b/src/main/java/bitbucket/org/darkdays/item/AmmoItem.java
new file mode 100644
index 0000000..a2a20d5
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/AmmoItem.java
@@ -0,0 +1,47 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.block.BlockState;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class AmmoItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:ammo")
+ public static final Item block = null;
+ public AmmoItem(DarkdaysModElements instance) {
+ super(instance, 74);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemCustom());
+ }
+ public static class ItemCustom extends Item {
+ public ItemCustom() {
+ super(new Item.Properties().group(ItemGroup.COMBAT).maxStackSize(64).rarity(Rarity.COMMON));
+ setRegistryName("ammo");
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 0;
+ }
+
+ @Override
+ public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) {
+ return 1F;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BederItem.java b/src/main/java/bitbucket/org/darkdays/item/BederItem.java
new file mode 100644
index 0000000..a679887
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BederItem.java
@@ -0,0 +1,42 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.World;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.ActionResultType;
+import net.minecraft.item.ItemUseContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.entity.player.PlayerEntity;
+
+import bitbucket.org.darkdays.world.dimension.BederDimension;
+
+public class BederItem extends Item {
+ @ObjectHolder("darkdays:beder")
+ public static final Item block = null;
+ public BederItem() {
+ super(new Item.Properties().group(ItemGroup.TOOLS).maxDamage(64));
+ }
+
+ @Override
+ public ActionResultType onItemUse(ItemUseContext context) {
+ PlayerEntity entity = context.getPlayer();
+ BlockPos pos = context.getPos().offset(context.getFace());
+ ItemStack itemstack = context.getItem();
+ World world = context.getWorld();
+ if (!entity.canPlayerEdit(pos, context.getFace(), itemstack)) {
+ return ActionResultType.FAIL;
+ } else {
+ int x = pos.getX();
+ int y = pos.getY();
+ int z = pos.getZ();
+ if (world.isAirBlock(pos) && true)
+ BederDimension.portal.portalSpawn(world, pos);
+ itemstack.damageItem(1, entity, c -> c.sendBreakAnimation(context.getHand()));
+ return ActionResultType.SUCCESS;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockArmorItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockArmorItem.java
new file mode 100644
index 0000000..bb3a99e
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockArmorItem.java
@@ -0,0 +1,92 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IArmorMaterial;
+import net.minecraft.item.ArmorItem;
+import net.minecraft.inventory.EquipmentSlotType;
+import net.minecraft.entity.Entity;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockArmorItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_armor_helmet")
+ public static final Item helmet = null;
+ @ObjectHolder("darkdays:bedrock_armor_chestplate")
+ public static final Item body = null;
+ @ObjectHolder("darkdays:bedrock_armor_leggings")
+ public static final Item legs = null;
+ @ObjectHolder("darkdays:bedrock_armor_boots")
+ public static final Item boots = null;
+ public BedrockArmorItem(DarkdaysModElements instance) {
+ super(instance, 44);
+ }
+
+ @Override
+ public void initElements() {
+ IArmorMaterial armormaterial = new IArmorMaterial() {
+ public int getDurability(EquipmentSlotType slot) {
+ return new int[]{13, 15, 16, 11}[slot.getIndex()] * 19;
+ }
+
+ public int getDamageReductionAmount(EquipmentSlotType slot) {
+ return new int[]{2, 6, 5, 2}[slot.getIndex()];
+ }
+
+ public int getEnchantability() {
+ return 9;
+ }
+
+ public net.minecraft.util.SoundEvent getSoundEvent() {
+ return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(""));
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ public String getName() {
+ return "bedrock_armor";
+ }
+
+ public float getToughness() {
+ return 5f;
+ }
+ };
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.HEAD, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/bedrock_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("bedrock_armor_helmet"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.CHEST, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/bedrock_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("bedrock_armor_chestplate"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.LEGS, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/bedrock_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("bedrock_armor_leggings"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.FEET, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/bedrock_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("bedrock_armor_boots"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockAxeItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockAxeItem.java
new file mode 100644
index 0000000..185e625
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockAxeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+import net.minecraft.item.AxeItem;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockAxeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_axe")
+ public static final Item block = null;
+ public BedrockAxeItem(DarkdaysModElements instance) {
+ super(instance, 35);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new AxeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 2;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+ }, 1, -3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("bedrock_axe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockDustItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockDustItem.java
new file mode 100644
index 0000000..094335d
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockDustItem.java
@@ -0,0 +1,47 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.block.BlockState;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockDustItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_dust")
+ public static final Item block = null;
+ public BedrockDustItem(DarkdaysModElements instance) {
+ super(instance, 28);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemCustom());
+ }
+ public static class ItemCustom extends Item {
+ public ItemCustom() {
+ super(new Item.Properties().group(ItemGroup.MISC).maxStackSize(64).rarity(Rarity.COMMON));
+ setRegistryName("bedrock_dust");
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 0;
+ }
+
+ @Override
+ public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) {
+ return 1F;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockHoeItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockHoeItem.java
new file mode 100644
index 0000000..62249cd
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockHoeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+import net.minecraft.item.HoeItem;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockHoeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_hoe")
+ public static final Item block = null;
+ public BedrockHoeItem(DarkdaysModElements instance) {
+ super(instance, 38);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new HoeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 2;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+ }, -3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("bedrock_hoe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockPickaxeItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockPickaxeItem.java
new file mode 100644
index 0000000..53c33eb
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockPickaxeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.PickaxeItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockPickaxeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_pickaxe")
+ public static final Item block = null;
+ public BedrockPickaxeItem(DarkdaysModElements instance) {
+ super(instance, 34);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new PickaxeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 2;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+ }, 1, -3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("bedrock_pickaxe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockShovelItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockShovelItem.java
new file mode 100644
index 0000000..e1b7159
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockShovelItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ShovelItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockShovelItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_shovel")
+ public static final Item block = null;
+ public BedrockShovelItem(DarkdaysModElements instance) {
+ super(instance, 37);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ShovelItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 2;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+ }, 1, -3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("bedrock_shovel"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/BedrockSwordItem.java b/src/main/java/bitbucket/org/darkdays/item/BedrockSwordItem.java
new file mode 100644
index 0000000..a5441a3
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/BedrockSwordItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.SwordItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockSwordItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_sword")
+ public static final Item block = null;
+ public BedrockSwordItem(DarkdaysModElements instance) {
+ super(instance, 36);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new SwordItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 2;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(BedrockDustItem.block, (int) (1)));
+ }
+ }, 3, -3f, new Item.Properties().group(ItemGroup.COMBAT)) {
+ }.setRegistryName("bedrock_sword"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/DarkAppleItem.java b/src/main/java/bitbucket/org/darkdays/item/DarkAppleItem.java
new file mode 100644
index 0000000..1410c8c
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/DarkAppleItem.java
@@ -0,0 +1,39 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.UseAction;
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.Food;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class DarkAppleItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:dark_apple")
+ public static final Item block = null;
+ public DarkAppleItem(DarkdaysModElements instance) {
+ super(instance, 72);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new FoodItemCustom());
+ }
+ public static class FoodItemCustom extends Item {
+ public FoodItemCustom() {
+ super(new Item.Properties().group(ItemGroup.FOOD).maxStackSize(64).rarity(Rarity.COMMON)
+ .food((new Food.Builder()).hunger(6).saturation(1.5f).build()));
+ setRegistryName("dark_apple");
+ }
+
+ @Override
+ public UseAction getUseAction(ItemStack itemstack) {
+ return UseAction.EAT;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/GGwandItem.java b/src/main/java/bitbucket/org/darkdays/item/GGwandItem.java
new file mode 100644
index 0000000..a86f3be
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/GGwandItem.java
@@ -0,0 +1,307 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.network.NetworkHooks;
+import net.minecraftforge.fml.network.FMLPlayMessages;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.client.registry.RenderingRegistry;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.World;
+import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.util.text.ITextComponent;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Hand;
+import net.minecraft.util.ActionResultType;
+import net.minecraft.util.ActionResult;
+import net.minecraft.network.IPacket;
+import net.minecraft.item.UseAction;
+import net.minecraft.item.ShootableItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.inventory.EquipmentSlotType;
+import net.minecraft.entity.projectile.AbstractArrowEntity;
+import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.entity.ai.attributes.AttributeModifier;
+import net.minecraft.entity.SharedMonsterAttributes;
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.IRendersAsItem;
+import net.minecraft.entity.EntityType;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.entity.Entity;
+import net.minecraft.client.util.ITooltipFlag;
+import net.minecraft.client.renderer.entity.SpriteRenderer;
+import net.minecraft.client.Minecraft;
+
+import java.util.Random;
+import java.util.Map;
+import java.util.List;
+import java.util.HashMap;
+
+import com.google.common.collect.Multimap;
+
+import bitbucket.org.darkdays.procedures.GGwandWhileBulletFlyingTickProcedure;
+import bitbucket.org.darkdays.procedures.GGwandBulletHitsNullProcedure;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class GGwandItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:g_gwand")
+ public static final Item block = null;
+ @ObjectHolder("darkdays:entitybulletg_gwand")
+ public static final EntityType arrow = null;
+ public GGwandItem(DarkdaysModElements instance) {
+ super(instance, 3);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemRanged());
+ elements.entities.add(() -> (EntityType.Builder.create(ArrowCustomEntity::new, EntityClassification.MISC)
+ .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(ArrowCustomEntity::new)
+ .size(0.5f, 0.5f)).build("entitybulletg_gwand").setRegistryName("entitybulletg_gwand"));
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void init(FMLCommonSetupEvent event) {
+ RenderingRegistry.registerEntityRenderingHandler(arrow,
+ renderManager -> new SpriteRenderer(renderManager, Minecraft.getInstance().getItemRenderer()));
+ }
+ public static class ItemRanged extends Item {
+ public ItemRanged() {
+ super(new Item.Properties().group(ItemGroup.COMBAT).maxDamage(100));
+ setRegistryName("g_gwand");
+ }
+
+ @Override
+ public ActionResult onItemRightClick(World world, PlayerEntity entity, Hand hand) {
+ entity.setActiveHand(hand);
+ return new ActionResult(ActionResultType.SUCCESS, entity.getHeldItem(hand));
+ }
+
+ @Override
+ public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) {
+ super.addInformation(itemstack, world, list, flag);
+ list.add(new StringTextComponent("Shoots Fireballs"));
+ }
+
+ @Override
+ public UseAction getUseAction(ItemStack itemstack) {
+ return UseAction.NONE;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 72000;
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public boolean hasEffect(ItemStack itemstack) {
+ return true;
+ }
+
+ @Override
+ public Multimap getAttributeModifiers(EquipmentSlotType slot) {
+ Multimap multimap = super.getAttributeModifiers(slot);
+ if (slot == EquipmentSlotType.MAINHAND) {
+ multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(),
+ new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "ranged_item_damage", (double) 4, AttributeModifier.Operation.ADDITION));
+ multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(),
+ new AttributeModifier(ATTACK_SPEED_MODIFIER, "ranged_item_attack_speed", -2.4, AttributeModifier.Operation.ADDITION));
+ }
+ return multimap;
+ }
+
+ @Override
+ public void onUsingTick(ItemStack itemstack, LivingEntity entityLiving, int count) {
+ World world = entityLiving.world;
+ if (!world.isRemote && entityLiving instanceof ServerPlayerEntity) {
+ ServerPlayerEntity entity = (ServerPlayerEntity) entityLiving;
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ if (true) {
+ ItemStack stack = ShootableItem.getHeldAmmo(entity, e -> e.getItem() == new ItemStack(GgbulletItem.block, (int) (1)).getItem());
+ if (stack == ItemStack.EMPTY) {
+ for (int i = 0; i < entity.inventory.mainInventory.size(); i++) {
+ ItemStack teststack = entity.inventory.mainInventory.get(i);
+ if (teststack != null && teststack.getItem() == new ItemStack(GgbulletItem.block, (int) (1)).getItem()) {
+ stack = teststack;
+ break;
+ }
+ }
+ }
+ if (entity.abilities.isCreativeMode || stack != ItemStack.EMPTY) {
+ ArrowCustomEntity entityarrow = shoot(world, entity, random, 1.5f, 10, 1);
+ itemstack.damageItem(1, entity, e -> e.sendBreakAnimation(entity.getActiveHand()));
+ if (entity.abilities.isCreativeMode) {
+ entityarrow.pickupStatus = AbstractArrowEntity.PickupStatus.CREATIVE_ONLY;
+ } else {
+ if (new ItemStack(GgbulletItem.block, (int) (1)).isDamageable()) {
+ if (stack.attemptDamageItem(1, random, entity)) {
+ stack.shrink(1);
+ stack.setDamage(0);
+ if (stack.isEmpty())
+ entity.inventory.deleteStack(stack);
+ }
+ } else {
+ stack.shrink(1);
+ if (stack.isEmpty())
+ entity.inventory.deleteStack(stack);
+ }
+ }
+ }
+ entity.stopActiveHand();
+ }
+ }
+ }
+ }
+
+ @OnlyIn(value = Dist.CLIENT, _interface = IRendersAsItem.class)
+ public static class ArrowCustomEntity extends AbstractArrowEntity implements IRendersAsItem {
+ public ArrowCustomEntity(FMLPlayMessages.SpawnEntity packet, World world) {
+ super(arrow, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, World world) {
+ super(type, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, double x, double y, double z, World world) {
+ super(type, x, y, z, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, LivingEntity entity, World world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public IPacket> createSpawnPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return new ItemStack(GgbulletItem.block, (int) (1));
+ }
+
+ @Override
+ protected ItemStack getArrowStack() {
+ return new ItemStack(GgbulletItem.block, (int) (1));
+ }
+
+ @Override
+ public void onCollideWithPlayer(PlayerEntity entity) {
+ super.onCollideWithPlayer(entity);
+ Entity sourceentity = this.getShooter();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandBulletHitsNullProcedure.executeProcedure($_dependencies);
+ }
+ }
+
+ @Override
+ protected void arrowHit(LivingEntity entity) {
+ super.arrowHit(entity);
+ entity.setArrowCountInEntity(entity.getArrowCountInEntity() - 1);
+ Entity sourceentity = this.getShooter();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandBulletHitsNullProcedure.executeProcedure($_dependencies);
+ }
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ Entity entity = this.getShooter();
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandWhileBulletFlyingTickProcedure.executeProcedure($_dependencies);
+ }
+ if (this.inGround) {
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandBulletHitsNullProcedure.executeProcedure($_dependencies);
+ }
+ this.remove();
+ }
+ }
+ }
+ public static ArrowCustomEntity shoot(World world, LivingEntity entity, Random random, float power, double damage, int knockback) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, world);
+ entityarrow.shoot(entity.getLookVec().x, entity.getLookVec().y, entity.getLookVec().z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setIsCritical(true);
+ entityarrow.setDamage(damage);
+ entityarrow.setKnockbackStrength(knockback);
+ entityarrow.setFire(100);
+ world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("darkdays:ggwandsound")),
+ SoundCategory.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static ArrowCustomEntity shoot(LivingEntity entity, LivingEntity target) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, entity.world);
+ double d0 = target.getPosY() + (double) target.getEyeHeight() - 1.1;
+ double d1 = target.getPosX() - entity.getPosX();
+ double d3 = target.getPosZ() - entity.getPosZ();
+ entityarrow.shoot(d1, d0 - entityarrow.getPosY() + (double) MathHelper.sqrt(d1 * d1 + d3 * d3) * 0.2F, d3, 1.5f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setDamage(10);
+ entityarrow.setKnockbackStrength(1);
+ entityarrow.setIsCritical(true);
+ entityarrow.setFire(100);
+ entity.world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ entity.world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("darkdays:ggwandsound")),
+ SoundCategory.PLAYERS, 1, 1f / (new Random().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/GasBombTxtrItem.java b/src/main/java/bitbucket/org/darkdays/item/GasBombTxtrItem.java
new file mode 100644
index 0000000..8ef10c2
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/GasBombTxtrItem.java
@@ -0,0 +1,46 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Item;
+import net.minecraft.block.BlockState;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class GasBombTxtrItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:gas_bomb_txtr")
+ public static final Item block = null;
+ public GasBombTxtrItem(DarkdaysModElements instance) {
+ super(instance, 69);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemCustom());
+ }
+ public static class ItemCustom extends Item {
+ public ItemCustom() {
+ super(new Item.Properties().group(null).maxStackSize(16).rarity(Rarity.COMMON));
+ setRegistryName("gas_bomb_txtr");
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 0;
+ }
+
+ @Override
+ public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) {
+ return 1F;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/GgbulletItem.java b/src/main/java/bitbucket/org/darkdays/item/GgbulletItem.java
new file mode 100644
index 0000000..7181720
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/GgbulletItem.java
@@ -0,0 +1,59 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.world.World;
+import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.util.text.ITextComponent;
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.client.util.ITooltipFlag;
+import net.minecraft.block.BlockState;
+
+import java.util.List;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class GgbulletItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:ggbullet")
+ public static final Item block = null;
+ public GgbulletItem(DarkdaysModElements instance) {
+ super(instance, 5);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemCustom());
+ }
+ public static class ItemCustom extends Item {
+ public ItemCustom() {
+ super(new Item.Properties().group(ItemGroup.COMBAT).maxStackSize(64).rarity(Rarity.COMMON));
+ setRegistryName("ggbullet");
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 0;
+ }
+
+ @Override
+ public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) {
+ return 1F;
+ }
+
+ @Override
+ public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) {
+ super.addInformation(itemstack, world, list, flag);
+ list.add(new StringTextComponent("The bullet of GGwand"));
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SmokeBombItem.java b/src/main/java/bitbucket/org/darkdays/item/SmokeBombItem.java
new file mode 100644
index 0000000..b07923c
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SmokeBombItem.java
@@ -0,0 +1,243 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.network.NetworkHooks;
+import net.minecraftforge.fml.network.FMLPlayMessages;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.client.registry.RenderingRegistry;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.World;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Hand;
+import net.minecraft.util.ActionResultType;
+import net.minecraft.util.ActionResult;
+import net.minecraft.network.IPacket;
+import net.minecraft.item.UseAction;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.entity.projectile.AbstractArrowEntity;
+import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.IRendersAsItem;
+import net.minecraft.entity.EntityType;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.entity.Entity;
+import net.minecraft.client.renderer.entity.SpriteRenderer;
+import net.minecraft.client.Minecraft;
+
+import java.util.Random;
+import java.util.Map;
+import java.util.HashMap;
+
+import bitbucket.org.darkdays.procedures.SmokeBombBulletHitsBlockProcedure;
+import bitbucket.org.darkdays.procedures.GGwandWhileBulletFlyingTickProcedure;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SmokeBombItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:smoke_bomb")
+ public static final Item block = null;
+ @ObjectHolder("darkdays:entitybulletsmoke_bomb")
+ public static final EntityType arrow = null;
+ public SmokeBombItem(DarkdaysModElements instance) {
+ super(instance, 69);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemRanged());
+ elements.entities.add(() -> (EntityType.Builder.create(ArrowCustomEntity::new, EntityClassification.MISC)
+ .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(ArrowCustomEntity::new)
+ .size(0.5f, 0.5f)).build("entitybulletsmoke_bomb").setRegistryName("entitybulletsmoke_bomb"));
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void init(FMLCommonSetupEvent event) {
+ RenderingRegistry.registerEntityRenderingHandler(arrow,
+ renderManager -> new SpriteRenderer(renderManager, Minecraft.getInstance().getItemRenderer()));
+ }
+ public static class ItemRanged extends Item {
+ public ItemRanged() {
+ super(new Item.Properties().group(ItemGroup.COMBAT).maxDamage(16));
+ setRegistryName("smoke_bomb");
+ }
+
+ @Override
+ public ActionResult onItemRightClick(World world, PlayerEntity entity, Hand hand) {
+ entity.setActiveHand(hand);
+ return new ActionResult(ActionResultType.SUCCESS, entity.getHeldItem(hand));
+ }
+
+ @Override
+ public UseAction getUseAction(ItemStack itemstack) {
+ return UseAction.SPEAR;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 72000;
+ }
+
+ @Override
+ public void onPlayerStoppedUsing(ItemStack itemstack, World world, LivingEntity entityLiving, int timeLeft) {
+ if (!world.isRemote && entityLiving instanceof ServerPlayerEntity) {
+ ServerPlayerEntity entity = (ServerPlayerEntity) entityLiving;
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ if (true) {
+ ArrowCustomEntity entityarrow = shoot(world, entity, random, 1f, 5, 5);
+ itemstack.damageItem(1, entity, e -> e.sendBreakAnimation(entity.getActiveHand()));
+ entityarrow.pickupStatus = AbstractArrowEntity.PickupStatus.DISALLOWED;
+ }
+ }
+ }
+ }
+
+ @OnlyIn(value = Dist.CLIENT, _interface = IRendersAsItem.class)
+ public static class ArrowCustomEntity extends AbstractArrowEntity implements IRendersAsItem {
+ public ArrowCustomEntity(FMLPlayMessages.SpawnEntity packet, World world) {
+ super(arrow, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, World world) {
+ super(type, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, double x, double y, double z, World world) {
+ super(type, x, y, z, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, LivingEntity entity, World world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public IPacket> createSpawnPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return new ItemStack(GasBombTxtrItem.block, (int) (1));
+ }
+
+ @Override
+ protected ItemStack getArrowStack() {
+ return null;
+ }
+
+ @Override
+ public void onCollideWithPlayer(PlayerEntity entity) {
+ super.onCollideWithPlayer(entity);
+ Entity sourceentity = this.getShooter();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandWhileBulletFlyingTickProcedure.executeProcedure($_dependencies);
+ }
+ }
+
+ @Override
+ protected void arrowHit(LivingEntity entity) {
+ super.arrowHit(entity);
+ entity.setArrowCountInEntity(entity.getArrowCountInEntity() - 1);
+ Entity sourceentity = this.getShooter();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandWhileBulletFlyingTickProcedure.executeProcedure($_dependencies);
+ }
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ Entity entity = this.getShooter();
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ GGwandWhileBulletFlyingTickProcedure.executeProcedure($_dependencies);
+ }
+ if (this.inGround) {
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("entity", entity);
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ SmokeBombBulletHitsBlockProcedure.executeProcedure($_dependencies);
+ }
+ this.remove();
+ }
+ }
+ }
+ public static ArrowCustomEntity shoot(World world, LivingEntity entity, Random random, float power, double damage, int knockback) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, world);
+ entityarrow.shoot(entity.getLookVec().x, entity.getLookVec().y, entity.getLookVec().z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setIsCritical(true);
+ entityarrow.setDamage(damage);
+ entityarrow.setKnockbackStrength(knockback);
+ world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")),
+ SoundCategory.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static ArrowCustomEntity shoot(LivingEntity entity, LivingEntity target) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, entity.world);
+ double d0 = target.getPosY() + (double) target.getEyeHeight() - 1.1;
+ double d1 = target.getPosX() - entity.getPosX();
+ double d3 = target.getPosZ() - entity.getPosZ();
+ entityarrow.shoot(d1, d0 - entityarrow.getPosY() + (double) MathHelper.sqrt(d1 * d1 + d3 * d3) * 0.2F, d3, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setDamage(5);
+ entityarrow.setKnockbackStrength(5);
+ entityarrow.setIsCritical(true);
+ entity.world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ entity.world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")),
+ SoundCategory.PLAYERS, 1, 1f / (new Random().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelArmorItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelArmorItem.java
new file mode 100644
index 0000000..3ec0fc2
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelArmorItem.java
@@ -0,0 +1,92 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IArmorMaterial;
+import net.minecraft.item.ArmorItem;
+import net.minecraft.inventory.EquipmentSlotType;
+import net.minecraft.entity.Entity;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelArmorItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_armor_helmet")
+ public static final Item helmet = null;
+ @ObjectHolder("darkdays:steel_armor_chestplate")
+ public static final Item body = null;
+ @ObjectHolder("darkdays:steel_armor_leggings")
+ public static final Item legs = null;
+ @ObjectHolder("darkdays:steel_armor_boots")
+ public static final Item boots = null;
+ public SteelArmorItem(DarkdaysModElements instance) {
+ super(instance, 22);
+ }
+
+ @Override
+ public void initElements() {
+ IArmorMaterial armormaterial = new IArmorMaterial() {
+ public int getDurability(EquipmentSlotType slot) {
+ return new int[]{13, 15, 16, 11}[slot.getIndex()] * 14;
+ }
+
+ public int getDamageReductionAmount(EquipmentSlotType slot) {
+ return new int[]{2, 6, 5, 2}[slot.getIndex()];
+ }
+
+ public int getEnchantability() {
+ return 9;
+ }
+
+ public net.minecraft.util.SoundEvent getSoundEvent() {
+ return (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(""));
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ public String getName() {
+ return "steel_armor";
+ }
+
+ public float getToughness() {
+ return 2.7f;
+ }
+ };
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.HEAD, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/steel_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("steel_armor_helmet"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.CHEST, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/steel_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("steel_armor_chestplate"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.LEGS, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/steel_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("steel_armor_leggings"));
+ elements.items.add(() -> new ArmorItem(armormaterial, EquipmentSlotType.FEET, new Item.Properties().group(ItemGroup.COMBAT)) {
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
+ return "darkdays:textures/models/armor/steel_layer_" + (slot == EquipmentSlotType.LEGS ? "2" : "1") + ".png";
+ }
+ }.setRegistryName("steel_armor_boots"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelAxeItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelAxeItem.java
new file mode 100644
index 0000000..4c3f5c6
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelAxeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+import net.minecraft.item.AxeItem;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelAxeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_axe")
+ public static final Item block = null;
+ public SteelAxeItem(DarkdaysModElements instance) {
+ super(instance, 13);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new AxeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 7f;
+ }
+
+ public float getAttackDamage() {
+ return 11.5f;
+ }
+
+ public int getHarvestLevel() {
+ return 10;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }, 1, -2f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("steel_axe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelHoeItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelHoeItem.java
new file mode 100644
index 0000000..1039fe9
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelHoeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+import net.minecraft.item.HoeItem;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelHoeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_hoe")
+ public static final Item block = null;
+ public SteelHoeItem(DarkdaysModElements instance) {
+ super(instance, 16);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new HoeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 6f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 10;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }, -3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("steel_hoe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelIngotItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelIngotItem.java
new file mode 100644
index 0000000..555b227
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelIngotItem.java
@@ -0,0 +1,47 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.Rarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.block.BlockState;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelIngotItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_ingot")
+ public static final Item block = null;
+ public SteelIngotItem(DarkdaysModElements instance) {
+ super(instance, 6);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemCustom());
+ }
+ public static class ItemCustom extends Item {
+ public ItemCustom() {
+ super(new Item.Properties().group(ItemGroup.MISC).maxStackSize(64).rarity(Rarity.COMMON));
+ setRegistryName("steel_ingot");
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 0;
+ }
+
+ @Override
+ public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) {
+ return 1F;
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelPickaxeItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelPickaxeItem.java
new file mode 100644
index 0000000..6d208ee
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelPickaxeItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.PickaxeItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelPickaxeItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_pickaxe")
+ public static final Item block = null;
+ public SteelPickaxeItem(DarkdaysModElements instance) {
+ super(instance, 12);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new PickaxeItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 10f;
+ }
+
+ public float getAttackDamage() {
+ return 3f;
+ }
+
+ public int getHarvestLevel() {
+ return 10;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }, 1, -1.3f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("steel_pickaxe"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelShovelItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelShovelItem.java
new file mode 100644
index 0000000..19f755b
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelShovelItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.ShovelItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelShovelItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_shovel")
+ public static final Item block = null;
+ public SteelShovelItem(DarkdaysModElements instance) {
+ super(instance, 15);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ShovelItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 7.5f;
+ }
+
+ public float getAttackDamage() {
+ return 0f;
+ }
+
+ public int getHarvestLevel() {
+ return 10;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }, 1, -2.9f, new Item.Properties().group(ItemGroup.TOOLS)) {
+ }.setRegistryName("steel_shovel"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/SteelSwordItem.java b/src/main/java/bitbucket/org/darkdays/item/SteelSwordItem.java
new file mode 100644
index 0000000..a519980
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/SteelSwordItem.java
@@ -0,0 +1,52 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.SwordItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.item.IItemTier;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SteelSwordItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:steel_sword")
+ public static final Item block = null;
+ public SteelSwordItem(DarkdaysModElements instance) {
+ super(instance, 14);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new SwordItem(new IItemTier() {
+ public int getMaxUses() {
+ return 250;
+ }
+
+ public float getEfficiency() {
+ return 7f;
+ }
+
+ public float getAttackDamage() {
+ return 8f;
+ }
+
+ public int getHarvestLevel() {
+ return 10;
+ }
+
+ public int getEnchantability() {
+ return 14;
+ }
+
+ public Ingredient getRepairMaterial() {
+ return Ingredient.fromStacks(new ItemStack(SteelIngotItem.block, (int) (1)));
+ }
+ }, 3, 3.4f, new Item.Properties().group(ItemGroup.COMBAT)) {
+ }.setRegistryName("steel_sword"));
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/item/UziItem.java b/src/main/java/bitbucket/org/darkdays/item/UziItem.java
new file mode 100644
index 0000000..07ae1fd
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/item/UziItem.java
@@ -0,0 +1,232 @@
+
+package bitbucket.org.darkdays.item;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.network.NetworkHooks;
+import net.minecraftforge.fml.network.FMLPlayMessages;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.client.registry.RenderingRegistry;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.World;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Hand;
+import net.minecraft.util.ActionResultType;
+import net.minecraft.util.ActionResult;
+import net.minecraft.network.IPacket;
+import net.minecraft.item.UseAction;
+import net.minecraft.item.ShootableItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemGroup;
+import net.minecraft.item.Item;
+import net.minecraft.entity.projectile.AbstractArrowEntity;
+import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.IRendersAsItem;
+import net.minecraft.entity.EntityType;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.entity.Entity;
+import net.minecraft.client.renderer.entity.SpriteRenderer;
+import net.minecraft.client.Minecraft;
+
+import java.util.Random;
+import java.util.Map;
+import java.util.HashMap;
+
+import bitbucket.org.darkdays.procedures.UziWhileBulletFlyingTickProcedure;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class UziItem extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:uzi")
+ public static final Item block = null;
+ @ObjectHolder("darkdays:entitybulletuzi")
+ public static final EntityType arrow = null;
+ public UziItem(DarkdaysModElements instance) {
+ super(instance, 75);
+ }
+
+ @Override
+ public void initElements() {
+ elements.items.add(() -> new ItemRanged());
+ elements.entities.add(() -> (EntityType.Builder.create(ArrowCustomEntity::new, EntityClassification.MISC)
+ .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(ArrowCustomEntity::new)
+ .size(0.5f, 0.5f)).build("entitybulletuzi").setRegistryName("entitybulletuzi"));
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void init(FMLCommonSetupEvent event) {
+ RenderingRegistry.registerEntityRenderingHandler(arrow,
+ renderManager -> new SpriteRenderer(renderManager, Minecraft.getInstance().getItemRenderer()));
+ }
+ public static class ItemRanged extends Item {
+ public ItemRanged() {
+ super(new Item.Properties().group(ItemGroup.COMBAT).maxDamage(250));
+ setRegistryName("uzi");
+ }
+
+ @Override
+ public ActionResult onItemRightClick(World world, PlayerEntity entity, Hand hand) {
+ entity.setActiveHand(hand);
+ return new ActionResult(ActionResultType.SUCCESS, entity.getHeldItem(hand));
+ }
+
+ @Override
+ public UseAction getUseAction(ItemStack itemstack) {
+ return UseAction.NONE;
+ }
+
+ @Override
+ public int getUseDuration(ItemStack itemstack) {
+ return 72000;
+ }
+
+ @Override
+ public void onUsingTick(ItemStack itemstack, LivingEntity entityLiving, int count) {
+ World world = entityLiving.world;
+ if (!world.isRemote && entityLiving instanceof ServerPlayerEntity) {
+ ServerPlayerEntity entity = (ServerPlayerEntity) entityLiving;
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ if (true) {
+ ItemStack stack = ShootableItem.getHeldAmmo(entity, e -> e.getItem() == new ItemStack(AmmoItem.block, (int) (1)).getItem());
+ if (stack == ItemStack.EMPTY) {
+ for (int i = 0; i < entity.inventory.mainInventory.size(); i++) {
+ ItemStack teststack = entity.inventory.mainInventory.get(i);
+ if (teststack != null && teststack.getItem() == new ItemStack(AmmoItem.block, (int) (1)).getItem()) {
+ stack = teststack;
+ break;
+ }
+ }
+ }
+ if (entity.abilities.isCreativeMode || stack != ItemStack.EMPTY) {
+ ArrowCustomEntity entityarrow = shoot(world, entity, random, 1.3f, 5, 5);
+ itemstack.damageItem(1, entity, e -> e.sendBreakAnimation(entity.getActiveHand()));
+ if (entity.abilities.isCreativeMode) {
+ entityarrow.pickupStatus = AbstractArrowEntity.PickupStatus.CREATIVE_ONLY;
+ } else {
+ if (new ItemStack(AmmoItem.block, (int) (1)).isDamageable()) {
+ if (stack.attemptDamageItem(1, random, entity)) {
+ stack.shrink(1);
+ stack.setDamage(0);
+ if (stack.isEmpty())
+ entity.inventory.deleteStack(stack);
+ }
+ } else {
+ stack.shrink(1);
+ if (stack.isEmpty())
+ entity.inventory.deleteStack(stack);
+ }
+ }
+ }
+ entity.stopActiveHand();
+ }
+ }
+ }
+ }
+
+ @OnlyIn(value = Dist.CLIENT, _interface = IRendersAsItem.class)
+ public static class ArrowCustomEntity extends AbstractArrowEntity implements IRendersAsItem {
+ public ArrowCustomEntity(FMLPlayMessages.SpawnEntity packet, World world) {
+ super(arrow, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, World world) {
+ super(type, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, double x, double y, double z, World world) {
+ super(type, x, y, z, world);
+ }
+
+ public ArrowCustomEntity(EntityType extends ArrowCustomEntity> type, LivingEntity entity, World world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public IPacket> createSpawnPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return new ItemStack(AmmoItem.block, (int) (1));
+ }
+
+ @Override
+ protected ItemStack getArrowStack() {
+ return new ItemStack(AmmoItem.block, (int) (1));
+ }
+
+ @Override
+ protected void arrowHit(LivingEntity entity) {
+ super.arrowHit(entity);
+ entity.setArrowCountInEntity(entity.getArrowCountInEntity() - 1);
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ double x = this.getPosX();
+ double y = this.getPosY();
+ double z = this.getPosZ();
+ World world = this.world;
+ Entity entity = this.getShooter();
+ {
+ Map $_dependencies = new HashMap<>();
+ $_dependencies.put("x", x);
+ $_dependencies.put("y", y);
+ $_dependencies.put("z", z);
+ $_dependencies.put("world", world);
+ UziWhileBulletFlyingTickProcedure.executeProcedure($_dependencies);
+ }
+ if (this.inGround) {
+ this.remove();
+ }
+ }
+ }
+ public static ArrowCustomEntity shoot(World world, LivingEntity entity, Random random, float power, double damage, int knockback) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, world);
+ entityarrow.shoot(entity.getLookVec().x, entity.getLookVec().y, entity.getLookVec().z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setIsCritical(true);
+ entityarrow.setDamage(damage);
+ entityarrow.setKnockbackStrength(knockback);
+ world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")),
+ SoundCategory.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static ArrowCustomEntity shoot(LivingEntity entity, LivingEntity target) {
+ ArrowCustomEntity entityarrow = new ArrowCustomEntity(arrow, entity, entity.world);
+ double d0 = target.getPosY() + (double) target.getEyeHeight() - 1.1;
+ double d1 = target.getPosX() - entity.getPosX();
+ double d3 = target.getPosZ() - entity.getPosZ();
+ entityarrow.shoot(d1, d0 - entityarrow.getPosY() + (double) MathHelper.sqrt(d1 * d1 + d3 * d3) * 0.2F, d3, 1.3f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setDamage(5);
+ entityarrow.setKnockbackStrength(5);
+ entityarrow.setIsCritical(true);
+ entity.world.addEntity(entityarrow);
+ double x = entity.getPosX();
+ double y = entity.getPosY();
+ double z = entity.getPosZ();
+ entity.world.playSound((PlayerEntity) null, (double) x, (double) y, (double) z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")),
+ SoundCategory.PLAYERS, 1, 1f / (new Random().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/procedures/GGwandBulletHitsNullProcedure.java b/src/main/java/bitbucket/org/darkdays/procedures/GGwandBulletHitsNullProcedure.java
new file mode 100644
index 0000000..9d6b63c
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/procedures/GGwandBulletHitsNullProcedure.java
@@ -0,0 +1,46 @@
+package bitbucket.org.darkdays.procedures;
+
+import net.minecraft.world.World;
+import net.minecraft.world.IWorld;
+import net.minecraft.world.Explosion;
+
+import java.util.Map;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class GGwandBulletHitsNullProcedure extends DarkdaysModElements.ModElement {
+ public GGwandBulletHitsNullProcedure(DarkdaysModElements instance) {
+ super(instance, 3);
+ }
+
+ public static void executeProcedure(Map dependencies) {
+ if (dependencies.get("x") == null) {
+ if (!dependencies.containsKey("x"))
+ System.err.println("Failed to load dependency x for procedure GGwandBulletHitsNull!");
+ return;
+ }
+ if (dependencies.get("y") == null) {
+ if (!dependencies.containsKey("y"))
+ System.err.println("Failed to load dependency y for procedure GGwandBulletHitsNull!");
+ return;
+ }
+ if (dependencies.get("z") == null) {
+ if (!dependencies.containsKey("z"))
+ System.err.println("Failed to load dependency z for procedure GGwandBulletHitsNull!");
+ return;
+ }
+ if (dependencies.get("world") == null) {
+ if (!dependencies.containsKey("world"))
+ System.err.println("Failed to load dependency world for procedure GGwandBulletHitsNull!");
+ return;
+ }
+ double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
+ double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
+ double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
+ IWorld world = (IWorld) dependencies.get("world");
+ if (world instanceof World && !world.getWorld().isRemote) {
+ world.getWorld().createExplosion(null, (int) x, (int) y, (int) z, (float) 2, Explosion.Mode.BREAK);
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/procedures/GGwandWhileBulletFlyingTickProcedure.java b/src/main/java/bitbucket/org/darkdays/procedures/GGwandWhileBulletFlyingTickProcedure.java
new file mode 100644
index 0000000..5fc1371
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/procedures/GGwandWhileBulletFlyingTickProcedure.java
@@ -0,0 +1,55 @@
+package bitbucket.org.darkdays.procedures;
+
+import net.minecraftforge.registries.ForgeRegistries;
+
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.ResourceLocation;
+
+import java.util.Map;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class GGwandWhileBulletFlyingTickProcedure extends DarkdaysModElements.ModElement {
+ public GGwandWhileBulletFlyingTickProcedure(DarkdaysModElements instance) {
+ super(instance, 4);
+ }
+
+ public static void executeProcedure(Map dependencies) {
+ if (dependencies.get("x") == null) {
+ if (!dependencies.containsKey("x"))
+ System.err.println("Failed to load dependency x for procedure GGwandWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("y") == null) {
+ if (!dependencies.containsKey("y"))
+ System.err.println("Failed to load dependency y for procedure GGwandWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("z") == null) {
+ if (!dependencies.containsKey("z"))
+ System.err.println("Failed to load dependency z for procedure GGwandWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("world") == null) {
+ if (!dependencies.containsKey("world"))
+ System.err.println("Failed to load dependency world for procedure GGwandWhileBulletFlyingTick!");
+ return;
+ }
+ double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
+ double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
+ double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
+ IWorld world = (IWorld) dependencies.get("world");
+ if (!world.getWorld().isRemote) {
+ world.playSound(null, new BlockPos((int) x, (int) y, (int) z),
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("darkdays:ggwandsound")),
+ SoundCategory.NEUTRAL, (float) 15, (float) 1);
+ } else {
+ world.getWorld().playSound(x, y, z,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("darkdays:ggwandsound")),
+ SoundCategory.NEUTRAL, (float) 15, (float) 1, false);
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/procedures/SmaelingPickAxeBlockDestroyedWithToolProcedure.java b/src/main/java/bitbucket/org/darkdays/procedures/SmaelingPickAxeBlockDestroyedWithToolProcedure.java
new file mode 100644
index 0000000..a21960e
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/procedures/SmaelingPickAxeBlockDestroyedWithToolProcedure.java
@@ -0,0 +1,117 @@
+package bitbucket.org.darkdays.procedures;
+
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.world.BlockEvent;
+import net.minecraftforge.common.MinecraftForge;
+
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.item.crafting.IRecipeType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.inventory.Inventory;
+import net.minecraft.entity.item.ItemEntity;
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.Entity;
+import net.minecraft.enchantment.EnchantmentHelper;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.Block;
+
+import java.util.Map;
+import java.util.HashMap;
+
+import bitbucket.org.darkdays.enchantment.SmeltingTouchEnchantment;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SmaelingPickAxeBlockDestroyedWithToolProcedure extends DarkdaysModElements.ModElement {
+ public SmaelingPickAxeBlockDestroyedWithToolProcedure(DarkdaysModElements instance) {
+ super(instance, 1);
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ public static void executeProcedure(Map dependencies) {
+ if (dependencies.get("entity") == null) {
+ if (!dependencies.containsKey("entity"))
+ System.err.println("Failed to load dependency entity for procedure SmaelingPickAxeBlockDestroyedWithTool!");
+ return;
+ }
+ if (dependencies.get("x") == null) {
+ if (!dependencies.containsKey("x"))
+ System.err.println("Failed to load dependency x for procedure SmaelingPickAxeBlockDestroyedWithTool!");
+ return;
+ }
+ if (dependencies.get("y") == null) {
+ if (!dependencies.containsKey("y"))
+ System.err.println("Failed to load dependency y for procedure SmaelingPickAxeBlockDestroyedWithTool!");
+ return;
+ }
+ if (dependencies.get("z") == null) {
+ if (!dependencies.containsKey("z"))
+ System.err.println("Failed to load dependency z for procedure SmaelingPickAxeBlockDestroyedWithTool!");
+ return;
+ }
+ if (dependencies.get("world") == null) {
+ if (!dependencies.containsKey("world"))
+ System.err.println("Failed to load dependency world for procedure SmaelingPickAxeBlockDestroyedWithTool!");
+ return;
+ }
+ Entity entity = (Entity) dependencies.get("entity");
+ double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
+ double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
+ double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
+ IWorld world = (IWorld) dependencies.get("world");
+ boolean Remove_Block = false;
+ if (((EnchantmentHelper.getEnchantmentLevel(SmeltingTouchEnchantment.enchantment,
+ ((entity instanceof LivingEntity) ? ((LivingEntity) entity).getHeldItemMainhand() : ItemStack.EMPTY))) == 1)) {
+ if ((!((world.getWorld().getRecipeManager().getRecipe(IRecipeType.SMELTING,
+ new Inventory((new ItemStack((world.getBlockState(new BlockPos((int) x, (int) y, (int) z))).getBlock()))), world.getWorld())
+ .isPresent()
+ ? world.getWorld().getRecipeManager()
+ .getRecipe(IRecipeType.SMELTING,
+ new Inventory((new ItemStack((world.getBlockState(new BlockPos((int) x, (int) y, (int) z))).getBlock()))),
+ world.getWorld())
+ .get().getRecipeOutput().copy()
+ : ItemStack.EMPTY).getItem() == new ItemStack(Blocks.AIR, (int) (1)).getItem()))) {
+ if (!world.getWorld().isRemote) {
+ ItemEntity entityToSpawn = new ItemEntity(world.getWorld(), (x + 0.5), (y + 0.5), (z + 0.5),
+ (world.getWorld().getRecipeManager().getRecipe(IRecipeType.SMELTING,
+ new Inventory((new ItemStack((world.getBlockState(new BlockPos((int) x, (int) y, (int) z))).getBlock()))),
+ world.getWorld()).isPresent()
+ ? world.getWorld().getRecipeManager().getRecipe(IRecipeType.SMELTING, new Inventory(
+ (new ItemStack((world.getBlockState(new BlockPos((int) x, (int) y, (int) z))).getBlock()))),
+ world.getWorld()).get().getRecipeOutput().copy()
+ : ItemStack.EMPTY));
+ entityToSpawn.setPickupDelay((int) 10);
+ world.addEntity(entityToSpawn);
+ }
+ Remove_Block = (boolean) (true);
+ } else {
+ Remove_Block = (boolean) (false);
+ }
+ if (((Remove_Block) == (true))) {
+ world.destroyBlock(new BlockPos((int) x, (int) y, (int) z), false);
+ } else {
+ Block.spawnDrops(world.getBlockState(new BlockPos((int) x, (int) y, (int) z)), world.getWorld(),
+ new BlockPos((int) x, (int) y, (int) z));
+ world.destroyBlock(new BlockPos((int) x, (int) y, (int) z), false);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onBlockBreak(BlockEvent.BreakEvent event) {
+ Entity entity = event.getPlayer();
+ Map dependencies = new HashMap<>();
+ dependencies.put("xpAmount", event.getExpToDrop());
+ dependencies.put("x", (int) event.getPos().getX());
+ dependencies.put("y", (int) event.getPos().getY());
+ dependencies.put("z", (int) event.getPos().getZ());
+ dependencies.put("px", entity.getPosX());
+ dependencies.put("py", entity.getPosY());
+ dependencies.put("pz", entity.getPosZ());
+ dependencies.put("world", event.getWorld().getWorld());
+ dependencies.put("entity", entity);
+ dependencies.put("event", event);
+ this.executeProcedure(dependencies);
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/procedures/SmokeBombBulletHitsBlockProcedure.java b/src/main/java/bitbucket/org/darkdays/procedures/SmokeBombBulletHitsBlockProcedure.java
new file mode 100644
index 0000000..2e0a3ba
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/procedures/SmokeBombBulletHitsBlockProcedure.java
@@ -0,0 +1,60 @@
+package bitbucket.org.darkdays.procedures;
+
+import net.minecraft.world.server.ServerWorld;
+import net.minecraft.world.IWorld;
+import net.minecraft.potion.Effects;
+import net.minecraft.potion.EffectInstance;
+import net.minecraft.particles.ParticleTypes;
+import net.minecraft.entity.MobEntity;
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.Entity;
+
+import java.util.Map;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class SmokeBombBulletHitsBlockProcedure extends DarkdaysModElements.ModElement {
+ public SmokeBombBulletHitsBlockProcedure(DarkdaysModElements instance) {
+ super(instance, 70);
+ }
+
+ public static void executeProcedure(Map dependencies) {
+ if (dependencies.get("entity") == null) {
+ if (!dependencies.containsKey("entity"))
+ System.err.println("Failed to load dependency entity for procedure SmokeBombBulletHitsBlock!");
+ return;
+ }
+ if (dependencies.get("x") == null) {
+ if (!dependencies.containsKey("x"))
+ System.err.println("Failed to load dependency x for procedure SmokeBombBulletHitsBlock!");
+ return;
+ }
+ if (dependencies.get("y") == null) {
+ if (!dependencies.containsKey("y"))
+ System.err.println("Failed to load dependency y for procedure SmokeBombBulletHitsBlock!");
+ return;
+ }
+ if (dependencies.get("z") == null) {
+ if (!dependencies.containsKey("z"))
+ System.err.println("Failed to load dependency z for procedure SmokeBombBulletHitsBlock!");
+ return;
+ }
+ if (dependencies.get("world") == null) {
+ if (!dependencies.containsKey("world"))
+ System.err.println("Failed to load dependency world for procedure SmokeBombBulletHitsBlock!");
+ return;
+ }
+ Entity entity = (Entity) dependencies.get("entity");
+ double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
+ double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
+ double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
+ IWorld world = (IWorld) dependencies.get("world");
+ if (((entity instanceof MobEntity) ? ((MobEntity) entity).getAttackTarget() : null) instanceof LivingEntity)
+ ((LivingEntity) ((entity instanceof MobEntity) ? ((MobEntity) entity).getAttackTarget() : null))
+ .addPotionEffect(new EffectInstance(Effects.BLINDNESS, (int) 125, (int) 1, (false), (false)));
+ if (world instanceof ServerWorld) {
+ ((ServerWorld) world).spawnParticle(ParticleTypes.LARGE_SMOKE, x, y, z, (int) 500, 10, 10, 10, 0.5);
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/procedures/UziWhileBulletFlyingTickProcedure.java b/src/main/java/bitbucket/org/darkdays/procedures/UziWhileBulletFlyingTickProcedure.java
new file mode 100644
index 0000000..1f49722
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/procedures/UziWhileBulletFlyingTickProcedure.java
@@ -0,0 +1,43 @@
+package bitbucket.org.darkdays.procedures;
+
+import net.minecraft.world.IWorld;
+import net.minecraft.particles.ParticleTypes;
+
+import java.util.Map;
+
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class UziWhileBulletFlyingTickProcedure extends DarkdaysModElements.ModElement {
+ public UziWhileBulletFlyingTickProcedure(DarkdaysModElements instance) {
+ super(instance, 75);
+ }
+
+ public static void executeProcedure(Map dependencies) {
+ if (dependencies.get("x") == null) {
+ if (!dependencies.containsKey("x"))
+ System.err.println("Failed to load dependency x for procedure UziWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("y") == null) {
+ if (!dependencies.containsKey("y"))
+ System.err.println("Failed to load dependency y for procedure UziWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("z") == null) {
+ if (!dependencies.containsKey("z"))
+ System.err.println("Failed to load dependency z for procedure UziWhileBulletFlyingTick!");
+ return;
+ }
+ if (dependencies.get("world") == null) {
+ if (!dependencies.containsKey("world"))
+ System.err.println("Failed to load dependency world for procedure UziWhileBulletFlyingTick!");
+ return;
+ }
+ double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x");
+ double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y");
+ double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z");
+ IWorld world = (IWorld) dependencies.get("world");
+ world.addParticle(ParticleTypes.LARGE_SMOKE, x, y, z, 0, 1, 0);
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/world/biome/BedrockBiomeBiome.java b/src/main/java/bitbucket/org/darkdays/world/biome/BedrockBiomeBiome.java
new file mode 100644
index 0000000..4fe4542
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/world/biome/BedrockBiomeBiome.java
@@ -0,0 +1,273 @@
+
+package bitbucket.org.darkdays.world.biome;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.common.BiomeManager;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
+import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
+import net.minecraft.world.gen.placement.Placement;
+import net.minecraft.world.gen.placement.IPlacementConfig;
+import net.minecraft.world.gen.placement.FrequencyConfig;
+import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig;
+import net.minecraft.world.gen.feature.structure.MineshaftStructure;
+import net.minecraft.world.gen.feature.structure.MineshaftConfig;
+import net.minecraft.world.gen.feature.SeaGrassConfig;
+import net.minecraft.world.gen.feature.Feature;
+import net.minecraft.world.gen.feature.BaseTreeFeatureConfig;
+import net.minecraft.world.gen.feature.AbstractTreeFeature;
+import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider;
+import net.minecraft.world.gen.IWorldGenerationReader;
+import net.minecraft.world.gen.GenerationStage;
+import net.minecraft.world.biome.DefaultBiomeFeatures;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.IWorldWriter;
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.MutableBoundingBox;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.tags.BlockTags;
+import net.minecraft.entity.EntityType;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.Set;
+import java.util.Random;
+
+import bitbucket.org.darkdays.block.BedstoneBlock;
+import bitbucket.org.darkdays.block.BedsoilBlock;
+import bitbucket.org.darkdays.block.BedrockOreBlock;
+import bitbucket.org.darkdays.block.Bed_WoodWoodBlock;
+import bitbucket.org.darkdays.block.Bed_WoodLogBlock;
+import bitbucket.org.darkdays.block.Bed_WoodLeavesBlock;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BedrockBiomeBiome extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:bedrock_biome")
+ public static final CustomBiome biome = null;
+ public BedrockBiomeBiome(DarkdaysModElements instance) {
+ super(instance, 49);
+ }
+
+ @Override
+ public void initElements() {
+ elements.biomes.add(() -> new CustomBiome());
+ }
+
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ BiomeManager.addSpawnBiome(biome);
+ BiomeManager.addBiome(BiomeManager.BiomeType.DESERT, new BiomeManager.BiomeEntry(biome, 10));
+ }
+ static class CustomBiome extends Biome {
+ public CustomBiome() {
+ super(new Biome.Builder().downfall(0.5f).depth(0.1f).scale(0.2f).temperature(0.5f).precipitation(Biome.RainType.RAIN)
+ .category(Biome.Category.NONE).waterColor(-13750738).waterFogColor(-13750738)
+ .surfaceBuilder(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(BedsoilBlock.block.getDefaultState(),
+ BedstoneBlock.block.getDefaultState(), BedstoneBlock.block.getDefaultState())));
+ setRegistryName("bedrock_biome");
+ DefaultBiomeFeatures.addCarvers(this);
+ DefaultBiomeFeatures.addMonsterRooms(this);
+ DefaultBiomeFeatures.addStructures(this);
+ DefaultBiomeFeatures.addOres(this);
+ this.addStructure(Feature.MINESHAFT.withConfiguration(new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.FLOWER.withConfiguration(DefaultBiomeFeatures.DEFAULT_FLOWER_CONFIG)
+ .withPlacement(Placement.COUNT_HEIGHTMAP_32.configure(new FrequencyConfig(4))));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.withConfiguration(DefaultBiomeFeatures.GRASS_CONFIG)
+ .withPlacement(Placement.COUNT_HEIGHTMAP_DOUBLE.configure(new FrequencyConfig(4))));
+ this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.SEAGRASS.withConfiguration(new SeaGrassConfig(20, 0.3D))
+ .withPlacement(Placement.TOP_SOLID_HEIGHTMAP.configure(IPlacementConfig.NO_PLACEMENT_CONFIG)));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, new CustomTreeFeature()
+ .withConfiguration((new BaseTreeFeatureConfig.Builder(new SimpleBlockStateProvider(Bed_WoodWoodBlock.block.getDefaultState()),
+ new SimpleBlockStateProvider(Bed_WoodLogBlock.block.getDefaultState()))).baseHeight(7)
+ .setSapling((net.minecraftforge.common.IPlantable) Blocks.JUNGLE_SAPLING).build())
+ .withPlacement(Placement.COUNT_EXTRA_HEIGHTMAP.configure(new AtSurfaceWithExtraConfig(32, 0.1F, 1))));
+ this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE_PIGMAN, 20, 4, 4));
+ this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.BLAZE, 20, 4, 4));
+ this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.EVOKER_FANGS, 20, 4, 4));
+ this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.HUSK, 20, 4, 4));
+ this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.GHAST, 20, 4, 4));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getGrassColor(double posX, double posZ) {
+ return -13750738;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getFoliageColor() {
+ return -13750738;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getSkyColor() {
+ return -13750738;
+ }
+ }
+
+ static class CustomTreeFeature extends AbstractTreeFeature {
+ CustomTreeFeature() {
+ super(BaseTreeFeatureConfig::deserialize);
+ }
+
+ @Override
+ protected boolean place(IWorldGenerationReader worldgen, Random rand, BlockPos position, Set changedBlocks,
+ Set changedBlocks2, MutableBoundingBox bbox, BaseTreeFeatureConfig conf) {
+ if (!(worldgen instanceof IWorld))
+ return false;
+ IWorld world = (IWorld) worldgen;
+ int height = rand.nextInt(5) + 7;
+ boolean spawnTree = true;
+ if (position.getY() >= 1 && position.getY() + height + 1 <= world.getHeight()) {
+ for (int j = position.getY(); j <= position.getY() + 1 + height; j++) {
+ int k = 1;
+ if (j == position.getY())
+ k = 0;
+ if (j >= position.getY() + height - 1)
+ k = 2;
+ for (int px = position.getX() - k; px <= position.getX() + k && spawnTree; px++) {
+ for (int pz = position.getZ() - k; pz <= position.getZ() + k && spawnTree; pz++) {
+ if (j >= 0 && j < world.getHeight()) {
+ if (!this.isReplaceable(world, new BlockPos(px, j, pz))) {
+ spawnTree = false;
+ }
+ } else {
+ spawnTree = false;
+ }
+ }
+ }
+ }
+ if (!spawnTree) {
+ return false;
+ } else {
+ Block ground = world.getBlockState(position.add(0, -1, 0)).getBlock();
+ Block ground2 = world.getBlockState(position.add(0, -2, 0)).getBlock();
+ if (!((ground == BedsoilBlock.block.getDefaultState().getBlock() || ground == BedstoneBlock.block.getDefaultState().getBlock())
+ && (ground2 == BedsoilBlock.block.getDefaultState().getBlock()
+ || ground2 == BedstoneBlock.block.getDefaultState().getBlock())))
+ return false;
+ BlockState state = world.getBlockState(position.down());
+ if (position.getY() < world.getHeight() - height - 1) {
+ setTreeBlockState(changedBlocks, world, position.down(), BedstoneBlock.block.getDefaultState(), bbox);
+ for (int genh = position.getY() - 3 + height; genh <= position.getY() + height; genh++) {
+ int i4 = genh - (position.getY() + height);
+ int j1 = (int) (1 - i4 * 0.5);
+ for (int k1 = position.getX() - j1; k1 <= position.getX() + j1; ++k1) {
+ for (int i2 = position.getZ() - j1; i2 <= position.getZ() + j1; ++i2) {
+ int j2 = i2 - position.getZ();
+ if (Math.abs(position.getX()) != j1 || Math.abs(j2) != j1 || rand.nextInt(2) != 0 && i4 != 0) {
+ BlockPos blockpos = new BlockPos(k1, genh, i2);
+ state = world.getBlockState(blockpos);
+ if (state.getBlock().isAir(state, world, blockpos) || state.getMaterial().blocksMovement()
+ || state.isIn(BlockTags.LEAVES)
+ || state.getBlock() == Bed_WoodLeavesBlock.block.getDefaultState().getBlock()
+ || state.getBlock() == Bed_WoodLogBlock.block.getDefaultState().getBlock()) {
+ setTreeBlockState(changedBlocks, world, blockpos, Bed_WoodLogBlock.block.getDefaultState(), bbox);
+ }
+ }
+ }
+ }
+ }
+ for (int genh = 0; genh < height; genh++) {
+ BlockPos genhPos = position.up(genh);
+ state = world.getBlockState(genhPos);
+ setTreeBlockState(changedBlocks, world, genhPos, Bed_WoodWoodBlock.block.getDefaultState(), bbox);
+ if (state.getBlock().isAir(state, world, genhPos) || state.getMaterial().blocksMovement() || state.isIn(BlockTags.LEAVES)
+ || state.getBlock() == Bed_WoodLeavesBlock.block.getDefaultState().getBlock()
+ || state.getBlock() == Bed_WoodLogBlock.block.getDefaultState().getBlock()) {
+ if (genh > 0) {
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(-1, genh, 0)))
+ setTreeBlockState(changedBlocks, world, position.add(-1, genh, 0),
+ Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(1, genh, 0)))
+ setTreeBlockState(changedBlocks, world, position.add(1, genh, 0), Bed_WoodLeavesBlock.block.getDefaultState(),
+ bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(0, genh, -1)))
+ setTreeBlockState(changedBlocks, world, position.add(0, genh, -1),
+ Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(0, genh, 1)))
+ setTreeBlockState(changedBlocks, world, position.add(0, genh, 1), Bed_WoodLeavesBlock.block.getDefaultState(),
+ bbox);
+ }
+ }
+ }
+ for (int genh = position.getY() - 3 + height; genh <= position.getY() + height; genh++) {
+ int k4 = (int) (1 - (genh - (position.getY() + height)) * 0.5);
+ for (int genx = position.getX() - k4; genx <= position.getX() + k4; genx++) {
+ for (int genz = position.getZ() - k4; genz <= position.getZ() + k4; genz++) {
+ BlockPos bpos = new BlockPos(genx, genh, genz);
+ state = world.getBlockState(bpos);
+ if (state.isIn(BlockTags.LEAVES) || state.getBlock() == Bed_WoodLogBlock.block.getDefaultState().getBlock()) {
+ BlockPos blockpos1 = bpos.south();
+ BlockPos blockpos2 = bpos.west();
+ BlockPos blockpos3 = bpos.east();
+ BlockPos blockpos4 = bpos.north();
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos2))
+ this.addVines(world, blockpos2, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos3))
+ this.addVines(world, blockpos3, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos4))
+ this.addVines(world, blockpos4, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos1))
+ this.addVines(world, blockpos1, changedBlocks, bbox);
+ }
+ }
+ }
+ }
+ if (rand.nextInt(4) == 0 && height > 5) {
+ for (int hlevel = 0; hlevel < 2; hlevel++) {
+ for (Direction Direction : Direction.Plane.HORIZONTAL) {
+ if (rand.nextInt(4 - hlevel) == 0) {
+ Direction dir = Direction.getOpposite();
+ setTreeBlockState(changedBlocks, world, position.add(dir.getXOffset(), height - 5 + hlevel, dir.getZOffset()),
+ BedrockOreBlock.block.getDefaultState(), bbox);
+ }
+ }
+ }
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } else {
+ return false;
+ }
+ }
+
+ private void addVines(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox bbox) {
+ setTreeBlockState(changedBlocks, world, pos, Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ int i = 5;
+ for (BlockPos blockpos = pos.down(); world.isAirBlock(blockpos) && i > 0; --i) {
+ setTreeBlockState(changedBlocks, world, blockpos, Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ blockpos = blockpos.down();
+ }
+ }
+
+ private boolean canGrowInto(Block blockType) {
+ return blockType.getDefaultState().getMaterial() == Material.AIR || blockType == Bed_WoodWoodBlock.block.getDefaultState().getBlock()
+ || blockType == Bed_WoodLogBlock.block.getDefaultState().getBlock()
+ || blockType == BedsoilBlock.block.getDefaultState().getBlock() || blockType == BedstoneBlock.block.getDefaultState().getBlock();
+ }
+
+ private boolean isReplaceable(IWorld world, BlockPos pos) {
+ BlockState state = world.getBlockState(pos);
+ return state.getBlock().isAir(state, world, pos) || canGrowInto(state.getBlock()) || !state.getMaterial().blocksMovement();
+ }
+
+ private void setTreeBlockState(Set changedBlocks, IWorldWriter world, BlockPos pos, BlockState state, MutableBoundingBox mbb) {
+ super.func_227217_a_(world, pos, state, mbb);
+ changedBlocks.add(pos.toImmutable());
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/world/biome/DarklandsBiome.java b/src/main/java/bitbucket/org/darkdays/world/biome/DarklandsBiome.java
new file mode 100644
index 0000000..95b1301
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/world/biome/DarklandsBiome.java
@@ -0,0 +1,279 @@
+
+package bitbucket.org.darkdays.world.biome;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.common.BiomeManager;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
+import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
+import net.minecraft.world.gen.placement.Placement;
+import net.minecraft.world.gen.placement.IPlacementConfig;
+import net.minecraft.world.gen.placement.FrequencyConfig;
+import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig;
+import net.minecraft.world.gen.feature.structure.ShipwreckConfig;
+import net.minecraft.world.gen.feature.structure.MineshaftStructure;
+import net.minecraft.world.gen.feature.structure.MineshaftConfig;
+import net.minecraft.world.gen.feature.SeaGrassConfig;
+import net.minecraft.world.gen.feature.IFeatureConfig;
+import net.minecraft.world.gen.feature.Feature;
+import net.minecraft.world.gen.feature.BaseTreeFeatureConfig;
+import net.minecraft.world.gen.feature.AbstractTreeFeature;
+import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider;
+import net.minecraft.world.gen.IWorldGenerationReader;
+import net.minecraft.world.gen.GenerationStage;
+import net.minecraft.world.biome.DefaultBiomeFeatures;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.IWorldWriter;
+import net.minecraft.world.IWorld;
+import net.minecraft.util.math.MutableBoundingBox;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.Direction;
+import net.minecraft.tags.BlockTags;
+import net.minecraft.entity.EntityType;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import java.util.Set;
+import java.util.Random;
+
+import bitbucket.org.darkdays.block.DarkAppleFruitBlock;
+import bitbucket.org.darkdays.block.BedstoneBlock;
+import bitbucket.org.darkdays.block.BedsoilBlock;
+import bitbucket.org.darkdays.block.Bed_WoodWoodBlock;
+import bitbucket.org.darkdays.block.Bed_WoodLogBlock;
+import bitbucket.org.darkdays.block.Bed_WoodLeavesBlock;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class DarklandsBiome extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:darklands")
+ public static final CustomBiome biome = null;
+ public DarklandsBiome(DarkdaysModElements instance) {
+ super(instance, 71);
+ }
+
+ @Override
+ public void initElements() {
+ elements.biomes.add(() -> new CustomBiome());
+ }
+
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ BiomeManager.addSpawnBiome(biome);
+ BiomeManager.addBiome(BiomeManager.BiomeType.WARM, new BiomeManager.BiomeEntry(biome, 10));
+ }
+ static class CustomBiome extends Biome {
+ public CustomBiome() {
+ super(new Biome.Builder().downfall(0.5f).depth(0.1f).scale(0.2f).temperature(0.5f).precipitation(Biome.RainType.RAIN)
+ .category(Biome.Category.NONE).waterColor(-13421773).waterFogColor(-13421773).parent("darkdays:bedrock_biome")
+ .surfaceBuilder(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(BedsoilBlock.block.getDefaultState(),
+ BedstoneBlock.block.getDefaultState(), BedstoneBlock.block.getDefaultState())));
+ setRegistryName("darklands");
+ DefaultBiomeFeatures.addCarvers(this);
+ DefaultBiomeFeatures.addMonsterRooms(this);
+ DefaultBiomeFeatures.addStructures(this);
+ DefaultBiomeFeatures.addOres(this);
+ this.addStructure(Feature.STRONGHOLD.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.MINESHAFT.withConfiguration(new MineshaftConfig(0.004D, MineshaftStructure.Type.NORMAL)));
+ this.addStructure(Feature.PILLAGER_OUTPOST.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.WOODLAND_MANSION.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.JUNGLE_TEMPLE.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.DESERT_PYRAMID.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.IGLOO.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.OCEAN_MONUMENT.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG));
+ this.addStructure(Feature.SHIPWRECK.withConfiguration(new ShipwreckConfig(false)));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.FLOWER.withConfiguration(DefaultBiomeFeatures.DEFAULT_FLOWER_CONFIG)
+ .withPlacement(Placement.COUNT_HEIGHTMAP_32.configure(new FrequencyConfig(4))));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.withConfiguration(DefaultBiomeFeatures.GRASS_CONFIG)
+ .withPlacement(Placement.COUNT_HEIGHTMAP_DOUBLE.configure(new FrequencyConfig(4))));
+ this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.SEAGRASS.withConfiguration(new SeaGrassConfig(20, 0.3D))
+ .withPlacement(Placement.TOP_SOLID_HEIGHTMAP.configure(IPlacementConfig.NO_PLACEMENT_CONFIG)));
+ addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, new CustomTreeFeature()
+ .withConfiguration((new BaseTreeFeatureConfig.Builder(new SimpleBlockStateProvider(Bed_WoodLogBlock.block.getDefaultState()),
+ new SimpleBlockStateProvider(Bed_WoodWoodBlock.block.getDefaultState()))).baseHeight(7)
+ .setSapling((net.minecraftforge.common.IPlantable) Blocks.JUNGLE_SAPLING).build())
+ .withPlacement(Placement.COUNT_EXTRA_HEIGHTMAP.configure(new AtSurfaceWithExtraConfig(72, 0.1F, 1))));
+ this.addSpawn(EntityClassification.CREATURE, new Biome.SpawnListEntry(EntityType.AREA_EFFECT_CLOUD, 50, 56, 100));
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getGrassColor(double posX, double posZ) {
+ return -13421773;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getFoliageColor() {
+ return -13421773;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public int getSkyColor() {
+ return -13421773;
+ }
+ }
+
+ static class CustomTreeFeature extends AbstractTreeFeature {
+ CustomTreeFeature() {
+ super(BaseTreeFeatureConfig::deserialize);
+ }
+
+ @Override
+ protected boolean place(IWorldGenerationReader worldgen, Random rand, BlockPos position, Set changedBlocks,
+ Set changedBlocks2, MutableBoundingBox bbox, BaseTreeFeatureConfig conf) {
+ if (!(worldgen instanceof IWorld))
+ return false;
+ IWorld world = (IWorld) worldgen;
+ int height = rand.nextInt(5) + 7;
+ boolean spawnTree = true;
+ if (position.getY() >= 1 && position.getY() + height + 1 <= world.getHeight()) {
+ for (int j = position.getY(); j <= position.getY() + 1 + height; j++) {
+ int k = 1;
+ if (j == position.getY())
+ k = 0;
+ if (j >= position.getY() + height - 1)
+ k = 2;
+ for (int px = position.getX() - k; px <= position.getX() + k && spawnTree; px++) {
+ for (int pz = position.getZ() - k; pz <= position.getZ() + k && spawnTree; pz++) {
+ if (j >= 0 && j < world.getHeight()) {
+ if (!this.isReplaceable(world, new BlockPos(px, j, pz))) {
+ spawnTree = false;
+ }
+ } else {
+ spawnTree = false;
+ }
+ }
+ }
+ }
+ if (!spawnTree) {
+ return false;
+ } else {
+ Block ground = world.getBlockState(position.add(0, -1, 0)).getBlock();
+ Block ground2 = world.getBlockState(position.add(0, -2, 0)).getBlock();
+ if (!((ground == BedsoilBlock.block.getDefaultState().getBlock() || ground == BedstoneBlock.block.getDefaultState().getBlock())
+ && (ground2 == BedsoilBlock.block.getDefaultState().getBlock()
+ || ground2 == BedstoneBlock.block.getDefaultState().getBlock())))
+ return false;
+ BlockState state = world.getBlockState(position.down());
+ if (position.getY() < world.getHeight() - height - 1) {
+ setTreeBlockState(changedBlocks, world, position.down(), BedstoneBlock.block.getDefaultState(), bbox);
+ for (int genh = position.getY() - 3 + height; genh <= position.getY() + height; genh++) {
+ int i4 = genh - (position.getY() + height);
+ int j1 = (int) (1 - i4 * 0.5);
+ for (int k1 = position.getX() - j1; k1 <= position.getX() + j1; ++k1) {
+ for (int i2 = position.getZ() - j1; i2 <= position.getZ() + j1; ++i2) {
+ int j2 = i2 - position.getZ();
+ if (Math.abs(position.getX()) != j1 || Math.abs(j2) != j1 || rand.nextInt(2) != 0 && i4 != 0) {
+ BlockPos blockpos = new BlockPos(k1, genh, i2);
+ state = world.getBlockState(blockpos);
+ if (state.getBlock().isAir(state, world, blockpos) || state.getMaterial().blocksMovement()
+ || state.isIn(BlockTags.LEAVES)
+ || state.getBlock() == Bed_WoodLeavesBlock.block.getDefaultState().getBlock()
+ || state.getBlock() == Bed_WoodWoodBlock.block.getDefaultState().getBlock()) {
+ setTreeBlockState(changedBlocks, world, blockpos, Bed_WoodWoodBlock.block.getDefaultState(), bbox);
+ }
+ }
+ }
+ }
+ }
+ for (int genh = 0; genh < height; genh++) {
+ BlockPos genhPos = position.up(genh);
+ state = world.getBlockState(genhPos);
+ setTreeBlockState(changedBlocks, world, genhPos, Bed_WoodLogBlock.block.getDefaultState(), bbox);
+ if (state.getBlock().isAir(state, world, genhPos) || state.getMaterial().blocksMovement() || state.isIn(BlockTags.LEAVES)
+ || state.getBlock() == Bed_WoodLeavesBlock.block.getDefaultState().getBlock()
+ || state.getBlock() == Bed_WoodWoodBlock.block.getDefaultState().getBlock()) {
+ if (genh > 0) {
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(-1, genh, 0)))
+ setTreeBlockState(changedBlocks, world, position.add(-1, genh, 0),
+ Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(1, genh, 0)))
+ setTreeBlockState(changedBlocks, world, position.add(1, genh, 0), Bed_WoodLeavesBlock.block.getDefaultState(),
+ bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(0, genh, -1)))
+ setTreeBlockState(changedBlocks, world, position.add(0, genh, -1),
+ Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ if (rand.nextInt(3) > 0 && world.isAirBlock(position.add(0, genh, 1)))
+ setTreeBlockState(changedBlocks, world, position.add(0, genh, 1), Bed_WoodLeavesBlock.block.getDefaultState(),
+ bbox);
+ }
+ }
+ }
+ for (int genh = position.getY() - 3 + height; genh <= position.getY() + height; genh++) {
+ int k4 = (int) (1 - (genh - (position.getY() + height)) * 0.5);
+ for (int genx = position.getX() - k4; genx <= position.getX() + k4; genx++) {
+ for (int genz = position.getZ() - k4; genz <= position.getZ() + k4; genz++) {
+ BlockPos bpos = new BlockPos(genx, genh, genz);
+ state = world.getBlockState(bpos);
+ if (state.isIn(BlockTags.LEAVES) || state.getBlock() == Bed_WoodWoodBlock.block.getDefaultState().getBlock()) {
+ BlockPos blockpos1 = bpos.south();
+ BlockPos blockpos2 = bpos.west();
+ BlockPos blockpos3 = bpos.east();
+ BlockPos blockpos4 = bpos.north();
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos2))
+ this.addVines(world, blockpos2, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos3))
+ this.addVines(world, blockpos3, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos4))
+ this.addVines(world, blockpos4, changedBlocks, bbox);
+ if (rand.nextInt(4) == 0 && world.isAirBlock(blockpos1))
+ this.addVines(world, blockpos1, changedBlocks, bbox);
+ }
+ }
+ }
+ }
+ if (rand.nextInt(4) == 0 && height > 5) {
+ for (int hlevel = 0; hlevel < 2; hlevel++) {
+ for (Direction Direction : Direction.Plane.HORIZONTAL) {
+ if (rand.nextInt(4 - hlevel) == 0) {
+ Direction dir = Direction.getOpposite();
+ setTreeBlockState(changedBlocks, world, position.add(dir.getXOffset(), height - 5 + hlevel, dir.getZOffset()),
+ DarkAppleFruitBlock.block.getDefaultState(), bbox);
+ }
+ }
+ }
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } else {
+ return false;
+ }
+ }
+
+ private void addVines(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox bbox) {
+ setTreeBlockState(changedBlocks, world, pos, Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ int i = 5;
+ for (BlockPos blockpos = pos.down(); world.isAirBlock(blockpos) && i > 0; --i) {
+ setTreeBlockState(changedBlocks, world, blockpos, Bed_WoodLeavesBlock.block.getDefaultState(), bbox);
+ blockpos = blockpos.down();
+ }
+ }
+
+ private boolean canGrowInto(Block blockType) {
+ return blockType.getDefaultState().getMaterial() == Material.AIR || blockType == Bed_WoodLogBlock.block.getDefaultState().getBlock()
+ || blockType == Bed_WoodWoodBlock.block.getDefaultState().getBlock()
+ || blockType == BedsoilBlock.block.getDefaultState().getBlock() || blockType == BedstoneBlock.block.getDefaultState().getBlock();
+ }
+
+ private boolean isReplaceable(IWorld world, BlockPos pos) {
+ BlockState state = world.getBlockState(pos);
+ return state.getBlock().isAir(state, world, pos) || canGrowInto(state.getBlock()) || !state.getMaterial().blocksMovement();
+ }
+
+ private void setTreeBlockState(Set changedBlocks, IWorldWriter world, BlockPos pos, BlockState state, MutableBoundingBox mbb) {
+ super.func_227217_a_(world, pos, state, mbb);
+ changedBlocks.add(pos.toImmutable());
+ }
+ }
+}
diff --git a/src/main/java/bitbucket/org/darkdays/world/dimension/BederDimension.java b/src/main/java/bitbucket/org/darkdays/world/dimension/BederDimension.java
new file mode 100644
index 0000000..42534b9
--- /dev/null
+++ b/src/main/java/bitbucket/org/darkdays/world/dimension/BederDimension.java
@@ -0,0 +1,804 @@
+
+package bitbucket.org.darkdays.world.dimension;
+
+import org.jline.terminal.Size;
+
+import net.minecraftforge.registries.ObjectHolder;
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.world.RegisterDimensionsEvent;
+import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.common.util.ITeleporter;
+import net.minecraftforge.common.ModDimension;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.DimensionManager;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.server.TicketType;
+import net.minecraft.world.server.ServerWorld;
+import net.minecraft.world.gen.layer.traits.IC0Transformer;
+import net.minecraft.world.gen.layer.ZoomLayer;
+import net.minecraft.world.gen.layer.Layer;
+import net.minecraft.world.gen.layer.IslandLayer;
+import net.minecraft.world.gen.area.LazyArea;
+import net.minecraft.world.gen.area.IAreaFactory;
+import net.minecraft.world.gen.NetherGenSettings;
+import net.minecraft.world.gen.NetherChunkGenerator;
+import net.minecraft.world.gen.LazyAreaLayerContext;
+import net.minecraft.world.gen.INoiseRandom;
+import net.minecraft.world.gen.IExtendedNoiseRandom;
+import net.minecraft.world.gen.ChunkGenerator;
+import net.minecraft.world.dimension.DimensionType;
+import net.minecraft.world.dimension.Dimension;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.biome.provider.BiomeProvider;
+import net.minecraft.world.biome.Biome;
+import net.minecraft.world.World;
+import net.minecraft.world.IWorld;
+import net.minecraft.village.PointOfInterestType;
+import net.minecraft.village.PointOfInterestManager;
+import net.minecraft.village.PointOfInterest;
+import net.minecraft.util.registry.Registry;
+import net.minecraft.util.math.Vec3i;
+import net.minecraft.util.math.Vec3d;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.util.math.ChunkPos;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.SoundCategory;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Direction;
+import net.minecraft.util.CachedBlockInfo;
+import net.minecraft.particles.ParticleTypes;
+import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.entity.EntityClassification;
+import net.minecraft.entity.Entity;
+import net.minecraft.client.renderer.RenderTypeLookup;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.block.pattern.BlockPattern;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.NetherPortalBlock;
+import net.minecraft.block.Blocks;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Block;
+
+import javax.annotation.Nullable;
+
+import java.util.stream.Collectors;
+import java.util.function.LongFunction;
+import java.util.function.Function;
+import java.util.function.BiFunction;
+import java.util.Set;
+import java.util.Random;
+import java.util.Optional;
+import java.util.List;
+import java.util.HashSet;
+import java.util.Comparator;
+import java.util.Arrays;
+
+import java.lang.reflect.Method;
+
+import com.google.common.collect.Sets;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.cache.LoadingCache;
+
+import bitbucket.org.darkdays.item.BederItem;
+import bitbucket.org.darkdays.block.LiquidBedrockBlock;
+import bitbucket.org.darkdays.block.BedstoneBlock;
+import bitbucket.org.darkdays.block.BedrockBlockBlock;
+import bitbucket.org.darkdays.DarkdaysModElements;
+
+@DarkdaysModElements.ModElement.Tag
+public class BederDimension extends DarkdaysModElements.ModElement {
+ @ObjectHolder("darkdays:beder")
+ public static final ModDimension dimension = null;
+ @ObjectHolder("darkdays:beder_portal")
+ public static final CustomPortalBlock portal = null;
+ public static DimensionType type = null;
+ private static Biome[] dimensionBiomes;
+ public BederDimension(DarkdaysModElements instance) {
+ super(instance, 49);
+ MinecraftForge.EVENT_BUS.register(this);
+ FMLJavaModLoadingContext.get().getModEventBus().register(this);
+ }
+
+ @SubscribeEvent
+ public void registerDimension(RegistryEvent.Register event) {
+ event.getRegistry().register(new CustomModDimension().setRegistryName("beder"));
+ }
+
+ @SubscribeEvent
+ public void onRegisterDimensionsEvent(RegisterDimensionsEvent event) {
+ if (DimensionType.byName(new ResourceLocation("darkdays:beder")) == null) {
+ DimensionManager.registerDimension(new ResourceLocation("darkdays:beder"), dimension, null, false);
+ }
+ type = DimensionType.byName(new ResourceLocation("darkdays:beder"));
+ }
+
+ @Override
+ public void init(FMLCommonSetupEvent event) {
+ dimensionBiomes = new Biome[]{ForgeRegistries.BIOMES.getValue(new ResourceLocation("darkdays:bedrock_biome")),};
+ }
+
+ @Override
+ public void initElements() {
+ elements.blocks.add(() -> new CustomPortalBlock());
+ elements.items.add(() -> new BederItem().setRegistryName("beder"));
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public void clientLoad(FMLClientSetupEvent event) {
+ RenderTypeLookup.setRenderLayer(portal, RenderType.getTranslucent());
+ }
+ public static class CustomPortalBlock extends NetherPortalBlock {
+ public CustomPortalBlock() {
+ super(Block.Properties.create(Material.PORTAL).doesNotBlockMovement().tickRandomly().hardnessAndResistance(-1.0F).sound(SoundType.GLASS)
+ .lightValue(11).noDrops());
+ setRegistryName("beder_portal");
+ }
+
+ @Override
+ public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
+ }
+
+ public void portalSpawn(World world, BlockPos pos) {
+ CustomPortalBlock.Size portalsize = this.isValid(world, pos);
+ if (portalsize != null)
+ portalsize.placePortalBlocks();
+ }
+
+ @Nullable
+ public CustomPortalBlock.Size isValid(IWorld worldIn, BlockPos pos) {
+ CustomPortalBlock.Size netherportalblock$size = new CustomPortalBlock.Size(worldIn, pos, Direction.Axis.X);
+ if (netherportalblock$size.isValid() && netherportalblock$size.portalBlockCount == 0) {
+ return netherportalblock$size;
+ } else {
+ CustomPortalBlock.Size netherportalblock$size1 = new CustomPortalBlock.Size(worldIn, pos, Direction.Axis.Z);
+ return netherportalblock$size1.isValid() && netherportalblock$size1.portalBlockCount == 0 ? netherportalblock$size1 : null;
+ }
+ }
+
+ public static BlockPattern.PatternHelper createPatternHelper(IWorld p_181089_0_, BlockPos worldIn) {
+ Direction.Axis direction$axis = Direction.Axis.Z;
+ CustomPortalBlock.Size netherportalblock$size = new CustomPortalBlock.Size(p_181089_0_, worldIn, Direction.Axis.X);
+ LoadingCache loadingcache = BlockPattern.createLoadingCache(p_181089_0_, true);
+ if (!netherportalblock$size.isValid()) {
+ direction$axis = Direction.Axis.X;
+ netherportalblock$size = new CustomPortalBlock.Size(p_181089_0_, worldIn, Direction.Axis.Z);
+ }
+ if (!netherportalblock$size.isValid()) {
+ return new BlockPattern.PatternHelper(worldIn, Direction.NORTH, Direction.UP, loadingcache, 1, 1, 1);
+ } else {
+ int[] aint = new int[Direction.AxisDirection.values().length];
+ Direction direction = netherportalblock$size.rightDir.rotateYCCW();
+ BlockPos blockpos = netherportalblock$size.bottomLeft.up(netherportalblock$size.getHeight() - 1);
+ for (Direction.AxisDirection direction$axisdirection : Direction.AxisDirection.values()) {
+ BlockPattern.PatternHelper blockpattern$patternhelper = new BlockPattern.PatternHelper(
+ direction.getAxisDirection() == direction$axisdirection
+ ? blockpos
+ : blockpos.offset(netherportalblock$size.rightDir, netherportalblock$size.getWidth() - 1),
+ Direction.getFacingFromAxis(direction$axisdirection, direction$axis), Direction.UP, loadingcache,
+ netherportalblock$size.getWidth(), netherportalblock$size.getHeight(), 1);
+ for (int i = 0; i < netherportalblock$size.getWidth(); ++i) {
+ for (int j = 0; j < netherportalblock$size.getHeight(); ++j) {
+ CachedBlockInfo cachedblockinfo = blockpattern$patternhelper.translateOffset(i, j, 1);
+ if (!cachedblockinfo.getBlockState().isAir()) {
+ ++aint[direction$axisdirection.ordinal()];
+ }
+ }
+ }
+ }
+ Direction.AxisDirection direction$axisdirection1 = Direction.AxisDirection.POSITIVE;
+ for (Direction.AxisDirection direction$axisdirection2 : Direction.AxisDirection.values()) {
+ if (aint[direction$axisdirection2.ordinal()] < aint[direction$axisdirection1.ordinal()]) {
+ direction$axisdirection1 = direction$axisdirection2;
+ }
+ }
+ return new BlockPattern.PatternHelper(
+ direction.getAxisDirection() == direction$axisdirection1
+ ? blockpos
+ : blockpos.offset(netherportalblock$size.rightDir, netherportalblock$size.getWidth() - 1),
+ Direction.getFacingFromAxis(direction$axisdirection1, direction$axis), Direction.UP, loadingcache,
+ netherportalblock$size.getWidth(), netherportalblock$size.getHeight(), 1);
+ }
+ }
+
+ @Override /**
+ * Update the provided state given the provided neighbor facing and neighbor
+ * state, returning a new state. For example, fences make their connections to
+ * the passed in state if possible, and wet concrete powder immediately returns
+ * its solidified counterpart. Note that this method should ideally consider
+ * only the specific face passed in.
+ */
+ public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos,
+ BlockPos facingPos) {
+ Direction.Axis direction$axis = facing.getAxis();
+ Direction.Axis direction$axis1 = stateIn.get(AXIS);
+ boolean flag = direction$axis1 != direction$axis && direction$axis.isHorizontal();
+ return !flag && facingState.getBlock() != this && !(new CustomPortalBlock.Size(worldIn, currentPos, direction$axis1)).func_208508_f()
+ ? Blocks.AIR.getDefaultState()
+ : super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos);
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public void animateTick(BlockState state, World world, BlockPos pos, Random random) {
+ for (int i = 0; i < 4; i++) {
+ double px = pos.getX() + random.nextFloat();
+ double py = pos.getY() + random.nextFloat();
+ double pz = pos.getZ() + random.nextFloat();
+ double vx = (random.nextFloat() - 0.5) / 2f;
+ double vy = (random.nextFloat() - 0.5) / 2f;
+ double vz = (random.nextFloat() - 0.5) / 2f;
+ int j = random.nextInt(4) - 1;
+ if (world.getBlockState(pos.west()).getBlock() != this && world.getBlockState(pos.east()).getBlock() != this) {
+ px = pos.getX() + 0.5 + 0.25 * j;
+ vx = random.nextFloat() * 2 * j;
+ } else {
+ pz = pos.getZ() + 0.5 + 0.25 * j;
+ vz = random.nextFloat() * 2 * j;
+ }
+ world.addParticle(ParticleTypes.EXPLOSION, px, py, pz, vx, vy, vz);
+ }
+ if (random.nextInt(110) == 0)
+ world.playSound(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5,
+ (net.minecraft.util.SoundEvent) ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(("darkdays:ggwandsound"))),
+ SoundCategory.BLOCKS, 0.5f, random.nextFloat() * 0.4F + 0.8F, false);
+ }
+
+ @Override
+ public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {
+ if (!entity.isPassenger() && !entity.isBeingRidden() && entity.isNonBoss() && !entity.world.isRemote && true) {
+ if (entity.timeUntilPortal > 0) {
+ entity.timeUntilPortal = entity.getPortalCooldown();
+ } else if (entity.dimension != type) {
+ entity.timeUntilPortal = entity.getPortalCooldown();
+ teleportToDimension(entity, pos, type);
+ } else {
+ entity.timeUntilPortal = entity.getPortalCooldown();
+ teleportToDimension(entity, pos, DimensionType.OVERWORLD);
+ }
+ }
+ }
+
+ private void teleportToDimension(Entity entity, BlockPos pos, DimensionType destinationType) {
+ entity.changeDimension(destinationType, getTeleporterForDimension(entity, pos, entity.getServer().getWorld(destinationType)));
+ }
+
+ private TeleporterDimensionMod getTeleporterForDimension(Entity entity, BlockPos pos, ServerWorld nextWorld) {
+ BlockPattern.PatternHelper bph = BederDimension.CustomPortalBlock.createPatternHelper(entity.world, pos);
+ double d0 = bph.getForwards().getAxis() == Direction.Axis.X
+ ? (double) bph.getFrontTopLeft().getZ()
+ : (double) bph.getFrontTopLeft().getX();
+ double d1 = bph.getForwards().getAxis() == Direction.Axis.X ? entity.getPosZ() : entity.getPosX();
+ d1 = Math.abs(MathHelper.pct(d1 - (double) (bph.getForwards().rotateY().getAxisDirection() == Direction.AxisDirection.NEGATIVE ? 1 : 0),
+ d0, d0 - (double) bph.getWidth()));
+ double d2 = MathHelper.pct(entity.getPosY() - 1, (double) bph.getFrontTopLeft().getY(),
+ (double) (bph.getFrontTopLeft().getY() - bph.getHeight()));
+ return new TeleporterDimensionMod(nextWorld, new Vec3d(d1, d2, 0), bph.getForwards());
+ }
+ public static class Size {
+ private final IWorld world;
+ private final Direction.Axis axis;
+ private final Direction rightDir;
+ private final Direction leftDir;
+ private int portalBlockCount;
+ @Nullable
+ private BlockPos bottomLeft;
+ private int height;
+ private int width;
+ public Size(IWorld worldIn, BlockPos pos, Direction.Axis axisIn) {
+ this.world = worldIn;
+ this.axis = axisIn;
+ if (axisIn == Direction.Axis.X) {
+ this.leftDir = Direction.EAST;
+ this.rightDir = Direction.WEST;
+ } else {
+ this.leftDir = Direction.NORTH;
+ this.rightDir = Direction.SOUTH;
+ }
+ for (BlockPos blockpos = pos; pos.getY() > blockpos.getY() - 21 && pos.getY() > 0
+ && this.func_196900_a(worldIn.getBlockState(pos.down())); pos = pos.down()) {
+ ;
+ }
+ int i = this.getDistanceUntilEdge(pos, this.leftDir) - 1;
+ if (i >= 0) {
+ this.bottomLeft = pos.offset(this.leftDir, i);
+ this.width = this.getDistanceUntilEdge(this.bottomLeft, this.rightDir);
+ if (this.width < 2 || this.width > 21) {
+ this.bottomLeft = null;
+ this.width = 0;
+ }
+ }
+ if (this.bottomLeft != null) {
+ this.height = this.calculatePortalHeight();
+ }
+ }
+
+ protected int getDistanceUntilEdge(BlockPos pos, Direction directionIn) {
+ int i;
+ for (i = 0; i < 22; ++i) {
+ BlockPos blockpos = pos.offset(directionIn, i);
+ if (!this.func_196900_a(this.world.getBlockState(blockpos))
+ || !(this.world.getBlockState(blockpos.down()).getBlock() == BedrockBlockBlock.block.getDefaultState().getBlock())) {
+ break;
+ }
+ }
+ BlockPos framePos = pos.offset(directionIn, i);
+ return (this.world.getBlockState(framePos).getBlock() == BedrockBlockBlock.block.getDefaultState().getBlock()) ? i : 0;
+ }
+
+ public int getHeight() {
+ return this.height;
+ }
+
+ public int getWidth() {
+ return this.width;
+ }
+
+ protected int calculatePortalHeight() {
+ label56 : for (this.height = 0; this.height < 21; ++this.height) {
+ for (int i = 0; i < this.width; ++i) {
+ BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i).up(this.height);
+ BlockState blockstate = this.world.getBlockState(blockpos);
+ if (!this.func_196900_a(blockstate)) {
+ break label56;
+ }
+ Block block = blockstate.getBlock();
+ if (block == portal) {
+ ++this.portalBlockCount;
+ }
+ if (i == 0) {
+ BlockPos framePos = blockpos.offset(this.leftDir);
+ if (!(this.world.getBlockState(framePos).getBlock() == BedrockBlockBlock.block.getDefaultState().getBlock())) {
+ break label56;
+ }
+ } else if (i == this.width - 1) {
+ BlockPos framePos = blockpos.offset(this.rightDir);
+ if (!(this.world.getBlockState(framePos).getBlock() == BedrockBlockBlock.block.getDefaultState().getBlock())) {
+ break label56;
+ }
+ }
+ }
+ }
+ for (int j = 0; j < this.width; ++j) {
+ BlockPos framePos = this.bottomLeft.offset(this.rightDir, j).up(this.height);
+ if (!(this.world.getBlockState(framePos).getBlock() == BedrockBlockBlock.block.getDefaultState().getBlock())) {
+ this.height = 0;
+ break;
+ }
+ }
+ if (this.height <= 21 && this.height >= 3) {
+ return this.height;
+ } else {
+ this.bottomLeft = null;
+ this.width = 0;
+ this.height = 0;
+ return 0;
+ }
+ }
+
+ protected boolean func_196900_a(BlockState pos) {
+ Block block = pos.getBlock();
+ return pos.isAir() || block == Blocks.FIRE || block == portal;
+ }
+
+ public boolean isValid() {
+ return this.bottomLeft != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21;
+ }
+
+ public void placePortalBlocks() {
+ for (int i = 0; i < this.width; ++i) {
+ BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i);
+ for (int j = 0; j < this.height; ++j) {
+ this.world.setBlockState(blockpos.up(j), portal.getDefaultState().with(NetherPortalBlock.AXIS, this.axis), 18);
+ }
+ }
+ }
+
+ private boolean func_196899_f() {
+ return this.portalBlockCount >= this.width * this.height;
+ }
+
+ public boolean func_208508_f() {
+ return this.isValid() && this.func_196899_f();
+ }
+ }
+ }
+ private static PointOfInterestType poi = null;
+ public static final TicketType CUSTOM_PORTAL = TicketType.create("beder_portal", Vec3i::compareTo, 300);
+ @SubscribeEvent
+ public void registerPointOfInterest(RegistryEvent.Register event) {
+ try {
+ Method method = ObfuscationReflectionHelper.findMethod(PointOfInterestType.class, "func_226359_a_", String.class, Set.class, int.class,
+ int.class);
+ method.setAccessible(true);
+ poi = (PointOfInterestType) method.invoke(null, "beder_portal",
+ Sets.newHashSet(ImmutableSet.copyOf(portal.getStateContainer().getValidStates())), 0, 1);
+ event.getRegistry().register(poi);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public static class TeleporterDimensionMod implements ITeleporter {
+ private Vec3d lastPortalVec;
+ private Direction teleportDirection;
+ protected final ServerWorld world;
+ protected final Random random;
+ public TeleporterDimensionMod(ServerWorld worldServer, Vec3d lastPortalVec, Direction teleportDirection) {
+ this.world = worldServer;
+ this.random = new Random(worldServer.getSeed());
+ this.lastPortalVec = lastPortalVec;
+ this.teleportDirection = teleportDirection;
+ }
+
+ @Nullable
+ public BlockPattern.PortalInfo placeInExistingPortal(BlockPos p_222272_1_, Vec3d p_222272_2_, Direction directionIn, double p_222272_4_,
+ double p_222272_6_, boolean p_222272_8_) {
+ PointOfInterestManager pointofinterestmanager = this.world.getPointOfInterestManager();
+ pointofinterestmanager.ensureLoadedAndValid(this.world, p_222272_1_, 128);
+ List list = pointofinterestmanager.getInSquare((p_226705_0_) -> {
+ return p_226705_0_ == poi;
+ }, p_222272_1_, 128, PointOfInterestManager.Status.ANY).collect(Collectors.toList());
+ Optional optional = list.stream().min(Comparator.comparingDouble((p_226706_1_) -> {
+ return p_226706_1_.getPos().distanceSq(p_222272_1_);
+ }).thenComparingInt((p_226704_0_) -> {
+ return p_226704_0_.getPos().getY();
+ }));
+ return optional.map((p_226707_7_) -> {
+ BlockPos blockpos = p_226707_7_.getPos();
+ this.world.getChunkProvider().registerTicket(CUSTOM_PORTAL, new ChunkPos(blockpos), 3, blockpos);
+ BlockPattern.PatternHelper blockpattern$patternhelper = BederDimension.CustomPortalBlock.createPatternHelper(this.world, blockpos);
+ return blockpattern$patternhelper.getPortalInfo(directionIn, blockpos, p_222272_6_, p_222272_2_, p_222272_4_);
+ }).orElse((BlockPattern.PortalInfo) null);
+ }
+
+ public boolean placeInPortal(Entity p_222268_1_, float p_222268_2_) {
+ Vec3d vec3d = lastPortalVec;
+ Direction direction = teleportDirection;
+ BlockPattern.PortalInfo blockpattern$portalinfo = this.placeInExistingPortal(new BlockPos(p_222268_1_), p_222268_1_.getMotion(),
+ direction, vec3d.x, vec3d.y, p_222268_1_ instanceof PlayerEntity);
+ if (blockpattern$portalinfo == null) {
+ return false;
+ } else {
+ Vec3d vec3d1 = blockpattern$portalinfo.pos;
+ Vec3d vec3d2 = blockpattern$portalinfo.motion;
+ p_222268_1_.setMotion(vec3d2);
+ p_222268_1_.rotationYaw = p_222268_2_ + (float) blockpattern$portalinfo.rotation;
+ p_222268_1_.moveForced(vec3d1.x, vec3d1.y, vec3d1.z);
+ return true;
+ }
+ }
+
+ public boolean makePortal(Entity entityIn) {
+ int i = 16;
+ double d0 = -1.0D;
+ int j = MathHelper.floor(entityIn.getPosX());
+ int k = MathHelper.floor(entityIn.getPosY());
+ int l = MathHelper.floor(entityIn.getPosZ());
+ int i1 = j;
+ int j1 = k;
+ int k1 = l;
+ int l1 = 0;
+ int i2 = this.random.nextInt(4);
+ BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable();
+ for (int j2 = j - 16; j2 <= j + 16; ++j2) {
+ double d1 = (double) j2 + 0.5D - entityIn.getPosX();
+ for (int l2 = l - 16; l2 <= l + 16; ++l2) {
+ double d2 = (double) l2 + 0.5D - entityIn.getPosZ();
+ label276 : for (int j3 = this.world.getActualHeight() - 1; j3 >= 0; --j3) {
+ if (this.world.isAirBlock(blockpos$mutable.setPos(j2, j3, l2))) {
+ while (j3 > 0 && this.world.isAirBlock(blockpos$mutable.setPos(j2, j3 - 1, l2))) {
+ --j3;
+ }
+ for (int k3 = i2; k3 < i2 + 4; ++k3) {
+ int l3 = k3 % 2;
+ int i4 = 1 - l3;
+ if (k3 % 4 >= 2) {
+ l3 = -l3;
+ i4 = -i4;
+ }
+ for (int j4 = 0; j4 < 3; ++j4) {
+ for (int k4 = 0; k4 < 4; ++k4) {
+ for (int l4 = -1; l4 < 4; ++l4) {
+ int i5 = j2 + (k4 - 1) * l3 + j4 * i4;
+ int j5 = j3 + l4;
+ int k5 = l2 + (k4 - 1) * i4 - j4 * l3;
+ blockpos$mutable.setPos(i5, j5, k5);
+ if (l4 < 0 && !this.world.getBlockState(blockpos$mutable).getMaterial().isSolid()
+ || l4 >= 0 && !this.world.isAirBlock(blockpos$mutable)) {
+ continue label276;
+ }
+ }
+ }
+ }
+ double d5 = (double) j3 + 0.5D - entityIn.getPosY();
+ double d7 = d1 * d1 + d5 * d5 + d2 * d2;
+ if (d0 < 0.0D || d7 < d0) {
+ d0 = d7;
+ i1 = j2;
+ j1 = j3;
+ k1 = l2;
+ l1 = k3 % 4;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (d0 < 0.0D) {
+ for (int l5 = j - 16; l5 <= j + 16; ++l5) {
+ double d3 = (double) l5 + 0.5D - entityIn.getPosX();
+ for (int j6 = l - 16; j6 <= l + 16; ++j6) {
+ double d4 = (double) j6 + 0.5D - entityIn.getPosZ();
+ label214 : for (int i7 = this.world.getActualHeight() - 1; i7 >= 0; --i7) {
+ if (this.world.isAirBlock(blockpos$mutable.setPos(l5, i7, j6))) {
+ while (i7 > 0 && this.world.isAirBlock(blockpos$mutable.setPos(l5, i7 - 1, j6))) {
+ --i7;
+ }
+ for (int l7 = i2; l7 < i2 + 2; ++l7) {
+ int l8 = l7 % 2;
+ int k9 = 1 - l8;
+ for (int i10 = 0; i10 < 4; ++i10) {
+ for (int k10 = -1; k10 < 4; ++k10) {
+ int i11 = l5 + (i10 - 1) * l8;
+ int j11 = i7 + k10;
+ int k11 = j6 + (i10 - 1) * k9;
+ blockpos$mutable.setPos(i11, j11, k11);
+ if (k10 < 0 && !this.world.getBlockState(blockpos$mutable).getMaterial().isSolid()
+ || k10 >= 0 && !this.world.isAirBlock(blockpos$mutable)) {
+ continue label214;
+ }
+ }
+ }
+ double d6 = (double) i7 + 0.5D - entityIn.getPosY();
+ double d8 = d3 * d3 + d6 * d6 + d4 * d4;
+ if (d0 < 0.0D || d8 < d0) {
+ d0 = d8;
+ i1 = l5;
+ j1 = i7;
+ k1 = j6;
+ l1 = l7 % 2;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ int i6 = i1;
+ int k2 = j1;
+ int k6 = k1;
+ int l6 = l1 % 2;
+ int i3 = 1 - l6;
+ if (l1 % 4 >= 2) {
+ l6 = -l6;
+ i3 = -i3;
+ }
+ if (d0 < 0.0D) {
+ j1 = MathHelper.clamp(j1, 70, this.world.getActualHeight() - 10);
+ k2 = j1;
+ for (int j7 = -1; j7 <= 1; ++j7) {
+ for (int i8 = 1; i8 < 3; ++i8) {
+ for (int i9 = -1; i9 < 3; ++i9) {
+ int l9 = i6 + (i8 - 1) * l6 + j7 * i3;
+ int j10 = k2 + i9;
+ int l10 = k6 + (i8 - 1) * i3 - j7 * l6;
+ boolean flag = i9 < 0;
+ blockpos$mutable.setPos(l9, j10, l10);
+ this.world.setBlockState(blockpos$mutable,
+ flag ? BedrockBlockBlock.block.getDefaultState().getBlock().getDefaultState() : Blocks.AIR.getDefaultState());
+ }
+ }
+ }
+ }
+ for (int k7 = -1; k7 < 3; ++k7) {
+ for (int j8 = -1; j8 < 4; ++j8) {
+ if (k7 == -1 || k7 == 2 || j8 == -1 || j8 == 3) {
+ blockpos$mutable.setPos(i6 + k7 * l6, k2 + j8, k6 + k7 * i3);
+ this.world.setBlockState(blockpos$mutable, BedrockBlockBlock.block.getDefaultState().getBlock().getDefaultState(), 3);
+ }
+ }
+ }
+ BlockState blockstate = portal.getDefaultState().with(NetherPortalBlock.AXIS, l6 == 0 ? Direction.Axis.Z : Direction.Axis.X);
+ for (int k8 = 0; k8 < 2; ++k8) {
+ for (int j9 = 0; j9 < 3; ++j9) {
+ blockpos$mutable.setPos(i6 + k8 * l6, k2 + j9, k6 + k8 * i3);
+ this.world.setBlockState(blockpos$mutable, blockstate, 18);
+ this.world.getPointOfInterestManager().add(blockpos$mutable, poi);
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public Entity placeEntity(Entity entity, ServerWorld serverworld, ServerWorld serverworld1, float yaw,
+ Function repositionEntity) {
+ double d0 = entity.getPosX();
+ double d1 = entity.getPosY();
+ double d2 = entity.getPosZ();
+ if (entity instanceof ServerPlayerEntity) {
+ entity.setLocationAndAngles(d0, d1, d2, yaw, entity.rotationPitch);
+ if (!this.placeInPortal(entity, yaw)) {
+ this.makePortal(entity);
+ this.placeInPortal(entity, yaw);
+ }
+ entity.setWorld(serverworld1);
+ serverworld1.addDuringPortalTeleport((ServerPlayerEntity) entity);
+ ((ServerPlayerEntity) entity).connection.setPlayerLocation(entity.getPosX(), entity.getPosY(), entity.getPosZ(), yaw,
+ entity.rotationPitch);
+ return entity;
+ } else {
+ Vec3d vec3d = entity.getMotion();
+ BlockPos blockpos = new BlockPos(d0, d1, d2);
+ BlockPattern.PortalInfo blockpattern$portalinfo = this.placeInExistingPortal(blockpos, vec3d, teleportDirection, lastPortalVec.x,
+ lastPortalVec.y, entity instanceof PlayerEntity);
+ if (blockpattern$portalinfo == null)
+ return null;
+ blockpos = new BlockPos(blockpattern$portalinfo.pos);
+ vec3d = blockpattern$portalinfo.motion;
+ float f = (float) blockpattern$portalinfo.rotation;
+ Entity entityNew = entity.getType().create(serverworld1);
+ if (entityNew != null) {
+ entityNew.copyDataFromOld(entity);
+ entityNew.moveToBlockPosAndAngles(blockpos, entityNew.rotationYaw + f, entityNew.rotationPitch);
+ entityNew.setMotion(vec3d);
+ serverworld1.addFromAnotherDimension(entityNew);
+ }
+ return entityNew;
+ }
+ }
+ }
+
+ public static class CustomModDimension extends ModDimension {
+ @Override
+ public BiFunction getFactory() {
+ return CustomDimension::new;
+ }
+ }
+
+ public static class CustomDimension extends Dimension {
+ private BiomeProviderCustom biomeProviderCustom = null;
+ public CustomDimension(World world, DimensionType type) {
+ super(world, type, 0.5f);
+ this.nether = true;
+ }
+
+ @Override
+ public void calculateInitialWeather() {
+ }
+
+ @Override
+ public void updateWeather(Runnable defaultWeather) {
+ }
+
+ @Override
+ public boolean canDoLightning(Chunk chunk) {
+ return false;
+ }
+
+ @Override
+ public boolean canDoRainSnowIce(Chunk chunk) {
+ return false;
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public Vec3d getFogColor(float cangle, float ticks) {
+ return new Vec3d(0.227450980392, 0.227450980392, 0.227450980392);
+ }
+
+ @Override
+ public ChunkGenerator> createChunkGenerator() {
+ if (this.biomeProviderCustom == null) {
+ this.biomeProviderCustom = new BiomeProviderCustom(this.world);
+ }
+ return new ChunkProviderModded(this.world, this.biomeProviderCustom);
+ }
+
+ @Override
+ public boolean isSurfaceWorld() {
+ return false;
+ }
+
+ @Override
+ public boolean canRespawnHere() {
+ return false;
+ }
+
+ @OnlyIn(Dist.CLIENT)
+ @Override
+ public boolean doesXZShowFog(int x, int z) {
+ return true;
+ }
+
+ @Override
+ public SleepResult canSleepAt(PlayerEntity player, BlockPos pos) {
+ return SleepResult.BED_EXPLODES;
+ }
+
+ @Nullable
+ public BlockPos findSpawn(ChunkPos chunkPos, boolean checkValid) {
+ return null;
+ }
+
+ @Nullable
+ public BlockPos findSpawn(int x, int z, boolean checkValid) {
+ return null;
+ }
+
+ @Override
+ public boolean doesWaterVaporize() {
+ return false;
+ }
+
+ @Override /**
+ * Calculates the angle of sun and moon in the sky relative to a specified time
+ * (usually worldTime)
+ */
+ public float calculateCelestialAngle(long worldTime, float partialTicks) {
+ double d0 = MathHelper.frac((double) worldTime / 24000.0D - 0.25D);
+ double d1 = 0.5D - Math.cos(d0 * Math.PI) / 2.0D;
+ return (float) (d0 * 2.0D + d1) / 3.0F;
+ }
+ }
+
+ public static class ChunkProviderModded extends NetherChunkGenerator {
+ public ChunkProviderModded(World world, BiomeProvider provider) {
+ super(world, provider, new NetherGenSettings() {
+ public BlockState getDefaultBlock() {
+ return BedstoneBlock.block.getDefaultState();
+ }
+
+ public BlockState getDefaultFluid() {
+ return LiquidBedrockBlock.block.getDefaultState();
+ }
+ });
+ this.randomSeed.skip(9716);
+ }
+
+ @Override
+ public List getPossibleCreatures(EntityClassification creatureType, BlockPos pos) {
+ return this.world.getBiome(pos).getSpawns(creatureType);
+ }
+ }
+
+ public static class BiomeLayerCustom implements IC0Transformer {
+ @Override
+ public int apply(INoiseRandom context, int value) {
+ return Registry.BIOME.getId(dimensionBiomes[context.random(dimensionBiomes.length)]);
+ }
+ }
+
+ public static class BiomeProviderCustom extends BiomeProvider {
+ private Layer genBiomes;
+ public BiomeProviderCustom(World world) {
+ super(new HashSet(Arrays.asList(dimensionBiomes)));
+ this.genBiomes = getBiomeLayer(world.getSeed());
+ }
+
+ public Biome getNoiseBiome(int x, int y, int z) {
+ return this.genBiomes.func_215738_a(x, z);
+ }
+
+ private Layer getBiomeLayer(long seed) {
+ LongFunction> contextFactory = l -> new LazyAreaLayerContext(25, seed, l);
+ IAreaFactory parentLayer = IslandLayer.INSTANCE.apply(contextFactory.apply(1));
+ IAreaFactory biomeLayer = (new BiomeLayerCustom()).apply(contextFactory.apply(200), parentLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1000), biomeLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1001), biomeLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1002), biomeLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1003), biomeLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1004), biomeLayer);
+ biomeLayer = ZoomLayer.NORMAL.apply(contextFactory.apply(1005), biomeLayer);
+ return new Layer(biomeLayer);
+ }
+ }
+}
diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml
new file mode 100644
index 0000000..7cde2c7
--- /dev/null
+++ b/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,23 @@
+modLoader="javafml"
+loaderVersion="[31,)"
+
+[[mods]]
+modId="darkdays"
+version="1.0.0"
+displayName="Darkdays"
+credits="Created using mod maker MCreator - https://mcreator.net/about"
+displayURL="https://bitbucket.org/Rickroller01/darkdays1.0.0/src"
+updateJSONURL="https://bitbucket.org/Rickroller01/darkdays1.0.0/src"
+logoFile="logo.png"
+authors="Rickroller01"
+
+[[dependencies.darkdays]]
+ modId="minecraft"
+ mandatory=true
+ versionRange="[1.15.2]"
+ ordering="NONE"
+ side="BOTH"
+
+
+
+
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_fence.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_fence.json
new file mode 100644
index 0000000..9fdafea
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_fence.json
@@ -0,0 +1,48 @@
+{
+ "multipart": [
+ {
+ "apply": {
+ "model": "darkdays:block/bed_wood_fence_post"
+ }
+ },
+ {
+ "when": {
+ "north": "true"
+ },
+ "apply": {
+ "model": "darkdays:block/bed_wood_fence",
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "south": "true"
+ },
+ "apply": {
+ "model": "darkdays:block/bed_wood_fence",
+ "y": 180,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "west": "true"
+ },
+ "apply": {
+ "model": "darkdays:block/bed_wood_fence",
+ "y": 270,
+ "uvlock": true
+ }
+ },
+ {
+ "when": {
+ "east": "true"
+ },
+ "apply": {
+ "model": "darkdays:block/bed_wood_fence",
+ "y": 90,
+ "uvlock": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_fence_gate.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_fence_gate.json
new file mode 100644
index 0000000..42d81f7
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_fence_gate.json
@@ -0,0 +1,80 @@
+{
+ "variants": {
+ "facing=south,in_wall=false,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate",
+ "uvlock": true,
+ "y": 90
+ },
+ "facing=north,in_wall=false,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate",
+ "uvlock": true,
+ "y": 180
+ },
+ "facing=east,in_wall=false,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate",
+ "uvlock": true,
+ "y": 270
+ },
+ "facing=south,in_wall=false,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=false,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_open",
+ "uvlock": true,
+ "y": 90
+ },
+ "facing=north,in_wall=false,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_open",
+ "uvlock": true,
+ "y": 180
+ },
+ "facing=east,in_wall=false,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_open",
+ "uvlock": true,
+ "y": 270
+ },
+ "facing=south,in_wall=true,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall",
+ "uvlock": true,
+ "y": 90
+ },
+ "facing=north,in_wall=true,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall",
+ "uvlock": true,
+ "y": 180
+ },
+ "facing=east,in_wall=true,open=false": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall",
+ "uvlock": true,
+ "y": 270
+ },
+ "facing=south,in_wall=true,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall_open",
+ "uvlock": true
+ },
+ "facing=west,in_wall=true,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall_open",
+ "uvlock": true,
+ "y": 90
+ },
+ "facing=north,in_wall=true,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall_open",
+ "uvlock": true,
+ "y": 180
+ },
+ "facing=east,in_wall=true,open=true": {
+ "model": "darkdays:block/bed_wood_fence_gate_wall_open",
+ "uvlock": true,
+ "y": 270
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_leaves.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_leaves.json
new file mode 100644
index 0000000..2bef176
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_leaves.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bed_wood_leaves"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_log.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_log.json
new file mode 100644
index 0000000..3c8061f
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_log.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bed_wood_log"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_planks.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_planks.json
new file mode 100644
index 0000000..69b2483
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_planks.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bed_wood_planks"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_slab.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_slab.json
new file mode 100644
index 0000000..9bdce41
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_slab.json
@@ -0,0 +1,13 @@
+{
+ "variants": {
+ "type=bottom": {
+ "model": "darkdays:block/bed_wood_slab"
+ },
+ "type=top": {
+ "model": "darkdays:block/bed_wood_slab_top"
+ },
+ "type=double": {
+ "model": "darkdays:block/bed_wood_slab_full"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_stairs.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_stairs.json
new file mode 100644
index 0000000..c8e0328
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_stairs.json
@@ -0,0 +1,209 @@
+{
+ "variants": {
+ "facing=east,half=bottom,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs"
+ },
+ "facing=west,half=bottom,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner"
+ },
+ "facing=west,half=bottom,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner"
+ },
+ "facing=north,half=bottom,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=straight": {
+ "model": "darkdays:block/bed_wood_stairs",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=inner_right": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=east,half=top,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "uvlock": true
+ },
+ "facing=west,half=top,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=top,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=top,shape=inner_left": {
+ "model": "darkdays:block/bed_wood_stairs_inner",
+ "x": 180,
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer"
+ },
+ "facing=west,half=bottom,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=north,half=bottom,shape=outer_right": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=east,half=bottom,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 270,
+ "uvlock": true
+ },
+ "facing=west,half=bottom,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 90,
+ "uvlock": true
+ },
+ "facing=south,half=bottom,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer"
+ },
+ "facing=north,half=bottom,shape=outer_left": {
+ "model": "darkdays:block/bed_wood_stairs_outer",
+ "y": 180,
+ "uvlock": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bed_wood_wood.json b/src/main/resources/assets/darkdays/blockstates/bed_wood_wood.json
new file mode 100644
index 0000000..9ef8476
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bed_wood_wood.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bed_wood_wood"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/beder_portal.json b/src/main/resources/assets/darkdays/blockstates/beder_portal.json
new file mode 100644
index 0000000..0364680
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/beder_portal.json
@@ -0,0 +1,10 @@
+{
+ "variants": {
+ "axis=z": {
+ "model": "darkdays:block/beder_portal_ew"
+ },
+ "axis=x": {
+ "model": "darkdays:block/beder_portal_ns"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bedrock_block.json b/src/main/resources/assets/darkdays/blockstates/bedrock_block.json
new file mode 100644
index 0000000..82d9309
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bedrock_block.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bedrock_block"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bedrock_ore.json b/src/main/resources/assets/darkdays/blockstates/bedrock_ore.json
new file mode 100644
index 0000000..aff1aeb
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bedrock_ore.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bedrock_ore"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bedsoil.json b/src/main/resources/assets/darkdays/blockstates/bedsoil.json
new file mode 100644
index 0000000..6b3f16e
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bedsoil.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bedsoil"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/bedstone.json b/src/main/resources/assets/darkdays/blockstates/bedstone.json
new file mode 100644
index 0000000..4e93cf0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/bedstone.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/bedstone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/dark_apple_fruit.json b/src/main/resources/assets/darkdays/blockstates/dark_apple_fruit.json
new file mode 100644
index 0000000..5d3452c
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/dark_apple_fruit.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/dark_apple_fruit"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/steel_block.json b/src/main/resources/assets/darkdays/blockstates/steel_block.json
new file mode 100644
index 0000000..63697e9
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/steel_block.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/steel_block"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/blockstates/steel_ore.json b/src/main/resources/assets/darkdays/blockstates/steel_ore.json
new file mode 100644
index 0000000..de6a919
--- /dev/null
+++ b/src/main/resources/assets/darkdays/blockstates/steel_ore.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "darkdays:block/steel_ore"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/lang/en_us.json b/src/main/resources/assets/darkdays/lang/en_us.json
new file mode 100644
index 0000000..e26b697
--- /dev/null
+++ b/src/main/resources/assets/darkdays/lang/en_us.json
@@ -0,0 +1,98 @@
+{
+ "item.momileren.steel_armor_boots": "Steel Boots",
+ "block.darkdays.dark_apple_fruit": "Dark Apple Fruit",
+ "item.darkdays.smoke_bomb": "Smoke Bomb",
+ "block.darkdays.bed_wood_planks": "Bed_Wood Planks",
+ "block.momileren.bedsoil": "Bedsoil",
+ "block.darkdays.bedrock_ore": "Bedrock Ore",
+ "block.momileren.steel_block": "Block of Steel",
+ "block.darkdays.bed_wood_fence": "Bed_Wood Fence",
+ "block.momileren.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "item.darkdays.ggbullet": "Ggbullet",
+ "item.darkdays.bedrock_pickaxe": "Bedrock Pickaxe",
+ "item.darkdays.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.steel_ingot": "Steel",
+ "item.momileren.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.dark_apple": "Dark Apple",
+ "item.momileren.bedrock_shovel": "Bedrock Shovel",
+ "item.momileren.bedrock_dust": "Bedrock",
+ "item.momileren.steel_sword": "Steel Sword",
+ "item.darkdays.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.steel_axe": "Steel Axe",
+ "item.momileren.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.darkdays.g_gwand": "GGwand",
+ "item.momileren.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.steel_shovel": "Steel Shovel",
+ "block.darkdays.bedrock_block": "Block of Bedrock",
+ "block.momileren.bed_wood_leaves": "Bed_Wood Leaves",
+ "item.darkdays.bedrock_axe": "Bedrock Axe",
+ "item.momileren.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.darkdays.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.darkdays.steel_axe": "Steel Axe",
+ "item.darkdays.steel_armor_helmet": "Steel Helmet",
+ "block.momileren.bed_wood_fence": "Bed_Wood Fence",
+ "item.darkdays.dark_apple": "Dark Apple",
+ "item.momileren.steel_armor_chestplate": "Steel Chestplate",
+ "item.darkdays.bedrock_hoe": "Bedrock Hoe",
+ "item.darkdays.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.bedrock_armor_helmet": "Bedrock Helmet",
+ "block.darkdays.bed_wood_stairs": "Bed_Wood Stairs",
+ "subtitles.ggwandsound": "",
+ "item.darkdays.uzi": "Uzi",
+ "block.momileren.bed_wood_planks": "Bed_Wood Planks",
+ "block.darkdays.bed_wood_slab": "Bed_Wood Slab",
+ "item.darkdays.steel_sword": "Steel Sword",
+ "item.momileren.ammo": "Ammo",
+ "block.momileren.bed_wood_wood": "Bed Wood",
+ "item.darkdays.bedrock_armor_helmet": "Bedrock Helmet",
+ "biome.darkdays.bedrock_biome": "Bedrock Biome",
+ "item.darkdays.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.momileren.steel_hoe": "Steel Hoe",
+ "item.momileren.steel_armor_leggings": "Steel Leggings",
+ "item.momileren.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.bedrock_dust": "Bedrock",
+ "item.momileren.bedrock_hoe": "Bedrock Hoe",
+ "item.momileren.beder": "Beder Stone",
+ "block.darkdays.bed_wood_leaves": "Bed_Wood Leaves",
+ "biome.darkdays.darklands": "Darklands",
+ "block.darkdays.steel_ore": "Steel Ore",
+ "item.darkdays.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.steel_shovel": "Steel Shovel",
+ "item.momileren.steel_armor_helmet": "Steel Helmet",
+ "enchantment.momileren.smelting_touch": "Smelting Touch",
+ "item.darkdays.steel_hoe": "Steel Hoe",
+ "item.darkdays.steel_armor_leggings": "Steel Leggings",
+ "block.darkdays.bedsoil": "Bedsoil",
+ "item.momileren.bedrock_pickaxe": "Bedrock Pickaxe",
+ "block.darkdays.bedstone": "Bedstone",
+ "item.darkdays.steel_armor_boots": "Steel Boots",
+ "block.momileren.steel_ore": "Steel Ore",
+ "item.momileren.smoke_bomb": "Smoke Bomb",
+ "item.momileren.bedrock_axe": "Bedrock Axe",
+ "item.darkdays.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.bedrock_shovel": "Bedrock Shovel",
+ "item.darkdays.ammo": "Ammo",
+ "block.darkdays.bed_wood_log": "Bed_Wood Log",
+ "biome.momileren.darklands": "Darklands",
+ "block.darkdays.steel_block": "Block of Steel",
+ "block.momileren.bedrock_ore": "Bedrock Ore",
+ "block.momileren.bed_wood_log": "Bed_Wood Log",
+ "item.darkdays.beder": "Beder Stone",
+ "block.momileren.bedstone": "Bedstone",
+ "item.momileren.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.momileren.steel_ingot": "Steel",
+ "item.momileren.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.g_gwand": "GGwand",
+ "biome.momileren.bedrock_biome": "Bedrock Biome",
+ "block.momileren.bed_wood_stairs": "Bed_Wood Stairs",
+ "enchantment.darkdays.smelting_touch": "Smelting Touch",
+ "block.momileren.bedrock_block": "Block of Bedrock",
+ "block.darkdays.bed_wood_wood": "Bed Wood",
+ "item.momileren.uzi": "Uzi",
+ "item.darkdays.steel_armor_chestplate": "Steel Chestplate",
+ "block.darkdays.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "block.momileren.dark_apple_fruit": "Dark Apple Fruit",
+ "item.momileren.ggbullet": "Ggbullet",
+ "block.momileren.bed_wood_slab": "Bed_Wood Slab",
+ "fluid.liquid_bedrock": "LiquidBedrock"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/lang/tr_tr.json b/src/main/resources/assets/darkdays/lang/tr_tr.json
new file mode 100644
index 0000000..af7b298
--- /dev/null
+++ b/src/main/resources/assets/darkdays/lang/tr_tr.json
@@ -0,0 +1,98 @@
+{
+ "item.momileren.steel_armor_boots": "Steel Boots",
+ "block.darkdays.dark_apple_fruit": "Dark Apple Fruit",
+ "item.darkdays.smoke_bomb": "Smoke Bomb",
+ "block.darkdays.bed_wood_planks": "Bed_Wood Planks",
+ "block.momileren.bedsoil": "Bedsoil",
+ "block.darkdays.bedrock_ore": "Bedrock Ore",
+ "block.momileren.steel_block": "Block of Steel",
+ "block.darkdays.bed_wood_fence": "Bed_Wood Fence",
+ "block.momileren.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "item.darkdays.ggbullet": "Ggbullet",
+ "item.darkdays.bedrock_pickaxe": "Bedrock Pickaxe",
+ "item.darkdays.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.steel_ingot": "Steel",
+ "item.momileren.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.dark_apple": "Dark Apple",
+ "item.momileren.bedrock_shovel": "Bedrock Shovel",
+ "item.momileren.bedrock_dust": "Bedrock",
+ "item.momileren.steel_sword": "Steel Sword",
+ "item.darkdays.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.liquid_bedrock_bucket": "LiquidBedrock Bucket",
+ "item.momileren.steel_axe": "Steel Axe",
+ "item.darkdays.g_gwand": "GGwand",
+ "item.momileren.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.steel_shovel": "Steel Shovel",
+ "block.darkdays.bedrock_block": "Block of Bedrock",
+ "block.momileren.bed_wood_leaves": "Bed_Wood Leaves",
+ "item.darkdays.bedrock_axe": "Bedrock Axe",
+ "item.momileren.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.darkdays.steel_axe": "Steel Axe",
+ "item.darkdays.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.darkdays.steel_armor_helmet": "Steel Helmet",
+ "block.momileren.bed_wood_fence": "Bed_Wood Fence",
+ "item.darkdays.dark_apple": "Dark Apple",
+ "item.momileren.steel_armor_chestplate": "Steel Chestplate",
+ "item.darkdays.bedrock_hoe": "Bedrock Hoe",
+ "item.darkdays.gas_bomb_txtr": "Gas Bomb Txtr",
+ "item.momileren.bedrock_armor_helmet": "Bedrock Helmet",
+ "block.darkdays.bed_wood_stairs": "Bed_Wood Stairs",
+ "subtitles.ggwandsound": "",
+ "block.darkdays.bed_wood_slab": "Bed_Wood Slab",
+ "block.momileren.bed_wood_planks": "Bed_Wood Planks",
+ "item.darkdays.uzi": "Uzi",
+ "item.darkdays.steel_sword": "Steel Sword",
+ "item.momileren.ammo": "Ammo",
+ "block.momileren.bed_wood_wood": "Bed Wood",
+ "item.darkdays.bedrock_armor_helmet": "Bedrock Helmet",
+ "biome.darkdays.bedrock_biome": "Bedrock Biome",
+ "item.darkdays.bedrock_armor_chestplate": "Bedrock Chestplate",
+ "item.momileren.steel_hoe": "Steel Hoe",
+ "item.momileren.steel_armor_leggings": "Steel Leggings",
+ "item.momileren.bedrock_armor_boots": "Bedrock Boots",
+ "item.darkdays.bedrock_dust": "Bedrock",
+ "item.momileren.bedrock_hoe": "Bedrock Hoe",
+ "item.momileren.beder": "Beder Stone",
+ "block.darkdays.bed_wood_leaves": "Bed_Wood Leaves",
+ "biome.darkdays.darklands": "Darklands",
+ "block.darkdays.steel_ore": "Steel Ore",
+ "item.darkdays.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.steel_shovel": "Steel Shovel",
+ "item.momileren.steel_armor_helmet": "Steel Helmet",
+ "enchantment.momileren.smelting_touch": "Smelting Touch",
+ "item.darkdays.steel_hoe": "Steel Hoe",
+ "item.darkdays.steel_armor_leggings": "Steel Leggings",
+ "block.darkdays.bedsoil": "Bedsoil",
+ "item.momileren.bedrock_pickaxe": "Bedrock Pickaxe",
+ "block.darkdays.bedstone": "Bedstone",
+ "item.darkdays.steel_armor_boots": "Steel Boots",
+ "block.momileren.steel_ore": "Steel Ore",
+ "item.momileren.smoke_bomb": "Smoke Bomb",
+ "item.momileren.bedrock_axe": "Bedrock Axe",
+ "item.darkdays.bedrock_sword": "Bedrock Sword",
+ "item.darkdays.bedrock_shovel": "Bedrock Shovel",
+ "item.darkdays.ammo": "Ammo",
+ "block.darkdays.bed_wood_log": "Bed_Wood Log",
+ "biome.momileren.darklands": "Darklands",
+ "block.darkdays.steel_block": "Block of Steel",
+ "block.momileren.bedrock_ore": "Bedrock Ore",
+ "block.momileren.bed_wood_log": "Bed_Wood Log",
+ "item.darkdays.beder": "Beder Stone",
+ "block.momileren.bedstone": "Bedstone",
+ "item.momileren.bedrock_armor_leggings": "Bedrock Leggings",
+ "item.momileren.steel_ingot": "Steel",
+ "item.momileren.steel_pickaxe": "Steel Pickaxe",
+ "item.momileren.g_gwand": "GGwand",
+ "biome.momileren.bedrock_biome": "Bedrock Biome",
+ "block.momileren.bed_wood_stairs": "Bed_Wood Stairs",
+ "enchantment.darkdays.smelting_touch": "Smelting Touch",
+ "block.momileren.bedrock_block": "Block of Bedrock",
+ "block.darkdays.bed_wood_wood": "Bed Wood",
+ "item.momileren.uzi": "Uzi",
+ "item.darkdays.steel_armor_chestplate": "Steel Chestplate",
+ "block.darkdays.bed_wood_fence_gate": "Bed_Wood Fence Gate",
+ "block.momileren.dark_apple_fruit": "Dark Apple Fruit",
+ "item.momileren.ggbullet": "Ggbullet",
+ "block.momileren.bed_wood_slab": "Bed_Wood Slab",
+ "fluid.liquid_bedrock": "LiquidBedrock"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence.json
new file mode 100644
index 0000000..c55da4e
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/fence_side",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks",
+ "particle": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate.json
new file mode 100644
index 0000000..eba7ef8
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/template_fence_gate",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_open.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_open.json
new file mode 100644
index 0000000..ec44d5d
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/template_fence_gate_open",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall.json
new file mode 100644
index 0000000..c60818c
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/template_fence_gate_wall",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall_open.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall_open.json
new file mode 100644
index 0000000..fd53f53
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_gate_wall_open.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/template_fence_gate_wall_open",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_inventory.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_inventory.json
new file mode 100644
index 0000000..1151eb0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_inventory.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/fence_inventory",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks",
+ "particle": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_fence_post.json b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_post.json
new file mode 100644
index 0000000..0731372
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_fence_post.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/fence_post",
+ "textures": {
+ "texture": "darkdays:blocks/bed_wood_planks",
+ "particle": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_leaves.json b/src/main/resources/assets/darkdays/models/block/bed_wood_leaves.json
new file mode 100644
index 0000000..7bf3e61
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_leaves.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/bed_wood_leaves",
+ "particle": "darkdays:blocks/bed_wood_leaves"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_log.json b/src/main/resources/assets/darkdays/models/block/bed_wood_log.json
new file mode 100644
index 0000000..02f2809
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_log.json
@@ -0,0 +1,12 @@
+{
+ "parent": "block/cube",
+ "textures": {
+ "down": "darkdays:blocks/bed_wood_log_top",
+ "up": "darkdays:blocks/bed_wood_log_top",
+ "north": "darkdays:blocks/bed_wood_log_side",
+ "east": "darkdays:blocks/bed_wood_log_side",
+ "south": "darkdays:blocks/bed_wood_log_side",
+ "west": "darkdays:blocks/bed_wood_log_side",
+ "particle": "darkdays:blocks/bed_wood_log_top"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_planks.json b/src/main/resources/assets/darkdays/models/block/bed_wood_planks.json
new file mode 100644
index 0000000..2cb38e7
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_planks.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/bed_wood_planks",
+ "particle": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_slab.json b/src/main/resources/assets/darkdays/models/block/bed_wood_slab.json
new file mode 100644
index 0000000..a0cb342
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_slab.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/slab",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_slab_full.json b/src/main/resources/assets/darkdays/models/block/bed_wood_slab_full.json
new file mode 100644
index 0000000..a37cb18
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_slab_full.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/cube_bottom_top",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_slab_top.json b/src/main/resources/assets/darkdays/models/block/bed_wood_slab_top.json
new file mode 100644
index 0000000..c0c32cd
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_slab_top.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/slab_top",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_stairs.json b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs.json
new file mode 100644
index 0000000..c8f92b0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/stairs",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_inner.json b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_inner.json
new file mode 100644
index 0000000..216c116
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_inner.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/inner_stairs",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_outer.json b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_outer.json
new file mode 100644
index 0000000..8311e57
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_stairs_outer.json
@@ -0,0 +1,8 @@
+{
+ "parent": "block/outer_stairs",
+ "textures": {
+ "bottom": "darkdays:blocks/bed_wood_planks",
+ "top": "darkdays:blocks/bed_wood_planks",
+ "side": "darkdays:blocks/bed_wood_planks"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bed_wood_wood.json b/src/main/resources/assets/darkdays/models/block/bed_wood_wood.json
new file mode 100644
index 0000000..8416836
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bed_wood_wood.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/bed_wood_log_side",
+ "particle": "darkdays:blocks/bed_wood_log_side"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/beder_portal_ew.json b/src/main/resources/assets/darkdays/models/block/beder_portal_ew.json
new file mode 100644
index 0000000..360ab8c
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/beder_portal_ew.json
@@ -0,0 +1,40 @@
+{
+ "textures": {
+ "particle": "darkdays:blocks/liquidbedrock",
+ "portal": "darkdays:blocks/liquidbedrock"
+ },
+ "elements": [
+ {
+ "from": [
+ 6,
+ 0,
+ 0
+ ],
+ "to": [
+ 10,
+ 16,
+ 16
+ ],
+ "faces": {
+ "east": {
+ "uv": [
+ 0,
+ 0,
+ 16,
+ 16
+ ],
+ "texture": "#portal"
+ },
+ "west": {
+ "uv": [
+ 0,
+ 0,
+ 16,
+ 16
+ ],
+ "texture": "#portal"
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/beder_portal_ns.json b/src/main/resources/assets/darkdays/models/block/beder_portal_ns.json
new file mode 100644
index 0000000..aa28254
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/beder_portal_ns.json
@@ -0,0 +1,40 @@
+{
+ "textures": {
+ "particle": "darkdays:blocks/liquidbedrock",
+ "portal": "darkdays:blocks/liquidbedrock"
+ },
+ "elements": [
+ {
+ "from": [
+ 0,
+ 0,
+ 6
+ ],
+ "to": [
+ 16,
+ 16,
+ 10
+ ],
+ "faces": {
+ "north": {
+ "uv": [
+ 0,
+ 0,
+ 16,
+ 16
+ ],
+ "texture": "#portal"
+ },
+ "south": {
+ "uv": [
+ 0,
+ 0,
+ 16,
+ 16
+ ],
+ "texture": "#portal"
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bedrock_block.json b/src/main/resources/assets/darkdays/models/block/bedrock_block.json
new file mode 100644
index 0000000..ede7ff1
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bedrock_block.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/bedrock_ore_block",
+ "particle": "darkdays:blocks/bedrock_ore_block"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bedrock_ore.json b/src/main/resources/assets/darkdays/models/block/bedrock_ore.json
new file mode 100644
index 0000000..0c5a3df
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bedrock_ore.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/bedrock_ore",
+ "particle": "darkdays:blocks/bedrock_ore"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bedsoil.json b/src/main/resources/assets/darkdays/models/block/bedsoil.json
new file mode 100644
index 0000000..da6fcd6
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bedsoil.json
@@ -0,0 +1,12 @@
+{
+ "parent": "block/cube",
+ "textures": {
+ "down": "darkdays:blocks/bedsoil",
+ "up": "darkdays:blocks/bedsoil",
+ "north": "darkdays:blocks/bedsoil",
+ "east": "darkdays:blocks/bedsoil",
+ "south": "darkdays:blocks/bedsoil",
+ "west": "darkdays:blocks/bedsoil",
+ "particle": "darkdays:blocks/bedsoil"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/bedstone.json b/src/main/resources/assets/darkdays/models/block/bedstone.json
new file mode 100644
index 0000000..4a32626
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/bedstone.json
@@ -0,0 +1,12 @@
+{
+ "parent": "block/cube",
+ "textures": {
+ "down": "darkdays:blocks/bedstone",
+ "up": "darkdays:blocks/bedstone",
+ "north": "darkdays:blocks/bedstone",
+ "east": "darkdays:blocks/bedstone",
+ "south": "darkdays:blocks/bedstone",
+ "west": "darkdays:blocks/bedstone",
+ "particle": "darkdays:blocks/bedstone"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/dark_apple_fruit.json b/src/main/resources/assets/darkdays/models/block/dark_apple_fruit.json
new file mode 100644
index 0000000..de49c14
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/dark_apple_fruit.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/crop",
+ "textures": {
+ "crop": "darkdays:blocks/darkapple",
+ "particle": "darkdays:blocks/darkapple"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/steel_block.json b/src/main/resources/assets/darkdays/models/block/steel_block.json
new file mode 100644
index 0000000..c5bc394
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/steel_block.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/steel_ore_block",
+ "particle": "darkdays:blocks/steel_ore_block"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/block/steel_ore.json b/src/main/resources/assets/darkdays/models/block/steel_ore.json
new file mode 100644
index 0000000..f6930ec
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/block/steel_ore.json
@@ -0,0 +1,7 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "darkdays:blocks/steel_ore",
+ "particle": "darkdays:blocks/steel_ore"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/ammo.json b/src/main/resources/assets/darkdays/models/item/ammo.json
new file mode 100644
index 0000000..b12c776
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/ammo.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/ammo"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_fence.json b/src/main/resources/assets/darkdays/models/item/bed_wood_fence.json
new file mode 100644
index 0000000..d4db323
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_fence.json
@@ -0,0 +1,3 @@
+{
+ "parent": "darkdays:block/bed_wood_fence_inventory"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_fence_gate.json b/src/main/resources/assets/darkdays/models/item/bed_wood_fence_gate.json
new file mode 100644
index 0000000..ebf9e00
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_fence_gate.json
@@ -0,0 +1,3 @@
+{
+ "parent": "darkdays:block/bed_wood_fence_gate"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_leaves.json b/src/main/resources/assets/darkdays/models/item/bed_wood_leaves.json
new file mode 100644
index 0000000..c209f12
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_leaves.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_leaves",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_log.json b/src/main/resources/assets/darkdays/models/item/bed_wood_log.json
new file mode 100644
index 0000000..46cda18
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_log.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_log",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_planks.json b/src/main/resources/assets/darkdays/models/item/bed_wood_planks.json
new file mode 100644
index 0000000..496fe6d
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_planks.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_planks",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_slab.json b/src/main/resources/assets/darkdays/models/item/bed_wood_slab.json
new file mode 100644
index 0000000..af17422
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_slab.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_slab",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_stairs.json b/src/main/resources/assets/darkdays/models/item/bed_wood_stairs.json
new file mode 100644
index 0000000..eff4de2
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_stairs.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_stairs",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bed_wood_wood.json b/src/main/resources/assets/darkdays/models/item/bed_wood_wood.json
new file mode 100644
index 0000000..4b0903e
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bed_wood_wood.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bed_wood_wood",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/beder.json b/src/main/resources/assets/darkdays/models/item/beder.json
new file mode 100644
index 0000000..7df11f4
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/beder.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/wandammo"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_armor_boots.json b/src/main/resources/assets/darkdays/models/item/bedrock_armor_boots.json
new file mode 100644
index 0000000..133f606
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_armor_boots.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_boots"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_armor_chestplate.json b/src/main/resources/assets/darkdays/models/item/bedrock_armor_chestplate.json
new file mode 100644
index 0000000..6e266ec
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_armor_chestplate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_body"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_armor_helmet.json b/src/main/resources/assets/darkdays/models/item/bedrock_armor_helmet.json
new file mode 100644
index 0000000..9007af0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_armor_helmet.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_head"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_armor_leggings.json b/src/main/resources/assets/darkdays/models/item/bedrock_armor_leggings.json
new file mode 100644
index 0000000..0b25ad9
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_armor_leggings.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_leggings"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_axe.json b/src/main/resources/assets/darkdays/models/item/bedrock_axe.json
new file mode 100644
index 0000000..3903b61
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_axe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_axe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_block.json b/src/main/resources/assets/darkdays/models/item/bedrock_block.json
new file mode 100644
index 0000000..bf98bef
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_block.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bedrock_block",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_dust.json b/src/main/resources/assets/darkdays/models/item/bedrock_dust.json
new file mode 100644
index 0000000..c132614
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_dust.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_dust"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_hoe.json b/src/main/resources/assets/darkdays/models/item/bedrock_hoe.json
new file mode 100644
index 0000000..2b44732
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_hoe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_hoe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_ore.json b/src/main/resources/assets/darkdays/models/item/bedrock_ore.json
new file mode 100644
index 0000000..90e5956
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_ore.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bedrock_ore",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_pickaxe.json b/src/main/resources/assets/darkdays/models/item/bedrock_pickaxe.json
new file mode 100644
index 0000000..94cd4da
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_pickaxe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_pickaxe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_shovel.json b/src/main/resources/assets/darkdays/models/item/bedrock_shovel.json
new file mode 100644
index 0000000..09c38bf
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_shovel.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_shovel"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedrock_sword.json b/src/main/resources/assets/darkdays/models/item/bedrock_sword.json
new file mode 100644
index 0000000..e256221
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedrock_sword.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/bedrock_sword"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedsoil.json b/src/main/resources/assets/darkdays/models/item/bedsoil.json
new file mode 100644
index 0000000..74f1cd0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedsoil.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bedsoil",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/bedstone.json b/src/main/resources/assets/darkdays/models/item/bedstone.json
new file mode 100644
index 0000000..5d4a812
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/bedstone.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/bedstone",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/dark_apple.json b/src/main/resources/assets/darkdays/models/item/dark_apple.json
new file mode 100644
index 0000000..81beede
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/dark_apple.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/darkapple"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/dark_apple_fruit.json b/src/main/resources/assets/darkdays/models/item/dark_apple_fruit.json
new file mode 100644
index 0000000..e9f6ef1
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/dark_apple_fruit.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/darkapple"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/g_gwand.json b/src/main/resources/assets/darkdays/models/item/g_gwand.json
new file mode 100644
index 0000000..af05f78
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/g_gwand.json
@@ -0,0 +1,42 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/ggwandtexture"
+ },
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [
+ -80,
+ 260,
+ -40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [
+ -80,
+ -280,
+ 40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/gas_bomb_txtr.json b/src/main/resources/assets/darkdays/models/item/gas_bomb_txtr.json
new file mode 100644
index 0000000..40bb87e
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/gas_bomb_txtr.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/gasbombtxtr"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/ggbullet.json b/src/main/resources/assets/darkdays/models/item/ggbullet.json
new file mode 100644
index 0000000..7df11f4
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/ggbullet.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/wandammo"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/liquid_bedrock_bucket.json b/src/main/resources/assets/darkdays/models/item/liquid_bedrock_bucket.json
new file mode 100644
index 0000000..b7f7d18
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/liquid_bedrock_bucket.json
@@ -0,0 +1,5 @@
+{
+ "parent": "forge:item/bucket_drip",
+ "loader": "forge:bucket",
+ "fluid": "darkdays:liquid_bedrock"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/smoke_bomb.json b/src/main/resources/assets/darkdays/models/item/smoke_bomb.json
new file mode 100644
index 0000000..c3ec22f
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/smoke_bomb.json
@@ -0,0 +1,42 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/gasbombtxtr"
+ },
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [
+ -80,
+ 260,
+ -40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [
+ -80,
+ -280,
+ 40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_armor_boots.json b/src/main/resources/assets/darkdays/models/item/steel_armor_boots.json
new file mode 100644
index 0000000..e2dcd4b
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_armor_boots.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/steel_boots"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_armor_chestplate.json b/src/main/resources/assets/darkdays/models/item/steel_armor_chestplate.json
new file mode 100644
index 0000000..3e2c54f
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_armor_chestplate.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/steel_body"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_armor_helmet.json b/src/main/resources/assets/darkdays/models/item/steel_armor_helmet.json
new file mode 100644
index 0000000..e6e627e
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_armor_helmet.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/steel_head"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_armor_leggings.json b/src/main/resources/assets/darkdays/models/item/steel_armor_leggings.json
new file mode 100644
index 0000000..1c34779
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_armor_leggings.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/steel_leggings"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_axe.json b/src/main/resources/assets/darkdays/models/item/steel_axe.json
new file mode 100644
index 0000000..d232ae0
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_axe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/steel_axe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_block.json b/src/main/resources/assets/darkdays/models/item/steel_block.json
new file mode 100644
index 0000000..69df85d
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_block.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/steel_block",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_hoe.json b/src/main/resources/assets/darkdays/models/item/steel_hoe.json
new file mode 100644
index 0000000..8d2f6e3
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_hoe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/steel_hoe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_ingot.json b/src/main/resources/assets/darkdays/models/item/steel_ingot.json
new file mode 100644
index 0000000..8e80328
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_ingot.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/steel_ingot"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_ore.json b/src/main/resources/assets/darkdays/models/item/steel_ore.json
new file mode 100644
index 0000000..b669bff
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_ore.json
@@ -0,0 +1,22 @@
+{
+ "parent": "darkdays:block/steel_ore",
+ "display": {
+ "thirdperson": {
+ "rotation": [
+ 10,
+ -45,
+ 170
+ ],
+ "translation": [
+ 0,
+ 1.5,
+ -2.75
+ ],
+ "scale": [
+ 0.375,
+ 0.375,
+ 0.375
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_pickaxe.json b/src/main/resources/assets/darkdays/models/item/steel_pickaxe.json
new file mode 100644
index 0000000..ae1db13
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_pickaxe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/steel_pickaxe"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_shovel.json b/src/main/resources/assets/darkdays/models/item/steel_shovel.json
new file mode 100644
index 0000000..1350d65
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_shovel.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/steel_shovel"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/steel_sword.json b/src/main/resources/assets/darkdays/models/item/steel_sword.json
new file mode 100644
index 0000000..6ab38b9
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/steel_sword.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "darkdays:items/steel_sword"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/models/item/uzi.json b/src/main/resources/assets/darkdays/models/item/uzi.json
new file mode 100644
index 0000000..b523927
--- /dev/null
+++ b/src/main/resources/assets/darkdays/models/item/uzi.json
@@ -0,0 +1,42 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "darkdays:items/uzi"
+ },
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [
+ -80,
+ 260,
+ -40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [
+ -80,
+ -280,
+ 40
+ ],
+ "translation": [
+ -1,
+ -2,
+ 2.5
+ ],
+ "scale": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/sounds.json b/src/main/resources/assets/darkdays/sounds.json
new file mode 100644
index 0000000..9b66f4d
--- /dev/null
+++ b/src/main/resources/assets/darkdays/sounds.json
@@ -0,0 +1,11 @@
+{
+ "ggwandsound": {
+ "category": "master",
+ "sounds": [
+ {
+ "name": "darkdays:ggwandsound",
+ "stream": false
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/darkdays/sounds/ggwandsound.ogg b/src/main/resources/assets/darkdays/sounds/ggwandsound.ogg
new file mode 100644
index 0000000..6a7b2c0
Binary files /dev/null and b/src/main/resources/assets/darkdays/sounds/ggwandsound.ogg differ
diff --git a/src/main/resources/assets/darkdays/textures/ammo.png b/src/main/resources/assets/darkdays/textures/ammo.png
new file mode 100644
index 0000000..daac222
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/ammo.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bed_wood_leaves.png b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_leaves.png
new file mode 100644
index 0000000..079d369
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_leaves.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_side.png b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_side.png
new file mode 100644
index 0000000..44e72e2
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_side.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_top.png b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_top.png
new file mode 100644
index 0000000..16bf27d
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_log_top.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bed_wood_planks.png b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_planks.png
new file mode 100644
index 0000000..da6652e
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bed_wood_planks.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_leaves.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_leaves.png
new file mode 100644
index 0000000..4254d76
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_leaves.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_side.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_side.png
new file mode 100644
index 0000000..0fe3e75
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_side.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_top.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_top.png
new file mode 100644
index 0000000..affa9bc
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_log_top.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore.png
new file mode 100644
index 0000000..620354d
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore_block.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore_block.png
new file mode 100644
index 0000000..beee0a6
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_ore_block.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedrock_planks.png b/src/main/resources/assets/darkdays/textures/blocks/bedrock_planks.png
new file mode 100644
index 0000000..fdfb13a
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedrock_planks.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedsoil.png b/src/main/resources/assets/darkdays/textures/blocks/bedsoil.png
new file mode 100644
index 0000000..cdc2da0
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedsoil.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/bedstone.png b/src/main/resources/assets/darkdays/textures/blocks/bedstone.png
new file mode 100644
index 0000000..913d143
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/bedstone.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/darkapple.png b/src/main/resources/assets/darkdays/textures/blocks/darkapple.png
new file mode 100644
index 0000000..8d7b137
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/darkapple.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/liquidbedrock.png b/src/main/resources/assets/darkdays/textures/blocks/liquidbedrock.png
new file mode 100644
index 0000000..da236e5
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/liquidbedrock.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/steel_ore.png b/src/main/resources/assets/darkdays/textures/blocks/steel_ore.png
new file mode 100644
index 0000000..6f931a5
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/steel_ore.png differ
diff --git a/src/main/resources/assets/darkdays/textures/blocks/steel_ore_block.png b/src/main/resources/assets/darkdays/textures/blocks/steel_ore_block.png
new file mode 100644
index 0000000..3eef33f
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/blocks/steel_ore_block.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/ammo.png b/src/main/resources/assets/darkdays/textures/items/ammo.png
new file mode 100644
index 0000000..daac222
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/ammo.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_axe.png b/src/main/resources/assets/darkdays/textures/items/bedrock_axe.png
new file mode 100644
index 0000000..8201dea
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_axe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_body.png b/src/main/resources/assets/darkdays/textures/items/bedrock_body.png
new file mode 100644
index 0000000..fc436a7
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_body.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_boots.png b/src/main/resources/assets/darkdays/textures/items/bedrock_boots.png
new file mode 100644
index 0000000..1b21649
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_boots.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_dust.png b/src/main/resources/assets/darkdays/textures/items/bedrock_dust.png
new file mode 100644
index 0000000..57d65ff
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_dust.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_head.png b/src/main/resources/assets/darkdays/textures/items/bedrock_head.png
new file mode 100644
index 0000000..e785e07
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_head.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_hoe.png b/src/main/resources/assets/darkdays/textures/items/bedrock_hoe.png
new file mode 100644
index 0000000..6fad1ed
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_hoe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_leggings.png b/src/main/resources/assets/darkdays/textures/items/bedrock_leggings.png
new file mode 100644
index 0000000..2d7369d
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_leggings.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_pickaxe.png b/src/main/resources/assets/darkdays/textures/items/bedrock_pickaxe.png
new file mode 100644
index 0000000..78f0dea
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_pickaxe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_shovel.png b/src/main/resources/assets/darkdays/textures/items/bedrock_shovel.png
new file mode 100644
index 0000000..41f3213
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_shovel.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/bedrock_sword.png b/src/main/resources/assets/darkdays/textures/items/bedrock_sword.png
new file mode 100644
index 0000000..8bd69d6
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/bedrock_sword.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/darkapple.png b/src/main/resources/assets/darkdays/textures/items/darkapple.png
new file mode 100644
index 0000000..8d7b137
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/darkapple.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/gasbombtxtr.png b/src/main/resources/assets/darkdays/textures/items/gasbombtxtr.png
new file mode 100644
index 0000000..ec5ddf1
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/gasbombtxtr.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/ggwandtexture.png b/src/main/resources/assets/darkdays/textures/items/ggwandtexture.png
new file mode 100644
index 0000000..c13ff2f
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/ggwandtexture.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_axe.png b/src/main/resources/assets/darkdays/textures/items/steel_axe.png
new file mode 100644
index 0000000..6100481
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_axe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_body.png b/src/main/resources/assets/darkdays/textures/items/steel_body.png
new file mode 100644
index 0000000..a7aa357
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_body.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_boots.png b/src/main/resources/assets/darkdays/textures/items/steel_boots.png
new file mode 100644
index 0000000..42ee3d3
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_boots.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_head.png b/src/main/resources/assets/darkdays/textures/items/steel_head.png
new file mode 100644
index 0000000..c48f48a
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_head.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_hoe.png b/src/main/resources/assets/darkdays/textures/items/steel_hoe.png
new file mode 100644
index 0000000..3438c91
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_hoe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_ingot.png b/src/main/resources/assets/darkdays/textures/items/steel_ingot.png
new file mode 100644
index 0000000..142f2d1
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_ingot.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_leggings.png b/src/main/resources/assets/darkdays/textures/items/steel_leggings.png
new file mode 100644
index 0000000..8e3d555
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_leggings.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_pickaxe.png b/src/main/resources/assets/darkdays/textures/items/steel_pickaxe.png
new file mode 100644
index 0000000..05dd1d0
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_pickaxe.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_shovel.png b/src/main/resources/assets/darkdays/textures/items/steel_shovel.png
new file mode 100644
index 0000000..0ae65d0
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_shovel.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/steel_sword.png b/src/main/resources/assets/darkdays/textures/items/steel_sword.png
new file mode 100644
index 0000000..d4249b4
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/steel_sword.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/uzi.png b/src/main/resources/assets/darkdays/textures/items/uzi.png
new file mode 100644
index 0000000..98473fe
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/uzi.png differ
diff --git a/src/main/resources/assets/darkdays/textures/items/wandammo.png b/src/main/resources/assets/darkdays/textures/items/wandammo.png
new file mode 100644
index 0000000..1c4b192
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/items/wandammo.png differ
diff --git a/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_1.png b/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_1.png
new file mode 100644
index 0000000..bfc845b
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_1.png differ
diff --git a/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_2.png b/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_2.png
new file mode 100644
index 0000000..60559d0
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/models/armor/bedrock_layer_2.png differ
diff --git a/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_1.png b/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_1.png
new file mode 100644
index 0000000..eb62bf0
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_1.png differ
diff --git a/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_2.png b/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_2.png
new file mode 100644
index 0000000..898abdc
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/models/armor/steel_layer_2.png differ
diff --git a/src/main/resources/assets/darkdays/textures/wandammo.png b/src/main/resources/assets/darkdays/textures/wandammo.png
new file mode 100644
index 0000000..1c4b192
Binary files /dev/null and b/src/main/resources/assets/darkdays/textures/wandammo.png differ
diff --git a/src/main/resources/data/darkdays/recipes/ammo_recipie.json b/src/main/resources/data/darkdays/recipes/ammo_recipie.json
new file mode 100644
index 0000000..38c0c0a
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/ammo_recipie.json
@@ -0,0 +1,36 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ " 1 ",
+ "345",
+ "678"
+ ],
+ "key": {
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "4": {
+ "item": "minecraft:gunpowder"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ },
+ "6": {
+ "item": "darkdays:steel_ingot"
+ },
+ "7": {
+ "item": "minecraft:gunpowder"
+ },
+ "8": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:ammo",
+ "count": 16
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_fence_gate_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_fence_gate_recipe.json
new file mode 100644
index 0000000..636d36b
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_fence_gate_recipe.json
@@ -0,0 +1,32 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "345"
+ ],
+ "key": {
+ "0": {
+ "item": "minecraft:stick"
+ },
+ "1": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "2": {
+ "item": "minecraft:stick"
+ },
+ "3": {
+ "item": "minecraft:stick"
+ },
+ "4": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "5": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bed_wood_fence_gate",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_fence_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_fence_recipe.json
new file mode 100644
index 0000000..00c44ed
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_fence_recipe.json
@@ -0,0 +1,32 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "345"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "1": {
+ "item": "minecraft:stick"
+ },
+ "2": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "3": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "4": {
+ "item": "minecraft:stick"
+ },
+ "5": {
+ "item": "darkdays:bed_wood_planks"
+ }
+ },
+ "result": {
+ "item": "darkdays:bed_wood_fence",
+ "count": 3
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_planks_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_planks_recipe.json
new file mode 100644
index 0000000..914f39b
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_planks_recipe.json
@@ -0,0 +1,13 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "tag": "forge:bed_wood_log"
+ }
+ ],
+ "result": {
+ "item": "darkdays:bed_wood_planks",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_slab_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_slab_recipe.json
new file mode 100644
index 0000000..ba4773a
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_slab_recipe.json
@@ -0,0 +1,22 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "1": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "2": {
+ "item": "darkdays:bed_wood_planks"
+ }
+ },
+ "result": {
+ "item": "darkdays:bed_wood_slab",
+ "count": 6
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_stairs_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_stairs_recipe.json
new file mode 100644
index 0000000..8f458c8
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_stairs_recipe.json
@@ -0,0 +1,33 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0 ",
+ "34 ",
+ "678"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "3": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "4": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "6": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "7": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "8": {
+ "item": "darkdays:bed_wood_planks"
+ }
+ },
+ "result": {
+ "item": "darkdays:bed_wood_stairs",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_stick_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_stick_recipe.json
new file mode 100644
index 0000000..dcc499a
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_stick_recipe.json
@@ -0,0 +1,20 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0",
+ "1"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bed_wood_planks"
+ },
+ "1": {
+ "item": "darkdays:bed_wood_planks"
+ }
+ },
+ "result": {
+ "item": "minecraft:stick",
+ "count": 4
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bed_wood_wood_recipe.json b/src/main/resources/data/darkdays/recipes/bed_wood_wood_recipe.json
new file mode 100644
index 0000000..f812ef0
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bed_wood_wood_recipe.json
@@ -0,0 +1,26 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "01",
+ "23"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bed_wood_log"
+ },
+ "1": {
+ "item": "darkdays:bed_wood_log"
+ },
+ "2": {
+ "item": "darkdays:bed_wood_log"
+ },
+ "3": {
+ "item": "darkdays:bed_wood_log"
+ }
+ },
+ "result": {
+ "item": "darkdays:bed_wood_wood",
+ "count": 3
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_armor_body_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_armor_body_recipe.json
new file mode 100644
index 0000000..9d2af45
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_armor_body_recipe.json
@@ -0,0 +1,39 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0 2",
+ "345",
+ "678"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "4": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "5": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "6": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "7": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "8": {
+ "item": "darkdays:bedrock_dust"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_armor_chestplate",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_armor_boots_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_armor_boots_recipe.json
new file mode 100644
index 0000000..a56e6cd
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_armor_boots_recipe.json
@@ -0,0 +1,26 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0 2",
+ "3 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "5": {
+ "item": "darkdays:bedrock_dust"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_armor_boots",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_armor_helmet_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_armor_helmet_recipe.json
new file mode 100644
index 0000000..d545a34
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_armor_helmet_recipe.json
@@ -0,0 +1,29 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "3 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "5": {
+ "item": "darkdays:bedrock_dust"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_armor_helmet",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_armor_leggings_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_armor_leggings_recipe.json
new file mode 100644
index 0000000..82c0800
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_armor_leggings_recipe.json
@@ -0,0 +1,36 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "3 5",
+ "6 8"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "5": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "6": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "8": {
+ "item": "darkdays:bedrock_dust"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_armor_leggings",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_axe_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_axe_recipe.json
new file mode 100644
index 0000000..fd53638
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_axe_recipe.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "01",
+ "23",
+ " 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "minecraft:stick"
+ },
+ "5": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_axe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_block_ore_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_block_ore_recipe.json
new file mode 100644
index 0000000..ed5f8c0
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_block_ore_recipe.json
@@ -0,0 +1,13 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "darkdays:bedrock_block"
+ }
+ ],
+ "result": {
+ "item": "darkdays:bedrock_dust",
+ "count": 9
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_hoe_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_hoe_recipe.json
new file mode 100644
index 0000000..745293b
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_hoe_recipe.json
@@ -0,0 +1,27 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "01",
+ " 3",
+ " 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "minecraft:stick"
+ },
+ "5": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_hoe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_ore_block_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_ore_block_recipe.json
new file mode 100644
index 0000000..9110d3b
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_ore_block_recipe.json
@@ -0,0 +1,42 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "345",
+ "678"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "3": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "4": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "5": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "6": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "7": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "8": {
+ "item": "darkdays:bedrock_dust"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_block",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_ore_smelting.json b/src/main/resources/data/darkdays/recipes/bedrock_ore_smelting.json
new file mode 100644
index 0000000..6fe922c
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_ore_smelting.json
@@ -0,0 +1,12 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:smelting",
+ "experience": 0.7,
+ "cookingtime": 200,
+ "ingredient": {
+ "item": "darkdays:bedrock_ore"
+ },
+ "result": {
+ "item": "darkdays:bedrock_dust"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_pickaxe_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_pickaxe_recipe.json
new file mode 100644
index 0000000..62f24a5
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_pickaxe_recipe.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ " 4 ",
+ " 7 "
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "4": {
+ "item": "minecraft:stick"
+ },
+ "7": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_pickaxe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_shovel_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_shovel_recipe.json
new file mode 100644
index 0000000..c4140d5
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_shovel_recipe.json
@@ -0,0 +1,24 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0",
+ "1",
+ "2"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "minecraft:stick"
+ },
+ "2": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_shovel",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/bedrock_sword_recipe.json b/src/main/resources/data/darkdays/recipes/bedrock_sword_recipe.json
new file mode 100644
index 0000000..83ee78d
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/bedrock_sword_recipe.json
@@ -0,0 +1,24 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0",
+ "1",
+ "2"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "1": {
+ "item": "darkdays:bedrock_dust"
+ },
+ "2": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:bedrock_sword",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/ggwand_recipie.json b/src/main/resources/data/darkdays/recipes/ggwand_recipie.json
new file mode 100644
index 0000000..c908c6d
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/ggwand_recipie.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ " 12",
+ " 45",
+ "6 "
+ ],
+ "key": {
+ "1": {
+ "item": "minecraft:diamond"
+ },
+ "2": {
+ "item": "darkdays:ggbullet"
+ },
+ "4": {
+ "item": "minecraft:blaze_rod"
+ },
+ "5": {
+ "item": "minecraft:diamond"
+ },
+ "6": {
+ "item": "minecraft:blaze_rod"
+ }
+ },
+ "result": {
+ "item": "darkdays:g_gwand",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_armor_body_recipe.json b/src/main/resources/data/darkdays/recipes/steel_armor_body_recipe.json
new file mode 100644
index 0000000..f116488
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_armor_body_recipe.json
@@ -0,0 +1,39 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0 2",
+ "345",
+ "678"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "4": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ },
+ "6": {
+ "item": "darkdays:steel_ingot"
+ },
+ "7": {
+ "item": "darkdays:steel_ingot"
+ },
+ "8": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_armor_chestplate",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_armor_boots_recipe.json b/src/main/resources/data/darkdays/recipes/steel_armor_boots_recipe.json
new file mode 100644
index 0000000..f0f9dd7
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_armor_boots_recipe.json
@@ -0,0 +1,26 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0 2",
+ "3 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_armor_boots",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_armor_helmet_recipe.json b/src/main/resources/data/darkdays/recipes/steel_armor_helmet_recipe.json
new file mode 100644
index 0000000..c96a403
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_armor_helmet_recipe.json
@@ -0,0 +1,29 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "3 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_armor_helmet",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_armor_leggings_recipe.json b/src/main/resources/data/darkdays/recipes/steel_armor_leggings_recipe.json
new file mode 100644
index 0000000..7030adf
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_armor_leggings_recipe.json
@@ -0,0 +1,36 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "3 5",
+ "6 8"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ },
+ "6": {
+ "item": "darkdays:steel_ingot"
+ },
+ "8": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_armor_leggings",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_axe_recipe.json b/src/main/resources/data/darkdays/recipes/steel_axe_recipe.json
new file mode 100644
index 0000000..8aef751
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_axe_recipe.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "01",
+ "23",
+ " 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "minecraft:stick"
+ },
+ "5": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_axe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_block_ore_recipe.json b/src/main/resources/data/darkdays/recipes/steel_block_ore_recipe.json
new file mode 100644
index 0000000..9c26f84
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_block_ore_recipe.json
@@ -0,0 +1,13 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "item": "darkdays:steel_block"
+ }
+ ],
+ "result": {
+ "item": "darkdays:steel_ingot",
+ "count": 9
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_hoe_recipe.json b/src/main/resources/data/darkdays/recipes/steel_hoe_recipe.json
new file mode 100644
index 0000000..aefd585
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_hoe_recipe.json
@@ -0,0 +1,27 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "01",
+ " 3",
+ " 5"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "minecraft:stick"
+ },
+ "5": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_hoe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_ore_block_recipe.json b/src/main/resources/data/darkdays/recipes/steel_ore_block_recipe.json
new file mode 100644
index 0000000..5ff98b2
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_ore_block_recipe.json
@@ -0,0 +1,42 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ "345",
+ "678"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "4": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ },
+ "6": {
+ "item": "darkdays:steel_ingot"
+ },
+ "7": {
+ "item": "darkdays:steel_ingot"
+ },
+ "8": {
+ "item": "darkdays:steel_ingot"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_block",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_ore_smelting.json b/src/main/resources/data/darkdays/recipes/steel_ore_smelting.json
new file mode 100644
index 0000000..c8cc5bd
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_ore_smelting.json
@@ -0,0 +1,12 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:smelting",
+ "experience": 0.7,
+ "cookingtime": 200,
+ "ingredient": {
+ "item": "darkdays:steel_ore"
+ },
+ "result": {
+ "item": "darkdays:steel_ingot"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_pickaxe_recipe.json b/src/main/resources/data/darkdays/recipes/steel_pickaxe_recipe.json
new file mode 100644
index 0000000..f577264
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_pickaxe_recipe.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "012",
+ " 4 ",
+ " 7 "
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "darkdays:steel_ingot"
+ },
+ "4": {
+ "item": "minecraft:stick"
+ },
+ "7": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_pickaxe",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_recipie.json b/src/main/resources/data/darkdays/recipes/steel_recipie.json
new file mode 100644
index 0000000..be56bbe
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_recipie.json
@@ -0,0 +1,37 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shapeless",
+ "ingredients": [
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "item": "minecraft:iron_ingot"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ },
+ {
+ "tag": "minecraft:coals"
+ }
+ ],
+ "result": {
+ "item": "darkdays:steel_ingot",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_shovel_recipe.json b/src/main/resources/data/darkdays/recipes/steel_shovel_recipe.json
new file mode 100644
index 0000000..6e14922
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_shovel_recipe.json
@@ -0,0 +1,24 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0",
+ "1",
+ "2"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "minecraft:stick"
+ },
+ "2": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_shovel",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/steel_sword_recipe.json b/src/main/resources/data/darkdays/recipes/steel_sword_recipe.json
new file mode 100644
index 0000000..1f0ab5d
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/steel_sword_recipe.json
@@ -0,0 +1,24 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ "0",
+ "1",
+ "2"
+ ],
+ "key": {
+ "0": {
+ "item": "darkdays:steel_ingot"
+ },
+ "1": {
+ "item": "darkdays:steel_ingot"
+ },
+ "2": {
+ "item": "minecraft:stick"
+ }
+ },
+ "result": {
+ "item": "darkdays:steel_sword",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/darkdays/recipes/uzi_recipie.json b/src/main/resources/data/darkdays/recipes/uzi_recipie.json
new file mode 100644
index 0000000..d2c2e69
--- /dev/null
+++ b/src/main/resources/data/darkdays/recipes/uzi_recipie.json
@@ -0,0 +1,30 @@
+{
+ "group": "darkdays",
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ " 1 ",
+ "345",
+ " 8"
+ ],
+ "key": {
+ "1": {
+ "item": "minecraft:glass_pane"
+ },
+ "3": {
+ "item": "darkdays:steel_ingot"
+ },
+ "4": {
+ "item": "darkdays:steel_ingot"
+ },
+ "5": {
+ "item": "darkdays:steel_ingot"
+ },
+ "8": {
+ "item": "minecraft:tripwire_hook"
+ }
+ },
+ "result": {
+ "item": "darkdays:uzi",
+ "count": 1
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data/forge/tags/items/bed_wood_log.json b/src/main/resources/data/forge/tags/items/bed_wood_log.json
new file mode 100644
index 0000000..cd53223
--- /dev/null
+++ b/src/main/resources/data/forge/tags/items/bed_wood_log.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "darkdays:bed_wood_wood",
+ "darkdays:bed_wood_log"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/tags/fluids/lava.json b/src/main/resources/data/minecraft/tags/fluids/lava.json
new file mode 100644
index 0000000..5e8aecc
--- /dev/null
+++ b/src/main/resources/data/minecraft/tags/fluids/lava.json
@@ -0,0 +1,4 @@
+{
+ "replace": false,
+ "values": []
+}
\ No newline at end of file
diff --git a/src/main/resources/data/minecraft/tags/fluids/water.json b/src/main/resources/data/minecraft/tags/fluids/water.json
new file mode 100644
index 0000000..a3e744f
--- /dev/null
+++ b/src/main/resources/data/minecraft/tags/fluids/water.json
@@ -0,0 +1,7 @@
+{
+ "replace": false,
+ "values": [
+ "darkdays:liquid_bedrock",
+ "darkdays:liquid_bedrock_flowing"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png
new file mode 100644
index 0000000..1c4b192
Binary files /dev/null and b/src/main/resources/logo.png differ
diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta
new file mode 100644
index 0000000..5bef85e
--- /dev/null
+++ b/src/main/resources/pack.mcmeta
@@ -0,0 +1,6 @@
+{
+ "pack": {
+ "description": "darkdays mod resources",
+ "pack_format": 5
+ }
+}
\ No newline at end of file