summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/Veinminer/blocks.json0
-rw-r--r--config/Veinminer/settings.json0
-rw-r--r--config/ae2/client.json55
-rw-r--r--config/ae2/common.json119
-rw-r--r--config/archers/items_v2.json250
-rw-r--r--config/archers/tweaks.json7
-rw-r--r--config/archers/villages.json79
-rw-r--r--config/artifacts/client.json517
-rw-r--r--config/artifacts/common.json536
-rw-r--r--config/betterdeserttemples-fabric-1_20.toml3
-rw-r--r--config/betterdeserttemples/README.txt7
-rw-r--r--config/betterdeserttemples/fabric-1_20/README.txt30
-rw-r--r--config/betterdeserttemples/fabric-1_20/armorstands.json58
-rw-r--r--config/betterdeserttemples/fabric-1_20/itemframes.json31
-rw-r--r--config/betterdungeons-fabric-1_20.toml16
-rw-r--r--config/betterfortresses-fabric-1_20.toml2
-rw-r--r--config/betterfortresses/README.txt8
-rw-r--r--config/betterfortresses/fabric-1_20/README.txt26
-rw-r--r--config/betterfortresses/fabric-1_20/itemframes.json48
-rw-r--r--config/betterjungletemples-fabric-1_20.toml2
-rw-r--r--config/bettermineshafts-fabric-1_20.toml28
-rw-r--r--config/betteroceanmonuments-fabric-1_20.toml2
-rw-r--r--config/betterstrongholds-fabric-1_20.toml5
-rw-r--r--config/betterstrongholds/README.txt7
-rw-r--r--config/betterstrongholds/fabric-1_20/README.txt49
-rw-r--r--config/betterstrongholds/fabric-1_20/armorstands.json60
-rw-r--r--config/betterstrongholds/fabric-1_20/itemframes.json34
-rw-r--r--config/betterstrongholds/fabric-1_20/ores.json14
-rw-r--r--config/betterstrongholds/fabric-1_20/rareblocks.json11
-rw-r--r--config/botania-common.json546
-rw-r--r--config/bountifulfares.json34
-rw-r--r--config/cardinal-components-api.properties6
-rw-r--r--config/chunky/config.json8
-rw-r--r--config/comforts-server.toml38
-rw-r--r--config/create-client.toml143
-rw-r--r--config/create-common.toml7
-rw-r--r--config/create-server.toml544
-rw-r--r--config/create_new_age-client.toml7
-rw-r--r--config/create_new_age-common.toml115
-rw-r--r--config/createaddition-common.toml148
-rw-r--r--config/cristellib/minecraftED.json575
-rw-r--r--config/cristellib/minecraftP.json596
-rw-r--r--config/death_knights/enchants/decaying.json515
-rw-r--r--config/death_knights/items/armor_sets.json473
-rw-r--r--config/death_knights/items/jewelry.json88
-rw-r--r--config/death_knights/loot/jewelry_v2.json544
-rw-r--r--config/death_knights/spells/blood/blood_boil.json521
-rw-r--r--config/death_knights/spells/blood/death_strike.json511
-rw-r--r--config/death_knights/spells/blood/marrowrend.json517
-rw-r--r--config/death_knights/spells/blood/passive/blood_thirst.json55
-rw-r--r--config/death_knights/spells/frost/breath_of_agony.json517
-rw-r--r--config/death_knights/spells/frost/obliterate.json58
-rw-r--r--config/death_knights/spells/frost/remorseless_winter.json520
-rw-r--r--config/death_knights/spells/unholy/death_coil.json58
-rw-r--r--config/death_knights/spells/unholy/death_grip.json525
-rw-r--r--config/death_knights/spells/unholy/plagues.json521
-rw-r--r--config/explorerscompass.json32
-rw-r--r--config/farmersdelight-common.toml115
-rw-r--r--config/ferritecore.mixin.properties22
-rw-r--r--config/forgeconfigapiport.toml13
-rw-r--r--config/friendsandfoes.json58
-rw-r--r--config/gazebo/villages.json54
-rw-r--r--config/icarus.jsonc23
-rw-r--r--config/jade/server-plugin-overrides.json1
-rw-r--r--config/jade/sort-order.json23
-rw-r--r--config/jewelry/items_v4.json593
-rw-r--r--config/jewelry/villages.json54
-rw-r--r--config/lithium.properties8
-rw-r--r--config/modernfix-mixins.properties84
-rw-r--r--config/naturalist.json126
-rw-r--r--config/necronomicon.json517
-rw-r--r--config/paladins/items_v5.json482
-rw-r--r--config/paladins/shields.json53
-rw-r--r--config/paladins/tweaks.json8
-rw-r--r--config/paladins/villages.json54
-rw-r--r--config/paper-global.yml147
-rw-r--r--config/paper-world-defaults.yml323
-rw-r--r--config/patchouli.json516
-rw-r--r--config/ponder-client.toml19
-rw-r--r--config/railways-client.toml67
-rw-r--r--config/railways-common.toml8
-rw-r--r--config/railways-server.toml65
-rw-r--r--config/repurposed_structures.json4
-rw-r--r--config/resourceful-config-web.json12
-rw-r--r--config/rogues/items_v2.json505
-rw-r--r--config/rogues/tweaks.json19
-rw-r--r--config/rogues/villages.json54
-rw-r--r--config/rpg_series/loot_v2.json2875
-rw-r--r--config/rpg_series/tag_cache.json229
-rw-r--r--config/sliceanddice-client.toml2
-rw-r--r--config/sliceanddice-common.toml21
-rw-r--r--config/sophisticatedbackpacks-common.toml4
-rw-r--r--config/sophisticatedbackpacks-server.toml446
-rw-r--r--config/sophisticatedcore-client.toml7
-rw-r--r--config/sophisticatedcore-common.toml4
-rw-r--r--config/sophisticatedstorage-client.toml6
-rw-r--r--config/sophisticatedstorage-common.toml4
-rw-r--r--config/sophisticatedstorage-server.toml701
-rw-r--r--config/spell_engine/enchantments.json9
-rw-r--r--config/spell_engine/server.json569
-rw-r--r--config/spell_power/attributes.json26
-rw-r--r--config/spell_power/enchantments.json64
-rw-r--r--config/tconstruct-common.toml129
-rw-r--r--config/toms_storage.json16
-rw-r--r--config/towns_and_towers/structure_enable_or_disable_new.json588
-rw-r--r--config/towns_and_towers/structure_rarity_new.json543
-rw-r--r--config/waystones-common.toml152
-rw-r--r--config/wizards/items_v4.json638
-rw-r--r--config/wizards/tweaks.json4
-rw-r--r--config/wizards/villages.json64
-rw-r--r--config/zfastnoise.mixin.properties4
111 files changed, 11708 insertions, 0 deletions
diff --git a/config/Veinminer/blocks.json b/config/Veinminer/blocks.json
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/Veinminer/blocks.json
diff --git a/config/Veinminer/settings.json b/config/Veinminer/settings.json
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/Veinminer/settings.json
diff --git a/config/ae2/client.json b/config/ae2/client.json
new file mode 100644
index 0000000..703db56
--- /dev/null
+++ b/config/ae2/client.json
@@ -0,0 +1,55 @@
+{
+ "client": {
+ "disableColoredCableRecipesInJEI": true,
+ "enableFacadesInJEI_comment": "Show facades in JEI ingredient list",
+ "enableFacadesInJEI": true,
+ "enableFacadeRecipesInJEI_comment": "Show facade recipes in JEI for supported blocks",
+ "enableFacadeRecipesInJEI": true,
+ "exposeInventoryToEmi_comment": "Expose the full network inventory to EMI, which might cause performance problems.",
+ "exposeInventoryToEmi": false,
+ "enableEffects": true,
+ "useTerminalUseLargeFont": false,
+ "useColoredCraftingStatus": true,
+ "PowerUnit_comment": "Power unit shown in AE UIs",
+ "PowerUnit": "ae",
+ "showDebugGuiOverlays_comment": "Show debugging GUI overlays",
+ "showDebugGuiOverlays": false,
+ "showPlacementPreview_comment": "Show a preview of part and facade placement",
+ "showPlacementPreview": true,
+ "notifyForFinishedCraftingJobs_comment": "Show toast when long-running crafting jobs finish.",
+ "notifyForFinishedCraftingJobs": true,
+ "clearGridOnClose_comment": "Automatically clear the crafting/encoding grid when closing the terminal",
+ "clearGridOnClose": false,
+ "terminalMargin_comment": "The vertical margin to apply when sizing terminals. Used to make room for centered item mod search bars",
+ "terminalMargin": 25
+ },
+ "terminals": {
+ "terminalStyle": "small",
+ "pinAutoCraftedItems_comment": "Pin items that the player auto-crafts to the top of the terminal",
+ "pinAutoCraftedItems": true
+ },
+ "search": {
+ "searchModNameInTooltips_comment": "Should the mod name be included when searching in tooltips.",
+ "searchModNameInTooltips": false,
+ "useExternalSearch_comment": "Replaces AEs own search with the search of REI or JEI",
+ "useExternalSearch": false,
+ "clearExternalSearchOnOpen_comment": "When using useExternalSearch, clears the search when the terminal opens",
+ "clearExternalSearchOnOpen": true,
+ "syncWithExternalSearch_comment": "When REI/JEI is installed, automatically set the AE or REI/JEI search text when either is changed while the terminal is open",
+ "syncWithExternalSearch": true,
+ "rememberLastSearch_comment": "Remembers the last search term and restores it when the terminal opens",
+ "rememberLastSearch": true,
+ "autoFocusSearch_comment": "Automatically focuses the search field when the terminal opens",
+ "autoFocusSearch": false
+ },
+ "tooltips": {
+ "showCellUpgrades_comment": "Show installed upgrades in the tooltips of storage cells, color applicators and matter cannons",
+ "showCellUpgrades": true,
+ "showCellContent_comment": "Show a preview of the content in the tooltips of storage cells, color applicators and matter cannons",
+ "showCellContent": true,
+ "maxCellContentShown_comment": "The maximum number of content entries to show in the tooltip of storage cells, color applicators and matter cannons",
+ "maxCellContentShown": 5,
+ "enableGuideHotkey_comment": "Enables the \u0027hold key to show guide\u0027 functionality in tooltips",
+ "enableGuideHotkey": true
+ }
+} \ No newline at end of file
diff --git a/config/ae2/common.json b/config/ae2/common.json
new file mode 100644
index 0000000..297deea
--- /dev/null
+++ b/config/ae2/common.json
@@ -0,0 +1,119 @@
+{
+ "general": {
+ "unsupportedDeveloperTools": false,
+ "matterCannonBlockDamage_comment": "Enables the ability of the Matter Cannon to break blocks.",
+ "matterCannonBlockDamage": true,
+ "tinyTntBlockDamage_comment": "Enables the ability of Tiny TNT to break blocks.",
+ "tinyTntBlockDamage": true,
+ "channels_comment": "Changes the channel capacity that cables provide in AE2.",
+ "channels": "default",
+ "spatialAnchorEnableRandomTicks_comment": "Whether Spatial Anchors should force random chunk ticks and entity spawning.",
+ "spatialAnchorEnableRandomTicks": true
+ },
+ "automation": {
+ "formationPlaneEntityLimit": 128
+ },
+ "facades": {
+ "allowBlockEntities_comment": "Unsupported: Allows whitelisting block entities as facades. Could work, have render issues, or corrupt your world. USE AT YOUR OWN RISK.",
+ "allowBlockEntities": false
+ },
+ "craftingCPU": {
+ "craftingCalculationTimePerTick": 5,
+ "craftingSimulatedExtraction_comment": "When true: simulate extraction of all the network\u0027s contents when starting a crafting job calculation. When false: use the cached available content list (same as terminals). Enabling might work a bit better, but it will significantly reduce performance.",
+ "craftingSimulatedExtraction": false
+ },
+ "crafting": {
+ "disassemblyCrafting_comment": "Enable shift-clicking with the crafting units in hand to disassemble them.",
+ "disassemblyCrafting": true,
+ "growthAccelerator_comment": "Number of ticks between two crystal growth accelerator ticks",
+ "growthAccelerator": 10
+ },
+ "spatialio": {
+ "spatialPowerMultiplier": 1250.0,
+ "spatialPowerExponent": 1.35
+ },
+ "logging": {
+ "blockUpdateLog": false,
+ "packetLog": false,
+ "craftingLog": false,
+ "debugLog": false,
+ "gridLog": false,
+ "chunkLoggerTrace_comment": "Enable stack trace logging for the chunk loading debug command",
+ "chunkLoggerTrace": false
+ },
+ "battery": {
+ "chargerChargeRate_comment": "The chargers charging rate factor, which is applied to the charged items charge rate. 2 means it charges everything twice as fast. 0.5 half as fast.",
+ "chargerChargeRate": 1.0,
+ "wirelessTerminal": 1600000,
+ "chargedStaff": 8000,
+ "entropyManipulator": 200000,
+ "portableCell": 20000,
+ "colorApplicator": 20000,
+ "matterCannon": 200000
+ },
+ "worldGen": {
+ "spawnPressesInMeteorites": true,
+ "spawnFlawlessOnly": false
+ },
+ "wireless": {
+ "wirelessBaseCost": 8.0,
+ "wirelessCostMultiplier": 1.0,
+ "wirelessBaseRange": 16.0,
+ "wirelessBoosterRangeMultiplier": 1.0,
+ "wirelessBoosterExp": 1.5,
+ "wirelessHighWirelessCount": 64.0,
+ "wirelessTerminalDrainMultiplier": 1.0
+ },
+ "PortableCells": {
+ "allowDisassembly_comment": "Allow disassembly of portable cells into the recipe ingredients using shift+right-click",
+ "allowDisassembly": true
+ },
+ "PowerRatios": {
+ "TechReborn": 2.0,
+ "UsageMultiplier": 1.0,
+ "GridEnergyStoragePerNode_comment": "How much energy can the internal grid buffer storage per node attached to the grid.",
+ "GridEnergyStoragePerNode": 25.0,
+ "CrystalResonanceGeneratorRate_comment": "How much energy a crystal resonance generator generates per tick.",
+ "CrystalResonanceGeneratorRate": 20.0
+ },
+ "Condenser": {
+ "MatterBalls": 256,
+ "Singularity": 256000
+ },
+ "tickRates": {
+ "_comment": " Min / Max Tickrates for dynamic ticking, most of these components also use sleeping, to prevent constant ticking, adjust with care, non standard rates are not supported or tested.",
+ "InterfaceMin": 5,
+ "InterfaceMax": 120,
+ "ImportBusMin": 5,
+ "ImportBusMax": 40,
+ "ExportBusMin": 5,
+ "ExportBusMax": 60,
+ "AnnihilationPlaneMin": 2,
+ "AnnihilationPlaneMax": 120,
+ "METunnelMin": 5,
+ "METunnelMax": 20,
+ "InscriberMin": 1,
+ "InscriberMax": 20,
+ "ChargerMin": 10,
+ "ChargerMax": 10,
+ "IOPortMin": 1,
+ "IOPortMax": 5,
+ "VibrationChamberMin": 10,
+ "VibrationChamberMax": 40,
+ "StorageBusMin": 5,
+ "StorageBusMax": 60,
+ "ItemTunnelMin": 5,
+ "ItemTunnelMax": 60,
+ "LightTunnelMin": 5,
+ "LightTunnelMax": 60
+ },
+ "vibrationChamber": {
+ "_comment": "Settings for the Vibration Chamber",
+ "baseEnergyPerFuelTick_comment": "AE energy produced per fuel burn tick (reminder: coal \u003d 1600, block of coal \u003d 16000, lava bucket \u003d 20000 burn ticks)",
+ "baseEnergyPerFuelTick": 5.0,
+ "minEnergyPerGameTick_comment": "Minimum amount of AE/t the vibration chamber can slow down to when energy is being wasted.",
+ "minEnergyPerGameTick": 4,
+ "baseMaxEnergyPerGameTick_comment": "Maximum amount of AE/t the vibration chamber can speed up to when generated energy is being fully consumed.",
+ "baseMaxEnergyPerGameTick": 40
+ }
+} \ No newline at end of file
diff --git a/config/archers/items_v2.json b/config/archers/items_v2.json
new file mode 100644
index 0000000..13054a6
--- /dev/null
+++ b/config/archers/items_v2.json
@@ -0,0 +1,250 @@
+{
+ "ranged_weapons": {
+ "archers:netherite_heavy_crossbow": {
+ "pull_time": 35,
+ "damage": 15.0,
+ "velocity": 0.0
+ },
+ "archers:netherite_shortbow": {
+ "pull_time": 16,
+ "damage": 9.0,
+ "velocity": 0.0
+ },
+ "archers:royal_longbow": {
+ "pull_time": 30,
+ "damage": 10.0,
+ "velocity": 0.0
+ },
+ "archers:netherite_rapid_crossbow": {
+ "pull_time": 20,
+ "damage": 9.5,
+ "velocity": 0.0
+ },
+ "archers:heavy_crossbow": {
+ "pull_time": 35,
+ "damage": 13.0,
+ "velocity": 0.0
+ },
+ "archers:netherite_longbow": {
+ "pull_time": 30,
+ "damage": 12.0,
+ "velocity": 0.0
+ },
+ "archers:composite_longbow": {
+ "pull_time": 30,
+ "damage": 8.0,
+ "velocity": 0.0
+ },
+ "archers:rapid_crossbow": {
+ "pull_time": 20,
+ "damage": 8.5,
+ "velocity": 0.0
+ },
+ "archers:mechanic_shortbow": {
+ "pull_time": 16,
+ "damage": 8.0,
+ "velocity": 0.0
+ }
+ },
+ "melee_weapons": {
+ "golden_spear": {
+ "attack_damage": 3.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "diamond_spear": {
+ "attack_damage": 6.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "flint_spear": {
+ "attack_damage": 4.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "netherite_spear": {
+ "attack_damage": 7.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "iron_spear": {
+ "attack_damage": 5.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ }
+ },
+ "armor_sets": {
+ "archer_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "ranger_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "netherite_ranger_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/config/archers/tweaks.json b/config/archers/tweaks.json
new file mode 100644
index 0000000..31da91c
--- /dev/null
+++ b/config/archers/tweaks.json
@@ -0,0 +1,7 @@
+{
+ "ignore_items_required_mods": false,
+ "power_enchantment_multiplier_per_level": 0.08,
+ "quick_charge_enchantment_multiplier_per_level": 0.1,
+ "serverside_crossbow_charging_tolerance": 0.95,
+ "enable_infinity_for_crossbows": true
+} \ No newline at end of file
diff --git a/config/archers/villages.json b/config/archers/villages.json
new file mode 100644
index 0000000..5f97ac9
--- /dev/null
+++ b/config/archers/villages.json
@@ -0,0 +1,79 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "archers:village/desert/archery_range_large",
+ "weight": 5,
+ "limit": 1
+ },
+ {
+ "id": "archers:village/desert/archery_range_small",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "archers:village/savanna/archery_range_large",
+ "weight": 5,
+ "limit": 1
+ },
+ {
+ "id": "archers:village/savanna/archery_range_small",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "archers:village/plains/archery_range_large",
+ "weight": 5,
+ "limit": 1
+ },
+ {
+ "id": "archers:village/plains/archery_range_small",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "archers:village/taiga/archery_range_large",
+ "weight": 5,
+ "limit": 1
+ },
+ {
+ "id": "archers:village/taiga/archery_range_small",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "archers:village/snowy/archery_range_large",
+ "weight": 5,
+ "limit": 1
+ },
+ {
+ "id": "archers:village/snowy/archery_range_small",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/artifacts/client.json5 b/config/artifacts/client.json5
new file mode 100644
index 0000000..5f1d6db
--- /dev/null
+++ b/config/artifacts/client.json5
@@ -0,0 +1,17 @@
+{
+ // Whether models for gloves should be shown in first person
+ "showFirstPersonGloves": true,
+ // Whether artifacts should have tooltips explaining their effects
+ "showTooltips": true,
+ // Whether mimics can use textures from Lootr or Quark
+ "useModdedMimicTextures": true,
+ // Display artifacts on cooldown next to the hotbar
+ "enableCooldownOverlay": false,
+ /* Location of the artifact cooldown gui element
+ Distance from the hotbar measured in pixels
+ Negative values place the element left of the hotbar
+ */
+ "cooldownOverlayOffset": 10,
+ // Whether the cosmetics toggle tooltip should be shown even when cosmetics are toggled on
+ "alwaysShowCosmeticsToggleTooltip": true
+} \ No newline at end of file
diff --git a/config/artifacts/common.json5 b/config/artifacts/common.json5
new file mode 100644
index 0000000..c1db3de
--- /dev/null
+++ b/config/artifacts/common.json5
@@ -0,0 +1,36 @@
+{
+ // The chance everlasting beef drops when a cow or mooshroom is killed by a player
+ "everlastingBeefChance": 0.002,
+ // The chance that a skeleton, zombie or piglin spawns with an artifact equipped
+ "entityEquipmentChance": 0.001,
+ // The chance that an artifact generates in suspicious sand or gravel
+ "archaeologyChance": 0.0625,
+ // Whether the Kitty Slippers and Bunny Hoppers change the player's hurt sounds
+ "modifyHurtSounds": true,
+ "campsite": {
+ /* How many times a campsite will attempt to generate per chunk
+ Set this to 0 to prevent campsites from generating
+ */
+ "count": 4,
+ // The minimum height campsites can spawn at
+ "minY": -60,
+ // The maximum height campsites can spawn at
+ "maxY": 40,
+ // Probability that a campsite has a mimic instead of a chest
+ "mimicChance": 0.3,
+ // Whether to use wooden chests from other mods when generating campsites
+ "useModdedChests": true,
+ // Whether campsites can contain blocks that emit light
+ "allowLightSources": true
+ },
+ /* Affects how common artifacts are in chests.
+ Values above 1 will make artifacts rarer, values between 0 and 1 will make artifacts more common.
+ Doubling this value will make artifacts approximately twice as hard to find, and vice versa.
+ To prevent artifacts from appearing as chest loot, set this to 10000.
+
+ To disable or change the effects of specific items, the /gamerule command can be used.
+ A list of available game rules and their effects can be found on the wiki on GitHub:
+ https://github.com/ochotonida/artifacts/wiki
+ */
+ "artifactRarity": 1.0
+} \ No newline at end of file
diff --git a/config/betterdeserttemples-fabric-1_20.toml b/config/betterdeserttemples-fabric-1_20.toml
new file mode 100644
index 0000000..3efd9a8
--- /dev/null
+++ b/config/betterdeserttemples-fabric-1_20.toml
@@ -0,0 +1,3 @@
+[general]
+disableVanillaPyramids = true
+applyMiningFatigue = true
diff --git a/config/betterdeserttemples/README.txt b/config/betterdeserttemples/README.txt
new file mode 100644
index 0000000..7d9fed0
--- /dev/null
+++ b/config/betterdeserttemples/README.txt
@@ -0,0 +1,7 @@
+This directory is for a few additional options for YUNG's Better Desert Temples.
+Options provided may vary by version.
+This directory contains subdirectories for supported versions. The first time you run Better Desert Temples, a version subdirectory will be created if that version supports advanced options.
+For example, the first time you use Better Desert Temples for 1.18.2 on Forge, the 'forge-1_18_2' subdirectory will be created in this folder.
+If no subdirectory for your version is created, then that version probably does not support the additional options.
+NOTE -- MOST OPTIONS CAN BE FOUND IN A CONFIG FILE OUTSIDE THIS FOLDER!
+For example, on Forge 1.18.2 the file is 'betterdeserttemples-forge-1_18_2.toml'. \ No newline at end of file
diff --git a/config/betterdeserttemples/fabric-1_20/README.txt b/config/betterdeserttemples/fabric-1_20/README.txt
new file mode 100644
index 0000000..09b809b
--- /dev/null
+++ b/config/betterdeserttemples/fabric-1_20/README.txt
@@ -0,0 +1,30 @@
+######################################
+# armorstands.json #
+######################################
+ This file contains ItemRandomizers describing the probability distribution of armor on armor stands.
+Armor stands spawn in armory rooms and wardrobe rooms.
+For information on ItemRandomizers, see the bottom of this README.
+######################################
+# itemframes.json #
+######################################
+ This file contains ItemRandomizers describing the probability distribution of items in item frames.
+Item frames only spawn in food storage rooms and armoury rooms.
+For information on ItemRandomizers, see the bottom of this README.
+######################################
+# ItemRandomizers #
+######################################
+Describes a set of items and the probability of each item being chosen.
+ - entries: An object where each entry's key is a item, and each value is that item's probability of being chosen.
+ The total sum of all probabilities SHOULD NOT exceed 1.0!
+ - defaultItem: The item used for any leftover probability ranges.
+ For example, if the total sum of all the probabilities of the entries is 0.6, then
+ there is a 0.4 chance of the defaultItem being selected.
+Here's an example ItemRandomizer:
+"entries": {
+ "minecraft:stone_axe": 0.25,
+ "minecraft:shield": 0.2,
+ "minecraft:air": 0.1
+},
+"defaultItem": "minecraft:iron_axe"
+For each item, this randomizer has a 25% chance of returning a stone axe, 20% chance of choosing a shield,
+10% chance of choosing air (nothing), and a 100 - (25 + 20 + 10) = 45% chance of choosing an iron axe (since it's the default item).
diff --git a/config/betterdeserttemples/fabric-1_20/armorstands.json b/config/betterdeserttemples/fabric-1_20/armorstands.json
new file mode 100644
index 0000000..fd33497
--- /dev/null
+++ b/config/betterdeserttemples/fabric-1_20/armorstands.json
@@ -0,0 +1,58 @@
+{
+ "armoryHelmets": {
+ "entries": {
+ "chainmail_helmet": 0.3,
+ "golden_helmet": 0.2
+ },
+ "defaultItem": "air"
+ },
+ "wardrobeHelmets": {
+ "entries": {
+ "chainmail_helmet": 0.2,
+ "leather_helmet": 0.4
+ },
+ "defaultItem": "air"
+ },
+ "armoryChestplates": {
+ "entries": {
+ "chainmail_chestplate": 0.3,
+ "golden_chestplate": 0.2
+ },
+ "defaultItem": "air"
+ },
+ "wardrobeChestplates": {
+ "entries": {
+ "chainmail_chestplate": 0.2,
+ "leather_chestplate": 0.4
+ },
+ "defaultItem": "air"
+ },
+ "armoryLeggings": {
+ "entries": {
+ "chainmail_leggings": 0.3,
+ "golden_leggings": 0.2
+ },
+ "defaultItem": "air"
+ },
+ "wardrobeLeggings": {
+ "entries": {
+ "chainmail_leggings": 0.2,
+ "leather_leggings": 0.4
+ },
+ "defaultItem": "air"
+ },
+ "armoryBoots": {
+ "entries": {
+ "chainmail_boots": 0.3,
+ "golden_boots": 0.2
+ },
+ "defaultItem": "air"
+ },
+ "wardrobeBoots": {
+ "entries": {
+ "chainmail_boots": 0.2,
+ "leather_boots": 0.4
+ },
+ "defaultItem": "air"
+ }
+} \ No newline at end of file
diff --git a/config/betterdeserttemples/fabric-1_20/itemframes.json b/config/betterdeserttemples/fabric-1_20/itemframes.json
new file mode 100644
index 0000000..3b53472
--- /dev/null
+++ b/config/betterdeserttemples/fabric-1_20/itemframes.json
@@ -0,0 +1,31 @@
+{
+ "armouryItems": {
+ "entries": {
+ "arrow": 0.05,
+ "golden_sword": 0.1,
+ "bow": 0.1,
+ "stone_axe": 0.05,
+ "shield": 0.1,
+ "name_tag": 0.05,
+ "stone_sword": 0.05,
+ "golden_axe": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "storageItems": {
+ "entries": {
+ "bread": 0.2,
+ "melon_seeds": 0.025,
+ "beetroot_seeds": 0.025,
+ "rabbit_foot": 0.01,
+ "slime_ball": 0.05,
+ "wheat_seeds": 0.025,
+ "potato": 0.2,
+ "pumpkin_seeds": 0.025,
+ "honey_bottle": 0.1,
+ "cake": 0.1,
+ "cookie": 0.1
+ },
+ "defaultItem": "air"
+ }
+} \ No newline at end of file
diff --git a/config/betterdungeons-fabric-1_20.toml b/config/betterdungeons-fabric-1_20.toml
new file mode 100644
index 0000000..f47999a
--- /dev/null
+++ b/config/betterdungeons-fabric-1_20.toml
@@ -0,0 +1,16 @@
+[betterDungeons.general]
+enableHeads = true
+removeVanillaDungeons = true
+enableNetherBlocks = true
+[betterDungeons.zombieDungeon]
+zombieDungeonMaxSurfaceStaircaseLength = 20
+[betterDungeons.smallDungeon]
+bannerMaxCount = 2
+chestMinCount = 1
+chestMaxCount = 2
+enableOreProps = true
+[betterDungeons.smallNetherDungeon]
+enabled = false
+witherSkeletonsDropWitherSkulls = true
+blazesDropBlazeRods = true
+bannerMaxCount = 2
diff --git a/config/betterfortresses-fabric-1_20.toml b/config/betterfortresses-fabric-1_20.toml
new file mode 100644
index 0000000..de34590
--- /dev/null
+++ b/config/betterfortresses-fabric-1_20.toml
@@ -0,0 +1,2 @@
+[general]
+disableVanillaFortresses = true
diff --git a/config/betterfortresses/README.txt b/config/betterfortresses/README.txt
new file mode 100644
index 0000000..041affb
--- /dev/null
+++ b/config/betterfortresses/README.txt
@@ -0,0 +1,8 @@
+This directory is for a few additional options for YUNG's Better Nether Fortresses.
+Options provided may vary by version.
+This directory contains subdirectories for supported versions. The first time you run Better Nether Fortresses, a version subdirectory will be created if that version supports advanced options.
+For example, the first time you use Better Nether Fortresses for MC 1.19.2 on Fabric, the 'fabric-1_19' subdirectory will be created in this folder.
+If no subdirectory for your version is created, then that version probably does not support the additional options.
+NOTE -- Most of this mod's config settings can be found in a config file outside this folder!
+For example, on Fabric 1.19.2 the file is 'betterfortresses-fabric-1_19.toml'.
+Also note that many of the structure's settings such as spawn rate & spawn conditions can only be modified via data pack. \ No newline at end of file
diff --git a/config/betterfortresses/fabric-1_20/README.txt b/config/betterfortresses/fabric-1_20/README.txt
new file mode 100644
index 0000000..ffdedac
--- /dev/null
+++ b/config/betterfortresses/fabric-1_20/README.txt
@@ -0,0 +1,26 @@
+######################################
+# itemframes.json #
+######################################
+ This file contains ItemRandomizers describing the probability distribution of items in item frames.
+Item frames only spawn in certain rooms and hallway pieces.
+For information on ItemRandomizers, see the bottom of this README.
+######################################
+# ItemRandomizers #
+######################################
+Describes a set of items and the probability of each item being chosen.
+ - entries: An object where each entry's key is an item, and each value is that item's probability of being chosen.
+ The total sum of all probabilities SHOULD NOT exceed 1.0!
+ - defaultItem: The item used for any leftover probability ranges.
+ For example, if the total sum of all the probabilities of the entries is 0.6, then
+ there is a 0.4 chance of the defaultItem being selected.
+Here's an example ItemRandomizer:
+{
+ "entries": {
+ "minecraft:cobblestone": 0.25,
+ "minecraft:air": 0.2,
+ "minecraft:stone_sword": 0.1
+ },
+ "defaultItem": "minecraft:iron_axe"
+}
+This randomizer has a 25% chance of returning cobblestone, 20% chance of choosing air,
+10% chance of choosing a stone sword, and a 100 - (25 + 20 + 10) = 45% chance of choosing iron axe (since it's the default item).
diff --git a/config/betterfortresses/fabric-1_20/itemframes.json b/config/betterfortresses/fabric-1_20/itemframes.json
new file mode 100644
index 0000000..7e7d2fe
--- /dev/null
+++ b/config/betterfortresses/fabric-1_20/itemframes.json
@@ -0,0 +1,48 @@
+{
+ "weaponItems": {
+ "entries": {
+ "golden_sword": 0.05,
+ "stone_axe": 0.025,
+ "shield": 0.025,
+ "stone_sword": 0.025,
+ "netherite_sword": 0.005,
+ "iron_sword": 0.025,
+ "golden_axe": 0.05,
+ "iron_axe": 0.025
+ },
+ "defaultItem": "air"
+ },
+ "lootItems": {
+ "entries": {
+ "nether_wart": 0.1,
+ "gold_ingot": 0.1,
+ "gold_nugget": 0.2
+ },
+ "defaultItem": "air"
+ },
+ "studyItems": {
+ "entries": {
+ "paper": 0.1,
+ "enchanted_book": 0.1,
+ "book": 0.4,
+ "writable_book": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "messHallItems": {
+ "entries": {
+ "cooked_porkchop": 0.3,
+ "gold_ingot": 0.2,
+ "porkchop": 0.3
+ },
+ "defaultItem": "air"
+ },
+ "alchemyItems": {
+ "entries": {
+ "fire_charge": 0.2,
+ "magma_cream": 0.3,
+ "quartz": 0.3
+ },
+ "defaultItem": "air"
+ }
+} \ No newline at end of file
diff --git a/config/betterjungletemples-fabric-1_20.toml b/config/betterjungletemples-fabric-1_20.toml
new file mode 100644
index 0000000..64f7043
--- /dev/null
+++ b/config/betterjungletemples-fabric-1_20.toml
@@ -0,0 +1,2 @@
+[betterJungleTemples.general]
+disableVanillaJungleTemples = true
diff --git a/config/bettermineshafts-fabric-1_20.toml b/config/bettermineshafts-fabric-1_20.toml
new file mode 100644
index 0000000..ab9e55e
--- /dev/null
+++ b/config/bettermineshafts-fabric-1_20.toml
@@ -0,0 +1,28 @@
+minY = -55
+maxY = 30
+disableVanillaMineshafts = true
+
+[spawnRates]
+lanternSpawnRate = 0.0067
+torchSpawnRate = 0.02
+workstationSpawnRate = 0.025
+workstationDungeonSpawnRate = 0.25
+smallShaftSpawnRate = 0.07
+cobwebSpawnRate = 0.15
+smallShaftChestMinecartSpawnRate = 0.00125
+mainShaftChestMinecartSpawnRate = 0.01
+smallShaftTntMinecartSpawnRate = 0.0024999999441206455
+mainShaftTntMinecartSpawnRate = 0.0024999999441206455
+zombieVillagerRoomSpawnChance = 2
+smallShaftPieceChainLength = 9
+
+[ores]
+enabled = true
+cobble = 50
+coal = 20
+iron = 9
+redstone = 7
+gold = 7
+lapis = 3
+emerald = 3
+diamond = 1
diff --git a/config/betteroceanmonuments-fabric-1_20.toml b/config/betteroceanmonuments-fabric-1_20.toml
new file mode 100644
index 0000000..ca08d83
--- /dev/null
+++ b/config/betteroceanmonuments-fabric-1_20.toml
@@ -0,0 +1,2 @@
+[general]
+disableVanillaMonuments = true
diff --git a/config/betterstrongholds-fabric-1_20.toml b/config/betterstrongholds-fabric-1_20.toml
new file mode 100644
index 0000000..44379d7
--- /dev/null
+++ b/config/betterstrongholds-fabric-1_20.toml
@@ -0,0 +1,5 @@
+[betterStrongholds.general]
+cobwebReplacementChanceNormal = 0.1
+cobwebReplacementChanceSpawner = 0.3
+torchSpawnRate = 0.1
+lanternSpawnRate = 0.2
diff --git a/config/betterstrongholds/README.txt b/config/betterstrongholds/README.txt
new file mode 100644
index 0000000..a66f7c5
--- /dev/null
+++ b/config/betterstrongholds/README.txt
@@ -0,0 +1,7 @@
+This directory is for a few additional options for YUNG's Better Strongholds.
+Options provided may vary by version.
+This directory contains subdirectories for supported versions. The first time you run Better Strongholds, a version subdirectory will be created if that version supports advanced options.
+For example, the first time you use Better Strongholds for MC 1.16 on Forge, the 'forge-1_16' subdirectory will be created in this folder.
+If no subdirectory for your version is created, then that version probably does not support the additional options.
+NOTE -- MOST OPTIONS CAN BE FOUND IN A CONFIG FILE OUTSIDE THIS FOLDER!
+For example, on Forge 1.16 the file is 'betterstrongholds-forge-1_16.toml'. \ No newline at end of file
diff --git a/config/betterstrongholds/fabric-1_20/README.txt b/config/betterstrongholds/fabric-1_20/README.txt
new file mode 100644
index 0000000..96b8874
--- /dev/null
+++ b/config/betterstrongholds/fabric-1_20/README.txt
@@ -0,0 +1,49 @@
+######################################
+# ores.json #
+######################################
+ This file contains a BlockSetSelector (see below) describing the probability of a given ore being chosen.
+These probabilities are used in treasure rooms in the stronghold, in which
+piles of ore have a chance of spawning.
+For information on BlockSetSelectors, see the bottom of this README.
+######################################
+# rareblocks.json #
+######################################
+ This file contains a BlockSetSelector describing the probability of a given block being chosen.
+These probabilities are used in grand libraries, in which
+two rare blocks will spawn.
+For information on BlockSetSelectors, see the bottom of this README.
+######################################
+# armorstands.json #
+######################################
+ This file contains ItemSetSelectors describing the probability distribution of armor on armor stands.
+Common armor stands spawn in Armoury rooms, while Rare ones are only available in the rare Commander rooms.
+For information on ItemSetSelectors, see the bottom of this README.
+######################################
+# itemframes.json #
+######################################
+ This file contains ItemSetSelectors describing the probability distribution of items in item frames.
+Item frames only spawn in storage rooms and armoury rooms.
+For information on ItemSetSelectors, see the bottom of this README.
+######################################
+# BlockSetSelectors #
+######################################
+Describes a set of blockstates and the probability of each blockstate being chosen.
+ - entries: An object where each entry's key is a blockstate, and each value is that blockstate's probability of being chosen.
+ The total sum of all probabilities SHOULD NOT exceed 1.0!
+ - defaultBlock: The blockstate used for any leftover probability ranges.
+ For example, if the total sum of all the probabilities of the entries is 0.6, then
+ there is a 0.4 chance of the defaultBlock being selected.
+Here's an example block selector:
+"entries": {
+ "minecraft:cobblestone": 0.25,
+ "minecraft:air": 0.2,
+ "minecraft:stone_bricks": 0.1
+},
+"defaultBlock": "minecraft:oak_planks"
+For each block, this selector has a 25% chance of returning cobblestone, 20% chance of choosing air,
+10% chance of choosing stone bricks, and a 100 - (25 + 20 + 10) = 45% chance of choosing oak planks (since it's the default block).
+######################################
+# ItemSetSelectors #
+######################################
+Describes a set of items and the probability of each item being chosen.
+Works the same as BlockSetSelectors, but with items instead of blockstates.
diff --git a/config/betterstrongholds/fabric-1_20/armorstands.json b/config/betterstrongholds/fabric-1_20/armorstands.json
new file mode 100644
index 0000000..b535c3f
--- /dev/null
+++ b/config/betterstrongholds/fabric-1_20/armorstands.json
@@ -0,0 +1,60 @@
+{
+ "commonHelmets": {
+ "entries": {
+ "chainmail_helmet": 0.3,
+ "iron_helmet": 0.3,
+ "carved_pumpkin": 0.01,
+ "leather_helmet": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "rareHelmets": {
+ "entries": {
+ "carved_pumpkin": 0.2,
+ "diamond_helmet": 0.3
+ },
+ "defaultItem": "air"
+ },
+ "commonChestplates": {
+ "entries": {
+ "chainmail_chestplate": 0.3,
+ "iron_chestplate": 0.3,
+ "leather_chestplate": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "rareChestplates": {
+ "entries": {
+ "diamond_chestplate": 0.3
+ },
+ "defaultItem": "air"
+ },
+ "commonLeggings": {
+ "entries": {
+ "chainmail_leggings": 0.3,
+ "iron_leggings": 0.3,
+ "leather_leggings": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "rareLeggings": {
+ "entries": {
+ "diamond_leggings": 0.3
+ },
+ "defaultItem": "air"
+ },
+ "commonBoots": {
+ "entries": {
+ "chainmail_boots": 0.3,
+ "iron_boots": 0.3,
+ "leather_boots": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "rareBoots": {
+ "entries": {
+ "diamond_boots": 0.3
+ },
+ "defaultItem": "air"
+ }
+} \ No newline at end of file
diff --git a/config/betterstrongholds/fabric-1_20/itemframes.json b/config/betterstrongholds/fabric-1_20/itemframes.json
new file mode 100644
index 0000000..1097bc0
--- /dev/null
+++ b/config/betterstrongholds/fabric-1_20/itemframes.json
@@ -0,0 +1,34 @@
+{
+ "armouryItems": {
+ "entries": {
+ "arrow": 0.05,
+ "golden_sword": 0.05,
+ "bow": 0.1,
+ "stone_axe": 0.05,
+ "shield": 0.1,
+ "name_tag": 0.05,
+ "stone_sword": 0.05,
+ "iron_sword": 0.1,
+ "golden_axe": 0.05,
+ "iron_axe": 0.1
+ },
+ "defaultItem": "air"
+ },
+ "storageItems": {
+ "entries": {
+ "paper": 0.25,
+ "melon_seeds": 0.025,
+ "beetroot_seeds": 0.025,
+ "rabbit_foot": 0.01,
+ "flint": 0.05,
+ "slime_ball": 0.05,
+ "wheat_seeds": 0.025,
+ "compass": 0.05,
+ "lead": 0.05,
+ "map": 0.25,
+ "pumpkin_seeds": 0.025,
+ "cake": 0.05
+ },
+ "defaultItem": "air"
+ }
+} \ No newline at end of file
diff --git a/config/betterstrongholds/fabric-1_20/ores.json b/config/betterstrongholds/fabric-1_20/ores.json
new file mode 100644
index 0000000..a393ba2
--- /dev/null
+++ b/config/betterstrongholds/fabric-1_20/ores.json
@@ -0,0 +1,14 @@
+{
+ "oreChances": {
+ "entries": {
+ "minecraft:iron_ore": 0.2,
+ "minecraft:coal_ore": 0.2,
+ "minecraft:redstone_ore[lit=false]": 0.15,
+ "minecraft:emerald_ore": 0.05,
+ "minecraft:gold_ore": 0.2,
+ "minecraft:lapis_ore": 0.15,
+ "minecraft:diamond_ore": 0.05
+ },
+ "defaultBlock": "minecraft:coal_ore"
+ }
+} \ No newline at end of file
diff --git a/config/betterstrongholds/fabric-1_20/rareblocks.json b/config/betterstrongholds/fabric-1_20/rareblocks.json
new file mode 100644
index 0000000..c7d5518
--- /dev/null
+++ b/config/betterstrongholds/fabric-1_20/rareblocks.json
@@ -0,0 +1,11 @@
+{
+ "blockChances": {
+ "entries": {
+ "minecraft:gold_block": 0.3,
+ "minecraft:quartz_block": 0.3,
+ "minecraft:iron_block": 0.3,
+ "minecraft:diamond_block": 0.1
+ },
+ "defaultBlock": "minecraft:iron_block"
+ }
+} \ No newline at end of file
diff --git a/config/botania-common.json5 b/config/botania-common.json5
new file mode 100644
index 0000000..5359f57
--- /dev/null
+++ b/config/botania-common.json5
@@ -0,0 +1,46 @@
+{
+ "blockBreakingParticles": {
+ // Set this to false to remove the block breaking particles from the flowers and other items in the mod.
+ "enabled": true,
+ // Set this to false to remove the block breaking particles from the Terra Shatterer, as there can be a good amount in higher levels.
+ "toolEnabled": true
+ },
+ "manaSpreaders": {
+ // Set this to true to disable the mana spreader shooting sound
+ "silent": false,
+ // How many ticks into the future will mana spreaders attempt to predict where mana bursts go? Setting this lower will improve spreader performance, but will cause them to not fire at targets that are too far away.
+ "traceTime": 400
+ },
+ "harvestLevels": {
+ // The harvest level of the Mana Lens: Weight. 3 is diamond level. Defaults to 2 (iron level)
+ "weightLens": 2,
+ // The harvest level of the Mana Lens: Bore. 3 is diamond level. Defaults to 3
+ "boreLens": 3
+ },
+ // Set this to false to disable the animation when an item is charging on top of a mana pool
+ "chargeAnimation": true,
+ // Set to false to disable the ability for the Hand of Ender to pickpocket other players' ender chests
+ "enderPickpocket": true,
+ // Set this to false to disable the Mana Enchanter. Since some people find it OP or something. This only disables the entry and creation. Old ones that are already in the world will stay.
+ "manaEnchanter": true,
+ // Set this to false to disable the Relic System. This only disables the entries, drops and achievements. Old ones that are already in the world will stay.
+ "relics": true,
+ // Set this to true to invert the Ring of Magnetization's controls (from shift to stop to shift to work)
+ "invertMagnetRing": false,
+ // Set this to false to disable spawning with a Lexica Botania in Garden of Glass worlds, if you are modifying the modpack's progression to not start with Botania.
+ "gardenOfGlass.spawnWithLexicon": true,
+ /* The multiplier for island distances for multiplayer Garden of Glass worlds.
+ Islands are placed on a grid with 256 blocks between points, with the spawn island always being placed on 256, 256.
+ By default, the scale is 8, putting each island on points separated by 2048 blocks.
+ Values below 4 (1024 block spacing) are not recommended due to Nether portal collisions.
+ */
+ "gardenOfGlass.islandScaleMultiplier": 8,
+ // List of item registry names that will be ignored by rannuncarpuses when placing blocks.
+ "rannuncarpusItemBlackList": [],
+ /* List of mod names for rannuncarpuses to ignore.
+ Ignores Storage Drawers by default due to crashes with placing drawer blocks without player involvement.
+ */
+ "rannuncarpusModBlacklist": [
+ "storagedrawers"
+ ]
+} \ No newline at end of file
diff --git a/config/bountifulfares.json b/config/bountifulfares.json
new file mode 100644
index 0000000..c94e3e8
--- /dev/null
+++ b/config/bountifulfares.json
@@ -0,0 +1,34 @@
+{
+ "fruitReplaceWhenPicked": true,
+ "enableLapisberrySeeds": true,
+ "enableHoarySeeds": true,
+ "enableElderGuardianSpongekinSeeds": true,
+ "enableGuardianSpongekinSeeds": true,
+ "enableBountifulPainting": true,
+ "enableCitrusDishPainting": true,
+ "enableHazelFloretPainting": true,
+ "enableVioletFloretPainting": true,
+ "enableWhyBluePainting": true,
+ "enableRuminerPainting": true,
+ "enablePhylogenesisPainting": true,
+ "enableEscaladePainting": true,
+ "enableAquaculturePainting": true,
+ "enableUnpleasantTilesPainting": true,
+ "generateWildWheat": true,
+ "generateWildCarrots": true,
+ "generateWildPotatoes": true,
+ "generateWildBeetroot": true,
+ "generateAppleTrees": true,
+ "generateOrangeTrees": true,
+ "generateLemonTrees": true,
+ "generatePlumTrees": true,
+ "generateAllFruitTreesInFlowerForest": false,
+ "generateForestTeaShrubs": false,
+ "generateForestWalnutTrees": false,
+ "fermentationTime": 300,
+ "millingTime": 4,
+ "honeysuckleToBananaDye": true,
+ "renameItemsToMatchDyes": true,
+ "honeysuckleToAmberDye": true,
+ "chamomileToBeigeDye": true
+} \ No newline at end of file
diff --git a/config/cardinal-components-api.properties b/config/cardinal-components-api.properties
new file mode 100644
index 0000000..b08e3fa
--- /dev/null
+++ b/config/cardinal-components-api.properties
@@ -0,0 +1,6 @@
+# If set to false, warnings will not get logged when a component fails to be resolved (typically due to mods being removed)
+# Default value: true
+log-deserialization-warnings = true
+
+# Internal value, do not edit or your changes may be arbitrarily reset
+config-version = 1
diff --git a/config/chunky/config.json b/config/chunky/config.json
new file mode 100644
index 0000000..b6d263f
--- /dev/null
+++ b/config/chunky/config.json
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "language": "en",
+ "continueOnRestart": false,
+ "forceLoadExistingChunks": false,
+ "silent": false,
+ "updateInterval": 1
+} \ No newline at end of file
diff --git a/config/comforts-server.toml b/config/comforts-server.toml
new file mode 100644
index 0000000..b5755f0
--- /dev/null
+++ b/config/comforts-server.toml
@@ -0,0 +1,38 @@
+#If enabled, players automatically attempt to use sleeping bags when placed.
+autoUse = true
+#If enabled, players cannot sleep again for a period of time after sleeping.
+restrictSleeping = false
+#If restrictSleeping is true, this value will determine the length of wait time (larger numbers sleep sooner).
+#Range: 1.0 ~ 20.0
+restMultiplier = 2.0
+#The time of day that hammocks can be used.
+#Allowed Values: NONE, DAY, NIGHT, DAY_OR_NIGHT
+hammockUse = "DAY"
+#The time of day that sleeping bags can be used.
+#Allowed Values: NONE, DAY, NIGHT, DAY_OR_NIGHT
+sleepingBagUse = "NIGHT"
+#What percentage of players must sleep to skip the day.
+#A percentage value of 0 will allow the day to be skipped by just 1 player, and a percentage value of 100 will require all players to sleep before skipping the day.
+#A value of less than 0 will default to the playerSleepingPercentage game rule.
+#
+#Range: -1 ~ 100
+daySleepingPercentage = -1
+#The amount of time, in ticks, to add or remove from the new time after sleeping through a night.
+#Range: -2000 ~ 2000
+dayWakeTimeOffset = 0
+#The amount of time, in ticks, to add or remove from the new time after sleeping through a day.
+#Range: -2000 ~ 2000
+nightWakeTimeOffset = 0
+#If enabled, attempting to sleep in hammocks stops phantoms from spawning.
+hammocksStopPhantoms = true
+#If enabled, attempting to sleep in sleeping bags stops phantoms from spawning.
+sleepingBagsStopPhantoms = true
+#The percentage chance that a sleeping bag will break upon use.
+#Range: 0 ~ 100
+sleepingBagBreakChance = 0
+#The value that will be multiplied by a player's luck then added to sleepingBagBreakChance.
+#Range: -1.0 ~ 1.0
+sleepingBagBreakChanceLuckMultiplier = 0.0
+#The status effects to apply to players after using the sleeping bag.
+#Format: effect;duration(secs);power
+sleepingBagEffects = []
diff --git a/config/create-client.toml b/config/create-client.toml
new file mode 100644
index 0000000..410701c
--- /dev/null
+++ b/config/create-client.toml
@@ -0,0 +1,143 @@
+#.
+#Client-only settings - If you're looking for general settings, look inside your worlds serverconfig folder!
+[client]
+ #.
+ #Show item descriptions on Shift and controls on Ctrl.
+ enableTooltips = true
+ #.
+ #Display a tooltip when looking at overstressed components.
+ enableOverstressedTooltip = true
+ #.
+ #Log a stack-trace when rendering issues happen within a moving contraption.
+ explainRenderErrors = false
+ #.
+ #Higher density means more spawned particles.
+ #Range: 0.0 ~ 1.0
+ fanParticleDensity = 0.5
+ #.
+ #[in Blocks]
+ #Maximum Distance to the player at which items in Blocks' filter slots will be displayed
+ #Range: 1.0 ~ 3.4028234663852886E38
+ filterItemRenderDistance = 10.0
+ #.
+ #Choose the menu row that the Create config button appears on in the main menu
+ #Set to 0 to disable the button altogether
+ #Range: 0 ~ 4
+ mainMenuConfigButtonRow = 2
+ #.
+ #Offset the Create config button in the main menu by this many pixels on the X axis
+ #The sign (-/+) of this value determines what side of the row the button appears on (left/right)
+ #Range: > -2147483648
+ mainMenuConfigButtonOffsetX = -4
+ #.
+ #Choose the menu row that the Create config button appears on in the in-game menu
+ #Set to 0 to disable the button altogether
+ #Range: 0 ~ 5
+ ingameMenuConfigButtonRow = 3
+ #.
+ #Offset the Create config button in the in-game menu by this many pixels on the X axis
+ #The sign (-/+) of this value determines what side of the row the button appears on (left/right)
+ #Range: > -2147483648
+ ingameMenuConfigButtonOffsetX = -4
+ #.
+ #Setting this to true will prevent Create from sending you a warning when playing with Fabulous graphics enabled
+ ignoreFabulousWarning = false
+ #.
+ #Disable to prevent being rotated while seated on a Moving Contraption
+ rotateWhenSeated = true
+ #.
+ #The fluid unit that will be displayed when viewing fluids
+ #Example: 1000 mB or 81000 Droplets
+ #Allowed Values: DROPLETS, MILLIBUCKETS
+ fluidUnitType = "MILLIBUCKETS"
+ #.
+ #Determines if the fluid unit should be simplified
+ simplifyFluidUnit = true
+ #.
+ #Vertical offset for the Toolbox Hotbar overlay.
+ #Range: > -2147483648
+ toolboxHotbarOverlayOffset = 0
+
+ #.
+ #Configure your vision range when submerged in Create's custom fluids
+ [client.fluidFogSettings]
+ #.
+ #The vision range through honey will be multiplied by this factor
+ #Range: 0.125 ~ 256.0
+ honey = 1.0
+ #.
+ #The vision range though chocolate will be multiplied by this factor
+ #Range: 0.125 ~ 256.0
+ chocolate = 1.0
+
+ #.
+ #Settings for the Goggle Overlay
+ [client.goggleOverlay]
+ #.
+ #Offset the overlay from goggle- and hover- information by this many pixels on the respective axis; Use /create overlay
+ #Range: > -2147483648
+ overlayOffsetX = 20
+ #.
+ #Offset the overlay from goggle- and hover- information by this many pixels on the respective axis; Use /create overlay
+ #Range: > -2147483648
+ overlayOffsetY = 0
+ #.
+ #Enable this to use your custom colors for the Goggle- and Hover- Overlay
+ customColorsOverlay = false
+ #.
+ #The custom background color to use for the Goggle- and Hover- Overlays, if enabled
+ #[in Hex: #AaRrGgBb]
+ #[@cui:IntDisplay:#]
+ #Range: > -2147483648
+ customBackgroundOverlay = -267386864
+ #.
+ #The custom top color of the border gradient to use for the Goggle- and Hover- Overlays, if enabled
+ #[in Hex: #AaRrGgBb]
+ #[@cui:IntDisplay:#]
+ #Range: > -2147483648
+ customBorderTopOverlay = 1347420415
+ #.
+ #The custom bot color of the border gradient to use for the Goggle- and Hover- Overlays, if enabled
+ #[in Hex: #AaRrGgBb]
+ #[@cui:IntDisplay:#]
+ #Range: > -2147483648
+ customBorderBotOverlay = 1344798847
+
+ #.
+ #Sound settings
+ [client.sound]
+ #.
+ #Make cogs rumble and machines clatter.
+ enableAmbientSounds = true
+ #.
+ #Maximum volume modifier of Ambient noise
+ #Range: 0.0 ~ 1.0
+ ambientVolumeCap = 0.10000000149011612
+
+ #.
+ #Mod Integration and JEI
+ [client.jeiIntegration]
+ #.
+ #Whether to auto-update the JEI search when searching in the stock keeper UI
+ syncJeiSearch = true
+
+ #.
+ #Railway related settings
+ [client.trains]
+ #.
+ #How far away the Camera should zoom when seated on a train
+ #Range: 0.0 ~ 3.4028234663852886E38
+ mountedZoomMultiplier = 3.0
+ #.
+ #Display nodes and edges of a Railway Network while f3 debug mode is active
+ showTrackGraphOnF3 = false
+ #.
+ #Additionally display materials of a Rail Network while f3 debug mode is active
+ showExtendedTrackGraphOnF3 = false
+ #.
+ #Display Track Networks and Trains on supported map mods
+ showTrainMapOverlay = true
+ #.
+ #Track Network Color on maps
+ #Allowed Values: RED, GREY, WHITE
+ trainMapColorTheme = "RED"
diff --git a/config/create-common.toml b/config/create-common.toml
new file mode 100644
index 0000000..0e4b102
--- /dev/null
+++ b/config/create-common.toml
@@ -0,0 +1,7 @@
+#.
+#Modify Create's impact on your terrain
+[worldgen]
+ #.
+ #.
+ #Prevents all worldgen added by Create from taking effect
+ disableWorldGen = false
diff --git a/config/create-server.toml b/config/create-server.toml
new file mode 100644
index 0000000..2cf3df0
--- /dev/null
+++ b/config/create-server.toml
@@ -0,0 +1,544 @@
+#.
+#The Backbone of Create
+[infrastructure]
+ #.
+ #[in Ticks]
+ #The amount of time a server waits before sending out tickrate synchronization packets.
+ #These packets help animations to be more accurate when tps is below 20.
+ #Range: > 5
+ tickrateSyncTimer = 20
+
+#.
+#Packmakers' control panel for internal recipe compat
+[recipes]
+ #.
+ #.
+ #Allow the Mechanical Press to process entire stacks at a time.
+ bulkPressing = false
+ #.
+ #Allow the Mechanical Saw to process entire stacks at a time.
+ bulkCutting = false
+ #.
+ #Allow supported potions to be brewed by a Mechanical Mixer + Basin.
+ allowBrewingInMixer = true
+ #.
+ #Allow any shapeless crafting recipes to be processed by a Mechanical Mixer + Basin.
+ allowShapelessInMixer = true
+ #.
+ #Allow any single-ingredient 2x2 or 3x3 crafting recipes to be processed by a Mechanical Press + Basin.
+ allowShapedSquareInPress = true
+ #.
+ #Allow any standard crafting recipes to be processed by Mechanical Crafters.
+ allowRegularCraftingInCrafter = true
+ #.
+ #The Maximum amount of ingredients that can be used to craft Firework Rockets using Mechanical Crafters.
+ #Range: > 1
+ maxFireworkIngredientsInCrafter = 9
+ #.
+ #Allow any stonecutting recipes to be processed by a Mechanical Saw.
+ allowStonecuttingOnSaw = true
+ #.
+ #Allow Spouts to interact with Casting Tables and Basins from Tinkers' Construct.
+ allowCastingBySpout = true
+ #.
+ #Allow Spouts to fill the Petal Apothecary from Botania.
+ allowFillingBySpout = true
+ #.
+ #Display vanilla Log-stripping interactions in JEI.
+ displayLogStrippingRecipes = true
+ #.
+ #The amount of Light sources destroyed before Chromatic Compound turns into Refined Radiance.
+ #Range: > 1
+ lightSourceCountForRefinedRadiance = 10
+ #.
+ #Allow the standard in-world Refined Radiance recipes.
+ enableRefinedRadianceRecipe = true
+ #.
+ #Allow the standard in-world Shadow Steel recipe.
+ enableShadowSteelRecipe = true
+
+#.
+#Parameters and abilities of Create's kinetic mechanisms
+[kinetics]
+ #.
+ #.
+ #Disable the Stress mechanic altogether.
+ disableStress = false
+ #.
+ #Maximum length in blocks of mechanical belts.
+ #Range: > 5
+ maxBeltLength = 20
+ #.
+ #Maximum length in blocks of chain conveyor connections.
+ #Range: > 5
+ maxChainConveyorLength = 32
+ #.
+ #Maximum amount of connections each chain conveyor can have.
+ #Range: > 1
+ maxChainConveyorConnections = 4
+ #.
+ #Damage dealt by active Crushing Wheels.
+ #Range: > 0
+ crushingDamage = 4
+ #.
+ #[in Revolutions per Minute]
+ #Maximum allowed rotation speed for any Kinetic Block.
+ #Range: > 64
+ maxRotationSpeed = 256
+ #.
+ #Select what mobs should ignore Deployers when attacked by them.
+ #Allowed Values: ALL, CREEPERS, NONE
+ ignoreDeployerAttacks = "CREEPERS"
+ #.
+ #Game ticks between Kinetic Blocks checking whether their source is still valid.
+ #Range: > 5
+ kineticValidationFrequency = 60
+ #.
+ #multiplier used for calculating exhaustion from speed when a crank is turned.
+ #Range: 0.0 ~ 1.0
+ crankHungerMultiplier = 0.009999999776482582
+ #.
+ #Amount of sail-type blocks required for a windmill to assemble successfully.
+ #Range: > 0
+ minimumWindmillSails = 8
+ #.
+ #Number of sail-type blocks required to increase windmill speed by 1RPM.
+ #Range: > 1
+ windmillSailsPerRPM = 8
+ #.
+ #Max Distance in blocks a Weighted Ejector can throw
+ #Range: > 0
+ maxEjectorDistance = 32
+ #.
+ #Time in ticks until the next item launched by an ejector scans blocks for potential collisions
+ #Range: > 10
+ ejectorScanInterval = 120
+
+ #.
+ #Encased Fan
+ [kinetics.encasedFan]
+ #.
+ #Maximum distance in blocks Fans can push entities.
+ #Range: > 5
+ fanPushDistance = 20
+ #.
+ #Maximum distance in blocks from where Fans can pull entities.
+ #Range: > 5
+ fanPullDistance = 20
+ #.
+ #Game ticks between Fans checking for anything blocking their air flow.
+ #Range: > 10
+ fanBlockCheckRate = 30
+ #.
+ #[in Revolutions per Minute]
+ #Rotation speed at which the maximum stats of fans are reached.
+ #Range: > 64
+ fanRotationArgmax = 256
+ #.
+ #Game ticks required for a Fan-based processing recipe to take effect.
+ #Range: > 0
+ fanProcessingTime = 150
+
+ #.
+ #Moving Contraptions
+ [kinetics.contraptions]
+ #.
+ #Maximum amount of blocks in a structure movable by Pistons, Bearings or other means.
+ #Range: > 1
+ maxBlocksMoved = 2048
+ #.
+ #Maximum value of a chassis attachment range.
+ #Range: > 1
+ maxChassisRange = 16
+ #.
+ #Maximum amount of extension poles behind a Mechanical Piston.
+ #Range: > 1
+ maxPistonPoles = 64
+ #.
+ #Max length of rope available off a Rope Pulley.
+ #Range: > 1
+ maxRopeLength = 384
+ #.
+ #Maximum allowed distance of two coupled minecarts.
+ #Range: > 1
+ maxCartCouplingLength = 32
+ #.
+ #Maximum depth of blocks filled in using a Mechanical Roller.
+ #Range: > 1
+ rollerFillDepth = 12
+ #.
+ #Whether minecart contraptions can be picked up in survival mode.
+ survivalContraptionPickup = true
+ #.
+ #Whether minecart contraptions can be placed from items.
+ contraptionPlacing = true
+ #.
+ #Configure how Spawner blocks can be moved by contraptions.
+ #Allowed Values: MOVABLE, NO_PICKUP, UNMOVABLE
+ movableSpawners = "NO_PICKUP"
+ #.
+ #Configure how Budding Amethyst can be moved by contraptions.
+ #Allowed Values: MOVABLE, NO_PICKUP, UNMOVABLE
+ amethystMovement = "NO_PICKUP"
+ #.
+ #Configure how Obsidian blocks can be moved by contraptions.
+ #Allowed Values: MOVABLE, NO_PICKUP, UNMOVABLE
+ movableObsidian = "UNMOVABLE"
+ #.
+ #Configure how Reinforced Deepslate blocks can be moved by contraptions.
+ #Allowed Values: MOVABLE, NO_PICKUP, UNMOVABLE
+ movableReinforcedDeepslate = "UNMOVABLE"
+ #.
+ #Whether items mined or harvested by contraptions should be placed in their mounted storage.
+ moveItemsToStorage = true
+ #.
+ #Whether harvesters should break crops that aren't fully grown.
+ harvestPartiallyGrown = false
+ #.
+ #Whether harvesters should replant crops after harvesting.
+ harvesterReplants = true
+ #.
+ #Whether minecart contraptions can be placed into container items.
+ minecartContraptionInContainers = false
+ #.
+ #Whether stabilised bearings create a separated entity even on non-rotating contraptions.
+ #[Technical]
+ stabiliseStableContraptions = false
+ #.
+ #Whether the players hitbox should be expanded to the size of the contraption hitbox.
+ #[Technical]
+ syncPlayerPickupHitboxWithContraptionHitbox = false
+ #.
+ #Whether to prevent block dropping when contraption is placed inside in-world blocks.
+ noDropWhenContraptionReplaceBlocks = false
+
+ #.
+ #Configure speed/capacity levels for requirements and indicators.
+ [kinetics.stats]
+ #.
+ #[in Revolutions per Minute]
+ #Minimum speed of rotation to be considered 'medium'
+ #Range: 0.0 ~ 4096.0
+ mediumSpeed = 30.0
+ #.
+ #[in Revolutions per Minute]
+ #Minimum speed of rotation to be considered 'fast'
+ #Range: 0.0 ~ 65535.0
+ fastSpeed = 100.0
+ #.
+ #[in Stress Units]
+ #Minimum stress impact to be considered 'medium'
+ #Range: 0.0 ~ 4096.0
+ mediumStressImpact = 4.0
+ #.
+ #[in Stress Units]
+ #Minimum stress impact to be considered 'high'
+ #Range: 0.0 ~ 65535.0
+ highStressImpact = 8.0
+ #.
+ #[in Stress Units]
+ #Minimum added Capacity by sources to be considered 'medium'
+ #Range: 0.0 ~ 4096.0
+ mediumCapacity = 256.0
+ #.
+ #[in Stress Units]
+ #Minimum added Capacity by sources to be considered 'high'
+ #Range: 0.0 ~ 65535.0
+ highCapacity = 1024.0
+
+ #.
+ #Fine tune the kinetic stats of individual components
+ [kinetics.stressValues.v2]
+
+ #.
+ #.
+ #[in Stress Units]
+ #Configure the individual stress impact of mechanical blocks. Note that this cost is doubled for every speed increase it receives.
+ [kinetics.stressValues.v2.impact]
+ brass_encased_shaft = 0.0
+ turntable = 4.0
+ clutch = 0.0
+ mechanical_mixer = 4.0
+ gearbox = 0.0
+ mechanical_bearing = 4.0
+ copper_backtank = 4.0
+ hose_pulley = 4.0
+ display_board = 0.0
+ crushing_wheel = 8.0
+ adjustable_chain_gearshift = 0.0
+ millstone = 4.0
+ rotation_speed_controller = 0.0
+ sticky_mechanical_piston = 4.0
+ mechanical_crafter = 2.0
+ deployer = 4.0
+ elevator_pulley = 4.0
+ stressometer = 0.0
+ cogwheel = 0.0
+ encased_chain_drive = 0.0
+ belt = 0.0
+ brass_encased_large_cogwheel = 0.0
+ weighted_ejector = 2.0
+ chain_conveyor = 1.0
+ mechanical_saw = 4.0
+ flywheel = 0.0
+ mechanical_piston = 4.0
+ speedometer = 0.0
+ brass_encased_cogwheel = 0.0
+ clockwork_bearing = 4.0
+ mechanical_press = 8.0
+ mechanical_drill = 4.0
+ andesite_encased_shaft = 0.0
+ netherite_backtank = 4.0
+ mechanical_arm = 2.0
+ sequenced_gearshift = 0.0
+ andesite_encased_large_cogwheel = 0.0
+ shaft = 0.0
+ cuckoo_clock = 1.0
+ gearshift = 0.0
+ rope_pulley = 4.0
+ andesite_encased_cogwheel = 0.0
+ large_cogwheel = 0.0
+ encased_fan = 2.0
+ mysterious_cuckoo_clock = 1.0
+ gantry_shaft = 0.0
+ mechanical_pump = 4.0
+
+ #.
+ #[in Stress Units]
+ #Configure how much stress a source can accommodate for.
+ [kinetics.stressValues.v2.capacity]
+ steam_engine = 1024.0
+ water_wheel = 32.0
+ copper_valve_handle = 8.0
+ hand_crank = 8.0
+ creative_motor = 16384.0
+ large_water_wheel = 128.0
+ windmill_bearing = 512.0
+
+#.
+#Create's liquid manipulation tools
+[fluids]
+ #.
+ #.
+ #[in Buckets]
+ #The amount of liquid a tank can hold per block.
+ #Range: > 1
+ fluidTankCapacity = 8
+ #.
+ #[in Blocks]
+ #The maximum height a fluid tank can reach.
+ #Range: > 1
+ fluidTankMaxHeight = 32
+ #.
+ #[in Blocks]
+ #The maximum distance a mechanical pump can push or pull liquids on either side.
+ #Range: > 1
+ mechanicalPumpRange = 16
+ #.
+ #[in Blocks]
+ #The maximum distance a hose pulley can draw fluid blocks from.
+ #Range: > 1
+ hosePulleyRange = 128
+ #.
+ #[in Blocks]
+ #[-1 to disable this behaviour]
+ #The minimum amount of fluid blocks the hose pulley needs to find before deeming it an infinite source.
+ #Range: > -1
+ hosePulleyBlockThreshold = 10000
+ #.
+ #Whether hose pulleys should continue filling up above-threshold sources.
+ fillInfinite = false
+ #.
+ #Configure which fluids can be drained infinitely.
+ #Allowed Values: ALLOW_ALL, DENY_ALL, ALLOW_BY_TAG, DENY_BY_TAG
+ bottomlessFluidMode = "ALLOW_BY_TAG"
+ #.
+ #Whether hose pulleys should be allowed to place fluid sources.
+ fluidFillPlaceFluidSourceBlocks = true
+ #.
+ #Whether open-ended pipes should be allowed to place fluid sources.
+ pipesPlaceFluidSourceBlocks = true
+
+#.
+#Tweaks for logistical components
+[logistics]
+ #.
+ #.
+ #The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone.
+ #Range: > 1
+ defaultExtractionTimer = 8
+ #.
+ #The amount of ticks a portable storage interface waits for transfers until letting contraptions move along.
+ #Range: > 1
+ psiTimeout = 60
+ #.
+ #Maximum distance in blocks a Mechanical Arm can reach across.
+ #Range: > 1
+ mechanicalArmRange = 5
+ #.
+ #Maximum distance in blocks a Package Port can be placed at from its target.
+ #Range: > 1
+ packagePortRange = 5
+ #.
+ #Maximum possible range in blocks of redstone link connections.
+ #Range: > 1
+ linkRange = 256
+ #.
+ #Maximum possible distance in blocks between display links and their target.
+ #Range: > 1
+ displayLinkRange = 64
+ #.
+ #The total amount of stacks a vault can hold per block in size.
+ #Range: 1 ~ 2048
+ vaultCapacity = 20
+ #.
+ #The amount of packages a chain conveyor can carry at a time.
+ #Range: > 1
+ chainConveyorCapacity = 20
+ #.
+ #The amount of ticks a brass tunnel waits between distributions.
+ #Range: 1 ~ 10
+ brassTunnelTimer = 10
+ #.
+ #The amount of ticks a factory gauge waits between requests.
+ #Range: > 5
+ factoryGaugeTimer = 100
+ #.
+ #Whether hostile mobs walking near a seat will start riding it.
+ seatHostileMobs = true
+
+#.
+#Everything related to Schematic tools
+[schematics]
+ #.
+ #.
+ #Whether placing a Schematic directly in Creative Mode should replace world blocks with Air
+ creativePrintIncludesAir = false
+ #.
+ #The amount of Schematics a player can upload until previous ones are overwritten.
+ #Range: > 1
+ maxSchematics = 10
+ #.
+ #[in KiloBytes]
+ #The maximum allowed file size of uploaded Schematics.
+ #Range: > 16
+ maxTotalSchematicSize = 256
+ #.
+ #[in Bytes]
+ #The maximum packet size uploaded Schematics are split into.
+ #Range: 256 ~ 32767
+ maxSchematicPacketSize = 1024
+ #.
+ #Amount of game ticks without new packets arriving until an active schematic upload process is discarded.
+ #Range: > 100
+ schematicIdleTimeout = 600
+
+ #.
+ #Schematicannon
+ [schematics.schematicannon]
+ #.
+ #Amount of game ticks between shots of the cannon. Higher => Slower
+ #Range: > 1
+ schematicannonDelay = 10
+ #.
+ #Amount of blocks a Schematicannon can print per Gunpowder item provided.
+ #Range: > 1
+ schematicannonShotsPerGunpowder = 400
+
+#.
+#Equipment and gadgets added by Create
+[equipment]
+ #.
+ #.
+ #The Maximum Distance to an active mirror for the symmetry wand to trigger.
+ #Range: > 10
+ maxSymmetryWandRange = 50
+ #.
+ #The Maximum Distance a Block placed by Create's placement assist will have to its interaction point.
+ #Range: > 3
+ placementAssistRange = 12
+ #.
+ #The Maximum Distance at which a Toolbox can interact with Players' Inventories.
+ #Range: > 1
+ toolboxRange = 10
+ #.
+ #The Maximum volume of Air that can be stored in a backtank = Seconds of underwater breathing
+ #Range: > 1
+ airInBacktank = 900
+ #.
+ #The volume of Air added by each level of the backtanks Capacity Enchantment
+ #Range: > 1
+ enchantedBacktankCapacity = 300
+ #.
+ #Amount of free Extendo Grip actions provided by one filled Copper Backtank. Set to 0 makes Extendo Grips unbreakable
+ #Range: > 0
+ maxExtendoGripActions = 1000
+ #.
+ #Amount of free Potato Cannon shots provided by one filled Copper Backtank. Set to 0 makes Potato Cannons unbreakable
+ #Range: > 0
+ maxPotatoCannonShots = 200
+ #.
+ #Weather Potato Cannon shots can modify the world or not. This includes placing blocks and changing entities.
+ potatoCannonWorldModification = true
+
+#.
+#Create's builtin Railway systems
+[trains]
+ #.
+ #.
+ #Whether moving Trains can hurt colliding mobs and players.
+ trainsCauseDamage = true
+ #.
+ #Maximum length of track that can be placed as one batch or turn.
+ #Range: 16 ~ 128
+ maxTrackPlacementLength = 32
+ #.
+ #Maximum length of a Train Stations' assembly track.
+ #Range: > 5
+ maxAssemblyLength = 128
+ #.
+ #Maximum amount of bogeys assembled as a single Train.
+ #Range: > 1
+ maxBogeyCount = 20
+ #.
+ #Relative speed of a manually controlled Train compared to a Scheduled one.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ manualTrainSpeedModifier = 0.75
+
+ #.
+ #Standard Trains
+ [trains.trainStats]
+ #.
+ #[in Blocks/Second]
+ #The top speed of any assembled Train.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ trainTopSpeed = 28.0
+ #.
+ #[in Blocks/Second]
+ #The top speed of Trains during a turn.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ trainTurningTopSpeed = 14.0
+ #.
+ #[in Blocks/Second²]
+ #The acceleration of any assembled Train.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ trainAcceleration = 3.0
+
+ #.
+ #Powered Trains
+ [trains.poweredTrainStats]
+ #.
+ #[in Blocks/Second]
+ #The top speed of powered Trains.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ poweredTrainTopSpeed = 40.0
+ #.
+ #[in Blocks/Second]
+ #The top speed of powered Trains during a turn.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ poweredTrainTurningTopSpeed = 20.0
+ #.
+ #[in Blocks/Second²]
+ #The acceleration of powered Trains.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ poweredTrainAcceleration = 3.0
diff --git a/config/create_new_age-client.toml b/config/create_new_age-client.toml
new file mode 100644
index 0000000..50f652e
--- /dev/null
+++ b/config/create_new_age-client.toml
@@ -0,0 +1,7 @@
+#Choose how many wire sections are rendered in one meter (block).
+#Decreasing this value can theoretically improve performance
+#Range: > 1
+wireSectionsPerMeter = 10
+#...wire thickness...
+#Range: 0.0 ~ 1.7976931348623157E308
+wireThickness = 0.03
diff --git a/config/create_new_age-common.toml b/config/create_new_age-common.toml
new file mode 100644
index 0000000..1e85e47
--- /dev/null
+++ b/config/create_new_age-common.toml
@@ -0,0 +1,115 @@
+#Responsible for how much energy is generated per 1 stress unit in a tick
+#Default value is supposed to be compatible with default configuration of Create: Crafts and Additions
+#Range: 0.0 ~ 1.7976931348623157E308
+suToEnergy = 0.029296875
+#How many coils can the carbon brushes collect energy from
+#Range: > 0
+maxCoils = 8
+#Multiplier of wire conductivity
+#Range: 0.0 ~ 1.7976931348623157E308
+conductivityMultiplier = 1.0
+#Maximum depth of network pathfinding
+#Range: > 1
+maxPathfindingDepth = 24
+#Multiplier of energising speed
+#Range: 0.0 ~ 1.7976931348623157E308
+energiserSpeedMultiplier = 1.0
+#Multiplier for the temperature at which components overheat. Set to -1 to disable overheating.
+#Range: -1.0 ~ 1.7976931348623157E308
+overheatingMultiplier = 1.0
+#Multiplier for how much heat pipes obtain from passive heat sources like Lava or even Boilers.
+#Range: 0.0 ~ 1.7976931348623157E308
+passiveHeatSourceMultiplier = 1.0
+#How much heat do pipes lose per second.
+#Range: 0.0 ~ 1.7976931348623157E308
+passivePipeHeatLoss = 1.0
+#Multiplier for how much heat a boiler needs.
+#Range: 0.0 ~ 1.7976931348623157E308
+boilerRequiredHeatMultiplier = 1.0
+#Multiplier for how much heat solar panels output.
+#Range: 0.0 ~ 1.7976931348623157E308
+solarPanelHeatMultiplier = 1.0
+#Maximum wire length
+#Range: > 1
+maxWireLength = 16
+#Internal energy capacity of a street light
+#Range: > 0
+streetLightCapacity = 10000
+#How much extracted per tick multiplied by current light level
+#Range: > 0
+streetLightLevelExtraction = 1
+
+[Motors]
+ #Maximum motor SU multiplier
+ #Range: 0.0 ~ 1.7976931348623157E308
+ motorSuMultiplier = 1.0
+ #Internal energy capacity of a basic motor
+ #Range: > 1
+ basicMotorCapacity = 16000
+ #Internal energy capacity of an advanced motor
+ #Range: > 1
+ advancedMotorCapacity = 64000
+ #Internal energy capacity of a reinforced motor
+ #Range: > 1
+ reinforcedMotorCapacity = 128000
+ #Top Speed of a basic motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ basicMotorSpeed = 128.0
+ #Top Speed of an advanced motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ advancedMotorSpeed = 256.0
+ #Top Speed of a reinforced motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ reinforcedMotorSpeed = 256.0
+ #Generated SU of a basic motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ basicMotorStress = 512.0
+ #Generated SU of an advanced motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ advancedMotorStress = 2048.0
+ #Generated SU of a reinforced motor
+ #Range: 1.0 ~ 1.7976931348623157E308
+ reinforcedMotorStress = 8192.0
+
+["Motor Extensions"]
+ #Power Multiplier of a basic motor extension
+ #Range: 1.0 ~ 1.7976931348623157E308
+ basicMotorExtensionMultiplier = 2.0
+ #Power Multiplier of a basic motor extension
+ #Range: 1.0 ~ 1.7976931348623157E308
+ advancedMotorExtensionMultiplier = 8.0
+ #Extra energy capacity of a basic motor extension
+ #Range: > 1
+ basicMotorExtensionExtraCapacity = 64000
+ #Extra energy capacity of an advanced motor extension
+ #Range: > 1
+ advancedMotorExtensionExtraCapacity = 256000
+ #Basic motor extension scroll step
+ #Range: > 1
+ basicMotorExtensionScrollStep = 1
+ #Advanced motor extension scroll step
+ #Range: > 1
+ advancedMotorExtensionScrollStep = 8
+
+[Reactor]
+ #How many reactor rods can a fuel inserter or a heat vent have in a single direction
+ #Range: > 0
+ maxRodsInDirection = 32
+ #How strong the explosion is on destruction of a charged reactor rod
+ #Range: 0.0 ~ 1.7976931348623157E308
+ radiationDamageExplosionScale = 2.0
+ #Whether the explosion of a charged reactor rod should should cause fire
+ radiationDamageExplosionFire = true
+ #The multiplier of the explosion caused when reactor rods overheat
+ #Range: 0.0 ~ 1.7976931348623157E308
+ reactorOverheatExplosionMultiplier = 0.9
+ #Whether radiation poisoning should play a distinct geiger counter sound
+ geigerCounterSounds = true
+ #Whether radiation poisoning should cause nausea
+ nauseaInducingRadiation = true
+ #How much heat per tick a nuclear reactor rod generate.
+ #Range: 0.0 ~ 1.7976931348623157E308
+ ReactorRodHeat = 30.0
+ #How much heat per tick a nuclear reactor rod loses above the 16000*overheatingMultiplier.
+ #Range: 0.0 ~ 1.7976931348623157E308
+ ReactorRodHeatLoss = 25.0
diff --git a/config/createaddition-common.toml b/config/createaddition-common.toml
new file mode 100644
index 0000000..85cf560
--- /dev/null
+++ b/config/createaddition-common.toml
@@ -0,0 +1,148 @@
+#Make sure config changes are duplicated on both Clients and the Server when running a dedicated Server,
+# as the config isnt synced between Clients and Server.
+#General Settings
+[general]
+ #Forge Energy conversion rate (in E/t at 256 RPM, value is the E/t generated and consumed is at 256rpm).
+ #Range: > 0
+ fe_at_max_rpm = 240
+ #Max stress for the Alternator and Electric Motor (in SU at 256 RPM).
+ #Range: > 0
+ max_stress = 16384
+ #If audio should be enabled or not.
+ audio_enabled = true
+
+#Electric Motor
+[electric_motor]
+ #Electric Motor min/max RPM.
+ #Range: > 1
+ motor_rpm_range = 256
+ #Electric Motor minimum required energy consumption in E/t.
+ #Range: > 0
+ motor_min_consumption = 8
+ #Electric Motor max input in E (Energy transfer not consumption).
+ #Range: 0 ~ 9223372036854775807
+ motor_max_input = 5000
+ #Electric Motor internal capacity in E.
+ #Range: 0 ~ 9223372036854775807
+ motor_capacity = 5000
+
+#Alternator
+[alternator]
+ #Alternator max input in E (Energy transfer, not generation).
+ #Range: 0 ~ 9223372036854775807
+ generator_max_output = 5000
+ #Alternator internal capacity in E.
+ #Range: 0 ~ 9223372036854775807
+ generator_capacity = 5000
+ #Alternator efficiency relative to base conversion rate.
+ #Range: 0.01 ~ 1.0
+ generator_efficiency = 0.75
+
+#Rolling Mill
+[rolling_mill]
+ #Rolling Mill duration in ticks.
+ #Range: > 0
+ rolling_mill_processing_duration = 120
+ #Rolling Mill base stress impact.
+ #Range: 0 ~ 1024
+ rolling_mill_stress = 8
+
+#Wires
+[wires]
+ #Small Connector max input in FE/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ small_connector_max_input = 1000
+ #Small Connector max output in FE/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ small_connector_max_output = 1000
+ #Small Connector max wire length in blocks.
+ #Range: 0 ~ 256
+ small_connector_wire_length = 16
+ #Small Connector With Light energy consumption in FE/t.
+ #Range: 0 ~ 9223372036854775807
+ small_light_connector_consumption = 1
+ #Large Connector max input in FE/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ large_connector_max_input = 5000
+ #Large Connector max output in FE/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ large_connector_max_output = 5000
+ #Large Connector max wire length in blocks.
+ #Range: 0 ~ 256
+ large_connector_wire_length = 32
+ #Ignore checking if block face can support connector.
+ connector_ignore_face_check = true
+ #Allows blocks attached to a connector to freely pass energy to and from the connector network.
+ connector_allow_passive_io = true
+
+#Accumulator
+[accumulator]
+ #Accumulator max input in E/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ accumulator_max_input = 5000
+ #Accumulator max output in E/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ accumulator_max_output = 5000
+ #Accumulator internal capacity per block in E.
+ #Range: 0 ~ 9223372036854775807
+ accumulator_capacity = 2000000
+ #Accumulator max multiblock height.
+ #Range: 1 ~ 8
+ accumulator_max_height = 5
+ #Accumulator max multiblock width.
+ #Range: 1 ~ 8
+ accumulator_max_width = 3
+
+#Portable Energy Interface
+[portable_energy_interface]
+ #PEI max input in E/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ pei_max_input = 5000
+ #PEI max output in E/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ pei_max_output = 5000
+
+#Tesla Coil
+[tesla_coil]
+ #Tesla Coil max input in E/t (Energy transfer).
+ #Range: 0 ~ 9223372036854775807
+ tesla_coil_max_input = 10000
+ #Tesla Coil charge rate in E/t.
+ #Range: 0 ~ 9223372036854775807
+ tesla_coil_charge_rate = 5000
+ #Tesla Coil charge rate in E/t for recipes.
+ #Range: 0 ~ 9223372036854775807
+ tesla_coil_recipe_charge_rate = 2000
+ #Tesla Coil internal capacity in E.
+ #Range: 0 ~ 9223372036854775807
+ tesla_coil_capacity = 40000
+ #Energy consumed when Tesla Coil is fired (in E).
+ #Range: 0 ~ 9223372036854775807
+ tesla_coil_hurt_energy_required = 1000
+ #Hurt range (in blocks/meters).
+ #Range: > 0
+ tesla_coil_hurt_range = 3
+ #Damaged dealt to mobs when Tesla Coil is fired (in half hearts).
+ #Range: > 0
+ tesla_coil_hurt_mob = 3
+ #The duration of the Shocked effect for mobs (in ticks).
+ #Range: > 0
+ tesla_coil_effect_time_mob = 20
+ #Damaged dealt to players when Tesla Coil is fired (in half hearts).
+ #Range: > 0
+ tesla_coil_hurt_player = 2
+ #The duration of the Shocked effect for players (in ticks).
+ #Range: > 0
+ tesla_coil_effect_time_player = 20
+ #Tesla Coil fire interval (in ticks).
+ #Range: > 0
+ tesla_coil_fire_cooldown = 20
+
+#Misc
+[misc]
+ #Diamond Grit Sandpaper durability (number of uses).
+ #Range: > 3
+ diamond_grit_sandpaper_uses = 1024
+ #Barbed Wire Damage.
+ #Range: 0.0 ~ 3.4028234663852886E38
+ barbed_wire_damage = 2.0
diff --git a/config/cristellib/minecraftED.json5 b/config/cristellib/minecraftED.json5
new file mode 100644
index 0000000..3d86d2c
--- /dev/null
+++ b/config/cristellib/minecraftED.json5
@@ -0,0 +1,75 @@
+/*
+ This config file makes it possible to switch off any Minecraft structure.
+ To disable a structure, simply set the value of that structure to "false".
+ To change the rarity of a structure category, use the other file in the folder.
+*/
+{
+ "igloos": {
+ "igloo": true
+ },
+ "desert_pyramids": {
+ "desert_pyramid": true
+ },
+ "end_cities": {
+ "end_city": true
+ },
+ "ocean_ruins": {
+ "ocean_ruin_cold": true,
+ "ocean_ruin_warm": true
+ },
+ "shipwrecks": {
+ "shipwreck": true,
+ "shipwreck_beached": true
+ },
+ "woodland_mansions": {
+ "mansion": true
+ },
+ "ancient_cities": {
+ "ancient_city": true
+ },
+ "buried_treasures": {
+ "buried_treasure": true
+ },
+ "villages": {
+ "village_plains": true,
+ "village_desert": true,
+ "village_savanna": true,
+ "village_snowy": true,
+ "village_taiga": true
+ },
+ "nether_complexes": {
+ "fortress": true,
+ "bastion_remnant": true
+ },
+ "ocean_monuments": {
+ "monument": true
+ },
+ "jungle_temples": {
+ "jungle_pyramid": true
+ },
+ "nether_fossils": {
+ "nether_fossil": true
+ },
+ "mineshafts": {
+ "mineshaft": true,
+ "mineshaft_mesa": true
+ },
+ "pillager_outposts": {
+ "pillager_outpost": true
+ },
+ "swamp_huts": {
+ "swamp_hut": true
+ },
+ "strongholds": {
+ "stronghold": true
+ },
+ "ruined_portals": {
+ "ruined_portal": true,
+ "ruined_portal_desert": true,
+ "ruined_portal_jungle": true,
+ "ruined_portal_swamp": true,
+ "ruined_portal_mountain": true,
+ "ruined_portal_ocean": true,
+ "ruined_portal_nether": true
+ }
+} \ No newline at end of file
diff --git a/config/cristellib/minecraftP.json5 b/config/cristellib/minecraftP.json5
new file mode 100644
index 0000000..3d62c1e
--- /dev/null
+++ b/config/cristellib/minecraftP.json5
@@ -0,0 +1,96 @@
+/*
+This config file makes it possible to change the spacing, separation, salt (and frequency) of Minecraft's structure sets.
+ SPACING --- controls how far a structure can be from others of its kind
+ SEPARATION --- controls how close to each other two structures of the same type can be.
+KEEP IN MIND THAT SPACING ALWAYS NEEDS TO BE HIGHER THAN SEPARATION.
+*/
+{
+ "igloos": {
+ "spacing": 32,
+ "separation": 8,
+ "salt": 14357618
+ },
+ "desert_pyramids": {
+ "spacing": 32,
+ "separation": 8,
+ "salt": 14357617
+ },
+ "end_cities": {
+ "spacing": 20,
+ "separation": 11,
+ "salt": 10387313
+ },
+ "ocean_ruins": {
+ "spacing": 20,
+ "separation": 8,
+ "salt": 14357621
+ },
+ "shipwrecks": {
+ "spacing": 24,
+ "separation": 4,
+ "salt": 165745295
+ },
+ "woodland_mansions": {
+ "spacing": 80,
+ "separation": 20,
+ "salt": 10387319
+ },
+ "ancient_cities": {
+ "spacing": 24,
+ "separation": 8,
+ "salt": 20083232
+ },
+ "buried_treasures": {
+ "spacing": 1,
+ "separation": 0,
+ "frequency": 0.01,
+ "salt": 0
+ },
+ "villages": {
+ "spacing": 34,
+ "separation": 8,
+ "salt": 10387312
+ },
+ "nether_complexes": {
+ "spacing": 27,
+ "separation": 4,
+ "salt": 30084232
+ },
+ "ocean_monuments": {
+ "spacing": 32,
+ "separation": 5,
+ "salt": 10387313
+ },
+ "jungle_temples": {
+ "spacing": 32,
+ "separation": 8,
+ "salt": 14357619
+ },
+ "nether_fossils": {
+ "spacing": 2,
+ "separation": 1,
+ "salt": 14357921
+ },
+ "mineshafts": {
+ "spacing": 1,
+ "separation": 0,
+ "frequency": 0.004,
+ "salt": 0
+ },
+ "pillager_outposts": {
+ "spacing": 32,
+ "separation": 8,
+ "frequency": 0.2,
+ "salt": 165745296
+ },
+ "swamp_huts": {
+ "spacing": 32,
+ "separation": 8,
+ "salt": 14357620
+ },
+ "ruined_portals": {
+ "spacing": 40,
+ "separation": 15,
+ "salt": 34222645
+ }
+} \ No newline at end of file
diff --git a/config/death_knights/enchants/decaying.json5 b/config/death_knights/enchants/decaying.json5
new file mode 100644
index 0000000..ed90bb8
--- /dev/null
+++ b/config/death_knights/enchants/decaying.json5
@@ -0,0 +1,15 @@
+{
+ // Decaying Enchantment.
+ // This enchantment increases the damage dealt by Unholy and Blood spells.
+ //
+ // Whether this enchantment should be enabled or not.
+ "enabled": true,
+ // Maximum level of the enchantment.
+ "max_level": 5,
+ // The minimum cost of the enchantment; at level 1.
+ "min_cost": 10,
+ // The additional cost per level, after level 1.
+ "step_cost": 9,
+ // The bonus damage per level.
+ "bonus_per_level": 0.03
+} \ No newline at end of file
diff --git a/config/death_knights/items/armor_sets.json b/config/death_knights/items/armor_sets.json
new file mode 100644
index 0000000..d444835
--- /dev/null
+++ b/config/death_knights/items/armor_sets.json
@@ -0,0 +1,473 @@
+{
+ "weapons": {},
+ "armor_sets": {
+ "crimson_guard_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "plaguebringer_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "blightbringer_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "frozen_champion_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "crimson_knight_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "icebound_knight_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "initiate_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/config/death_knights/items/jewelry.json b/config/death_knights/items/jewelry.json
new file mode 100644
index 0000000..dd03c7f
--- /dev/null
+++ b/config/death_knights/items/jewelry.json
@@ -0,0 +1,88 @@
+{
+ "items": {
+ "death_knights:blood_dk_ring": {
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "death_knights:unholy_dk_ring": {
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "death_knights:frost_dk_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "death_knights:frost_dk_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "death_knights:blood_dk_necklace": {
+ "attributes": [
+ {
+ "id": "eternal_attributes:blood",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.max_health",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "death_knights:unholy_dk_necklace": {
+ "attributes": [
+ {
+ "id": "eternal_attributes:unholy",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/config/death_knights/loot/jewelry_v2.json5 b/config/death_knights/loot/jewelry_v2.json5
new file mode 100644
index 0000000..50958ba
--- /dev/null
+++ b/config/death_knights/loot/jewelry_v2.json5
@@ -0,0 +1,44 @@
+{
+ "frost_necklace": {
+ "rolls": 1,
+ "chance": 0.2,
+ "loot_tables": [
+ "minecraft:chests/ancient_city_ice_box"
+ ]
+ },
+ "frost_ring": {
+ "rolls": 3,
+ "chance": 0.15,
+ "loot_tables": [
+ "minecraft:chests/ancient_city_ice_box"
+ ]
+ },
+ "unholy_necklace": {
+ "rolls": 1,
+ "chance": 0.2,
+ "loot_tables": [
+ "minecraft:chests/woodland_mansion"
+ ]
+ },
+ "unholy_ring": {
+ "rolls": 3,
+ "chance": 0.1,
+ "loot_tables": [
+ "minecraft:chests/woodland_mansion"
+ ]
+ },
+ "blood_necklace": {
+ "rolls": 1,
+ "chance": 0.2,
+ "loot_tables": [
+ "minecraft:chests/bastion_treasure"
+ ]
+ },
+ "blood_ring": {
+ "rolls": 3,
+ "chance": 0.1,
+ "loot_tables": [
+ "minecraft:chests/bastion_treasure"
+ ]
+ }
+} \ No newline at end of file
diff --git a/config/death_knights/spells/blood/blood_boil.json5 b/config/death_knights/spells/blood/blood_boil.json5
new file mode 100644
index 0000000..faae76b
--- /dev/null
+++ b/config/death_knights/spells/blood/blood_boil.json5
@@ -0,0 +1,21 @@
+{
+ // How frequently the spell damages victims in ticks. 20 ticks is 1 second.
+ // Default: 40 ticks
+ "tick_rate": 40,
+ // The maximum stacks of Blood Plague that Blood Boil will apply.
+ // Default: 2 stacks
+ "max_stacks": 2,
+ // Whether or not the duration of Blood Plague should be reset if the max stacks are reached.
+ // Default: true
+ "reset_duration_if_max_stacks": true,
+ // The radius the death knight has to be for the victim to receive damage when it ticks.
+ // If there are multiple blood death knights within the radius, the victim will only take damage from the closest one.
+ // Default: 5 blocks
+ "radius": 5.0,
+ // The duration of the Blood Plague debuff in ticks. 20 ticks is 1 second.
+ // Default: 600 ticks (30 seconds)
+ "duration_ticks": 600,
+ // The damage scaling of the spell. This multiplies the base blood power of the caster to output damage.
+ // Default: 0.1x
+ "damage_blood_scaling": 0.1
+} \ No newline at end of file
diff --git a/config/death_knights/spells/blood/death_strike.json5 b/config/death_knights/spells/blood/death_strike.json5
new file mode 100644
index 0000000..7e9cd35
--- /dev/null
+++ b/config/death_knights/spells/blood/death_strike.json5
@@ -0,0 +1,11 @@
+{
+ // The amount of health the death knight will heal when Death Strike is used.
+ // Default: 0.10, (10%) of the Death Knight's Max Health
+ "max_health_healing": 0.1,
+ // If the death knight's health is full, should the spell apply an absorption effect instead?
+ // Default: true
+ "apply_absorption_if_full": true,
+ // The duration of the absorption effect in ticks. 20 ticks is 1 second.
+ // Default: 160 ticks (8 seconds)
+ "absorption_duration": 160
+} \ No newline at end of file
diff --git a/config/death_knights/spells/blood/marrowrend.json5 b/config/death_knights/spells/blood/marrowrend.json5
new file mode 100644
index 0000000..fc571e5
--- /dev/null
+++ b/config/death_knights/spells/blood/marrowrend.json5
@@ -0,0 +1,17 @@
+{
+ // The effect to apply to the Death Knight when hitting an enemy.
+ // Default: minecraft:resistance
+ "effect_to_apply": "minecraft:resistance",
+ // The amount of the effect's stacks given when hitting an enemy.
+ // Default: 3 stacks (Resistance III)
+ "stack_amount": 3,
+ // The maximum amount of the effect that Marrowrend should stack up to.
+ // Default: 4 stacks
+ "max_stacks": 4,
+ // The duration of the resistance effect in ticks. 20 ticks is 1 second.
+ // Default: 200 ticks (10 seconds)
+ "effect_duration": 200,
+ // The chance to reduce the stack count by 1 when an enemy hits the Death Knight.
+ // Default: 1.00 (100% chance)
+ "stack_reduction_chance": 1.0
+} \ No newline at end of file
diff --git a/config/death_knights/spells/blood/passive/blood_thirst.json5 b/config/death_knights/spells/blood/passive/blood_thirst.json5
new file mode 100644
index 0000000..e6d90aa
--- /dev/null
+++ b/config/death_knights/spells/blood/passive/blood_thirst.json5
@@ -0,0 +1,5 @@
+{
+ // Defines how much blood power is needed to heal 1% of the maximum health of the player.
+ // Default: 2.5 Blood Power = 1% max health healing
+ "oncepercent_heal_amount": 2.5
+} \ No newline at end of file
diff --git a/config/death_knights/spells/frost/breath_of_agony.json5 b/config/death_knights/spells/frost/breath_of_agony.json5
new file mode 100644
index 0000000..ed7384d
--- /dev/null
+++ b/config/death_knights/spells/frost/breath_of_agony.json5
@@ -0,0 +1,17 @@
+{
+ // How frequently the spell damages entities in ticks. 20 ticks is 1 second.
+ // Default: 5 ticks
+ "tick_rate": 5,
+ // The length of the breath. This applies for both the particles and damage.
+ // Default: 3 blocks
+ "length": 3.0,
+ // The damage scaling of the spell. This multiplies the base frost power of the caster to output damage.
+ // Default: 0.5x
+ "damage_frost_scaling": 0.35,
+ // The multiplier for critical damage. This is multiplied to the damage if the spell crits.
+ // Default: 2.0x
+ "damage_critical_scaling": 2.0,
+ // The amount of ticks the victim gets frozen after being hit. 20 ticks is 1 second.
+ // Default: 20 ticks
+ "frozen_ticks": 20
+} \ No newline at end of file
diff --git a/config/death_knights/spells/frost/obliterate.json5 b/config/death_knights/spells/frost/obliterate.json5
new file mode 100644
index 0000000..550ab74
--- /dev/null
+++ b/config/death_knights/spells/frost/obliterate.json5
@@ -0,0 +1,8 @@
+{
+ // Defines the extension of the Remorseless Winter spell in ticks. 20 ticks is 1 second.
+ // Default: 20 ticks
+ "remorseless_winter_extension_ticks": 20,
+ // Defines the extension of the Breath of Agony spell in ticks. 20 ticks is 1 second.
+ // Default: 40 ticks
+ "breath_of_agony_extension_ticks": 40
+} \ No newline at end of file
diff --git a/config/death_knights/spells/frost/remorseless_winter.json5 b/config/death_knights/spells/frost/remorseless_winter.json5
new file mode 100644
index 0000000..906fabb
--- /dev/null
+++ b/config/death_knights/spells/frost/remorseless_winter.json5
@@ -0,0 +1,20 @@
+{
+ // How frequently the spell damages entities in ticks. 20 ticks is 1 second.
+ // Default: 5 ticks
+ "tick_rate": 5,
+ // The radius of the spell. This applies for both the particles and damage.
+ // Default: 4 blocks
+ "radius": 4.0,
+ // The damage scaling of the spell. This multiplies the base frost power of the caster to output damage.
+ // Default: 0.5x
+ "damage_frost_scaling": 0.25,
+ // The multiplier for critical damage. This is multiplied to the damage if the spell crits.
+ // Default: 2.0x
+ "damage_critical_scaling": 2.0,
+ // The amount of ticks the victim gets frozen after being hit. 20 ticks is 1 second.
+ // Default: 20 ticks
+ "frozen_ticks": 20,
+ // Chance per tick to apply frozen to the target
+ // Default: 0.10 (10%)
+ "frozen_chance": 0.1
+} \ No newline at end of file
diff --git a/config/death_knights/spells/unholy/death_coil.json5 b/config/death_knights/spells/unholy/death_coil.json5
new file mode 100644
index 0000000..bdaffc5
--- /dev/null
+++ b/config/death_knights/spells/unholy/death_coil.json5
@@ -0,0 +1,8 @@
+{
+ // The unholy power multiplier that Death Coil's plague explosion will deal, per stack.
+ "unholy_coefficent": 0.35,
+ // The maxmimum plague stacks that Death Coil will explode.
+ "plague_stacks": 4,
+ // The radius of the plague spread once stacks explode.
+ "spread_radius": 5.0
+} \ No newline at end of file
diff --git a/config/death_knights/spells/unholy/death_grip.json5 b/config/death_knights/spells/unholy/death_grip.json5
new file mode 100644
index 0000000..a2dfab1
--- /dev/null
+++ b/config/death_knights/spells/unholy/death_grip.json5
@@ -0,0 +1,25 @@
+{
+ // The speed at which the target is pulled towards the caster.
+ "pull_speed": 1.8,
+ // A list of entities' ids that cannot be gripped.
+ "entity_blacklist": [
+ "minecraft:warden",
+ "minecraft:ender_dragon",
+ "minecraft:wither"
+ ],
+ // A multiplier of health to not grip the target. For example, at 3.0x, if the target has triple the health of the caster, the target will not be gripped.
+ "health_threshold": 3.0,
+ // A list of effects to apply to the target after it has been gripped. Can be left empty to disable this behavior.
+ "effects": [
+ {
+ "effect_id": "minecraft:slowness",
+ "duration": 80.0,
+ "amplifier": 2.0
+ }
+ ],
+ // The maximum time in ticks that the pull effect can last.
+ "max_pull_time": 100.0,
+ // The minimum distance the target must be from the caster for the spell to know the target was gripped.
+ // If after max_pull_time passes and the target hasn't gotten this close to the caster, the target will get teleported as a last resort.
+ "min_distance": 1.0
+} \ No newline at end of file
diff --git a/config/death_knights/spells/unholy/plagues.json5 b/config/death_knights/spells/unholy/plagues.json5
new file mode 100644
index 0000000..51185fc
--- /dev/null
+++ b/config/death_knights/spells/unholy/plagues.json5
@@ -0,0 +1,21 @@
+{
+ // List of plagues that Unholy Death Knights can apply.
+ // Any effect from any mod can be a plague.
+ // The weight is used to determine the chance of applying the plague, the higher the weight, the higher the chance.
+ // The max stacks is the maximum amount of stacks the plague can have when applied by an ability.
+ // The duration is how long the plague lasts in ticks, applied stacks won't extend this duration.
+ "plagues": [
+ {
+ "effect_id": "death_knights:grevious_plague",
+ "max_stacks": 4,
+ "duration_ticks": 400,
+ "weight": 50
+ },
+ {
+ "effect_id": "death_knights:atrocious_plague",
+ "max_stacks": 4,
+ "duration_ticks": 400,
+ "weight": 50
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/explorerscompass.json b/config/explorerscompass.json
new file mode 100644
index 0000000..28af345
--- /dev/null
+++ b/config/explorerscompass.json
@@ -0,0 +1,32 @@
+{
+ "common": {
+ "allowTeleportComment": "Allows a player to teleport to a located structure when in creative mode, opped, or in cheat mode.",
+ "allowTeleport": true,
+ "maxNextSearchesComment": "The maximum number of times a player can search for the next instance of a located structure, excluding already-found locations. Set to 0 to disable searching for additional structure instances and make the compass always locate the nearest instance.",
+ "maxNextSearches": 100,
+ "displayCoordinatesComment": "Allows players to view the precise coordinates and distance of a located structure on the HUD, rather than relying on the direction the compass is pointing.",
+ "displayCoordinates": true,
+ "maxRadiusComment": "The maximum radius that will be searched for a structure. Raising this value will increase search accuracy but will potentially make the process more resource intensive.",
+ "maxRadius": 10000,
+ "maxSamplesComment": "The maximum number of samples to be taken when searching for a structure.",
+ "maxSamples": 100000,
+ "compassDurabilityComment": "The number of successful structure searches before the compass breaks and must be repaired. Set to 0 to disable durability.",
+ "compassDurability": 0,
+ "defaultXpLevelComment": "The default number of XP levels consumed when searching for a structure. Individual structures can be configured via perStructureXpLevels. Max of 3 levels.",
+ "defaultXpLevel": 0,
+ "perStructureXpLevelsComment": "A map of per-structure XP level costs that override defaultXpLevel. Structures not listed here use defaultXpLevel. Max of 3 levels. The wildcard character * can be used to match any number of characters, and ? can be used to match one character. Ex: {\"minecraft:buried_treasure\":3, \"minecraft:end*\":2, \"minecraft:*village*\":1}",
+ "perStructureXpLevels": {},
+ "structureBlacklistComment": "A list of structures that the compass will not display in the GUI and will not be able to search for. The wildcard character * can be used to match any number of characters, and ? can be used to match one character. Ex (ignore backslashes): [\"minecraft:stronghold\", \"minecraft:endcity\", \"minecraft:*village*\"]",
+ "structureBlacklist": []
+ },
+ "client": {
+ "displayWithChatOpenComment": "Displays compass information even while chat is open.",
+ "displayWithChatOpen": true,
+ "translateStructureNamesComment": "Attempts to translate structure names before fixing the unlocalized names. Translations may not be available for all structures.",
+ "translateStructureNames": true,
+ "overlayLineOffsetComment": "The line offset for information rendered on the HUD.",
+ "overlayLineOffset": 1,
+ "overlaySideComment": "The side for information rendered on the HUD. Ex: LEFT, RIGHT",
+ "overlaySide": "LEFT"
+ }
+} \ No newline at end of file
diff --git a/config/farmersdelight-common.toml b/config/farmersdelight-common.toml
new file mode 100644
index 0000000..5be3e03
--- /dev/null
+++ b/config/farmersdelight-common.toml
@@ -0,0 +1,115 @@
+#Game settings
+[settings]
+ #Farmer's Delight adds crates (3x3) for vanilla crops, similar to Quark and Thermal Cultivation. Should they be craftable?
+ enableVanillaCropCrates = true
+ #Should Novice and Apprentice Farmers buy this mod's crops? (May reduce chances of other trades appearing)
+ farmersBuyFDCrops = true
+ #Should the Wandering Trader sell some of this mod's items? (Currently includes crop seeds and onions)
+ wanderingTraderSellsFDItems = true
+ #How often (in percentage) should Rich Soil succeed in boosting a plant's growth at each random tick? Set it to 0.0 to disable this.
+ #Range: 0.0 ~ 1.0
+ richSoilBoostChance = 0.2
+ #How much of a bonus (in percentage) should each level of Fortune grant to Cutting Board chances? Set it to 0.0 to disable this.
+ #Range: 0.0 ~ 1.0
+ cuttingBoardFortuneBonus = 0.1
+ #Should players be able to reel back rope, bottom to top, when sneak-using with an empty hand on them?
+ enableRopeReeling = true
+ #A list of dye colors that, when used as the background of a Canvas Sign, should default to white text when placed.
+ #Dyes: ["white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray", "light_gray", "cyan", "purple", "blue", "brown", "green", "red", "black"]
+ canvasSignDarkBackgroundList = ["gray", "purple", "blue", "brown", "green", "red", "black"]
+
+#Farming
+[farming]
+ #Which rope should Tomato Vines leave behind when mined by hand?
+ defaultTomatoVineRope = "farmersdelight:rope"
+ #Should tomato vines be able to climb any rope tagged as farmersdelight:ropes?
+ #Beware: this will convert these blocks into the block specified in defaultTomatoVineRope.
+ enableTomatoVineClimbingTaggedRopes = true
+
+#Recipe book
+[recipe_book]
+ #Should the Cooking Pot have a Recipe Book available on its interface?
+ enableRecipeBookCookingPot = true
+
+#Vanilla item overrides
+[overrides]
+ #Should soups and stews from vanilla Minecraft grant additional effects, like meals from this mod?
+ vanillaSoupExtraEffects = true
+ #Should Rabbit Stew grant users the jumping prowess of a rabbit when eaten?
+ rabbitStewJumpBoost = true
+ #Should the Dispenser be able to operate a Cutting Board in front of it?
+ dispenserUsesToolsOnCuttingBoard = true
+
+ #Stack size overrides
+ [overrides.stack_size]
+ #Should BowlFoodItems in the following list become stackable to 16, much like Farmer's Delight's meals?
+ enableStackableSoupItems = true
+ #List of BowlFoodItems. They must extend this class to be affected. Default: vanilla soups and stews.
+ soupItemList = ["minecraft:mushroom_stew", "minecraft:beetroot_soup", "minecraft:rabbit_stew"]
+
+#World generation
+[world]
+ #Should this mod add some of its items (ropes, seeds, knives, meals etc.) as extra chest loot across Minecraft?
+ generateFDChestLoot = true
+ #Should FD generate Compost Heaps across all village biomes?
+ genVillageCompostHeaps = true
+ #Should FD crops show up planted randomly in various village farms?
+ genFDCropsOnVillageFarms = true
+
+ #Wild Cabbage generation
+ [world.wild_cabbages]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 30
+
+ #Sea Beet generation
+ [world.wild_beetroots]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 30
+
+ #Wild Potato generation
+ [world.wild_potatoes]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 100
+
+ #Wild Carrot generation
+ [world.wild_carrots]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 120
+
+ #Wild Onion generation
+ [world.wild_onions]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 120
+
+ #Tomato Vines generation
+ [world.wild_tomatoes]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 100
+
+ #Wild Rice generation
+ [world.wild_rice]
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 20
+
+ #Brown Mushroom Colony generation
+ [world.brown_mushroom_colonies]
+ #Generate brown mushroom colonies on mushroom fields
+ genBrownMushroomColony = true
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 15
+
+ #Red Mushroom Colony generation
+ [world.red_mushroom_colonies]
+ #Generate red mushroom colonies on mushroom fields
+ genRedMushroomColony = true
+ #Chance of generating clusters. Smaller value = more frequent.
+ #Range: > 0
+ chance = 15
diff --git a/config/ferritecore.mixin.properties b/config/ferritecore.mixin.properties
new file mode 100644
index 0000000..2b63d85
--- /dev/null
+++ b/config/ferritecore.mixin.properties
@@ -0,0 +1,22 @@
+# Replace the blockstate neighbor table
+replaceNeighborLookup = true
+# Do not store the properties of a state explicitly and read themfrom the replace neighbor table instead. Requires replaceNeighborLookup to be enabled
+replacePropertyMap = true
+# Cache the predicate instances used in multipart models
+cacheMultipartPredicates = true
+# Avoid creation of new strings when creating ModelResourceLocations
+modelResourceLocations = true
+# Do not create a new MultipartBakedModel instance for each block state using the same multipartmodel. Requires cacheMultipartPredicates to be enabled
+multipartDeduplication = true
+# Deduplicate cached data for blockstates, most importantly collision and render shapes
+blockstateCacheDeduplication = true
+# Deduplicate vertex data of baked quads in the basic model implementations
+bakedQuadDeduplication = true
+# Use smaller data structures for "simple" models, especially models with few side-specific faces
+modelSides = true
+# Replace objects used to detect multi-threaded access to chunks by a much smaller field. This option is disabled by default due to very rare and very hard-to-reproduce crashes, use at your own risk!
+useSmallThreadingDetector = false
+# Use a slightly more compact, but also slightly slower representation for block states
+compactFastMap = false
+# Populate the neighbor table used by vanilla. Enabling this slightly increases memory usage, but can help with issues in the rare case where mods access it directly.
+populateNeighborTable = false
diff --git a/config/forgeconfigapiport.toml b/config/forgeconfigapiport.toml
new file mode 100644
index 0000000..e6db1a0
--- /dev/null
+++ b/config/forgeconfigapiport.toml
@@ -0,0 +1,13 @@
+#When single config values need to be corrected (think like the config value is a number 1-10, but the user enters an incompatible input like '5.0', in that case only this single value needs fixing not the whole file),
+#Forge restores the built-in default value for that option, but ignores a value that is set in a possibly present default config in 'defaultconfigs'.
+#This option fixes this behavior and checks for a value in a default config from 'defaultconfigs' before falling back to the built-in default.
+correctConfigValuesFromDefaultConfig = true
+#Path to load default configs from, intended for setting global server configs for newly created worlds, but also works when recreating client and common configs.
+defaultConfigsPath = "defaultconfigs"
+#Config loading from a file config appears to occasionally fail and throw a com.electronwill.nightconfig.core.io.ParsingException: Not enough data available.
+#This workaround catches the exception, and recreates a fresh file to try config loading for again. If loading fails for the new file the original exception is thrown.
+#To make sure any required changes through configs stay intact through such recreations, placed your changed configs in the 'defaultconfigs' directory.
+recreateConfigsWhenParsingFails = true
+#Prevent server config files from being saved inside the current world directory. Instead, save them to the global config directory in .minecraft/config/.
+#This option effectively disables per world server configs, but helps a lot with avoiding user confusion.
+forceGlobalServerConfigs = true
diff --git a/config/friendsandfoes.json b/config/friendsandfoes.json
new file mode 100644
index 0000000..79a0d65
--- /dev/null
+++ b/config/friendsandfoes.json
@@ -0,0 +1,58 @@
+{
+ "enableCopperGolem": true,
+ "generateCopperGolemAreaStructure": true,
+ "copperGolemAreaStructureWeight": 1,
+ "generateCopperGolemInAncientCity": true,
+ "copperGolemAncientCityCenterWeight": 10,
+ "enableLightningRodOxidation": true,
+ "enableCrab": true,
+ "enableCrabSpawn": true,
+ "crabSpawnWeight": 14,
+ "crabSpawnMinGroupSize": 2,
+ "crabSpawnMaxGroupSize": 4,
+ "reachingStatusEffectModifier": 1,
+ "enableGlare": true,
+ "enableGlareSpawn": true,
+ "enableGlareGriefing": true,
+ "glareSpawnWeight": 4,
+ "glareSpawnMinGroupSize": 1,
+ "glareSpawnMaxGroupSize": 1,
+ "enableMauler": true,
+ "enableMaulerSpawn": true,
+ "maulerDesertSpawnWeight": 8,
+ "maulerDesertSpawnMinGroupSize": 1,
+ "maulerDesertSpawnMaxGroupSize": 1,
+ "maulerBadlandsSpawnWeight": 16,
+ "maulerBadlandsSpawnMinGroupSize": 1,
+ "maulerBadlandsSpawnMaxGroupSize": 1,
+ "maulerSavannaSpawnWeight": 32,
+ "maulerSavannaSpawnMinGroupSize": 1,
+ "maulerSavannaSpawnMaxGroupSize": 1,
+ "enableMoobloom": true,
+ "enableMoobloomSpawn": true,
+ "moobloomSpawnWeight": 4,
+ "moobloomSpawnMinGroupSize": 2,
+ "moobloomSpawnMaxGroupSize": 4,
+ "enableIceologer": true,
+ "enableIceologerSpawn": true,
+ "enableIceologerInRaids": true,
+ "generateIceologerCabinStructure": true,
+ "enableIllusioner": true,
+ "enableIllusionerSpawn": true,
+ "enableIllusionerInRaids": true,
+ "generateIllusionerShackStructure": true,
+ "generateIllusionerTrainingGroundsStructure": true,
+ "maxIllusionsCount": 9,
+ "illusionLifetimeTicks": 600,
+ "invisibilityTicks": 60,
+ "enableZombieHorseTrap": true,
+ "enableRascal": true,
+ "enableRascalSpawn": true,
+ "enableTuffGolem": true,
+ "generateTuffGolemInStronghold": true,
+ "enableWildfire": true,
+ "generateCitadelStructure": true,
+ "enableBeekeeperVillagerProfession": true,
+ "generateBeekeeperAreaStructure": true,
+ "beekeeperAreaStructureWeight": 2
+}
diff --git a/config/gazebo/villages.json b/config/gazebo/villages.json
new file mode 100644
index 0000000..17a2568
--- /dev/null
+++ b/config/gazebo/villages.json
@@ -0,0 +1,54 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "gazebo:village/desert/gazebo",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "gazebo:village/savanna/gazebo",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "gazebo:village/plains/gazebo",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "gazebo:village/taiga/gazebo",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "gazebo:village/snowy/gazebo",
+ "weight": 5,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/icarus.jsonc b/config/icarus.jsonc
new file mode 100644
index 0000000..fbd8022
--- /dev/null
+++ b/config/icarus.jsonc
@@ -0,0 +1,23 @@
+{
+ "can_loop_de_loop": true,
+ "armor_slows": true,
+ "can_slow_fall": false,
+ // Type: Float
+ "max_slowed_multiplier": 3.0,
+ // Type: Float
+ "wings_speed": 0.0125,
+ // Type: Integer
+ "wings_durability": 0,
+ // Type: Float
+ "exhaustion_amount": 0.03,
+ // Type: Float
+ "required_food_amount": 6.001,
+ "max_height_enabled": true,
+ // Type: Integer
+ "max_height_above_world": 64,
+ // Type: Float
+ "flying_target_radius": 0.25,
+ "client": {
+ "can_loop_de_loop": true
+ }
+} \ No newline at end of file
diff --git a/config/jade/server-plugin-overrides.json b/config/jade/server-plugin-overrides.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/config/jade/server-plugin-overrides.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/config/jade/sort-order.json b/config/jade/sort-order.json
new file mode 100644
index 0000000..1f0ceec
--- /dev/null
+++ b/config/jade/sort-order.json
@@ -0,0 +1,23 @@
+{
+ "ae2:server_data": null,
+ "jade:object_name": null,
+ "minecraft:animal_owner": null,
+ "minecraft:beehive": null,
+ "minecraft:brewing_stand": null,
+ "minecraft:campfire": null,
+ "minecraft:chicken_egg": null,
+ "minecraft:chiseled_bookshelf": null,
+ "minecraft:command_block": null,
+ "minecraft:energy_storage": null,
+ "minecraft:fluid_storage": null,
+ "minecraft:furnace": null,
+ "minecraft:item_storage": null,
+ "minecraft:jukebox": null,
+ "minecraft:lectern": null,
+ "minecraft:mob_breeding": null,
+ "minecraft:mob_growth": null,
+ "minecraft:potion_effects": null,
+ "minecraft:progress": null,
+ "minecraft:redstone": null,
+ "minecraft:zombie_villager": null
+} \ No newline at end of file
diff --git a/config/jewelry/items_v4.json b/config/jewelry/items_v4.json
new file mode 100644
index 0000000..7abb0d5
--- /dev/null
+++ b/config/jewelry/items_v4.json
@@ -0,0 +1,593 @@
+{
+ "items": {
+ "jewelry:sapphire_necklace": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:unique_fire_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:topaz_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_ruby_ring": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_attack_necklace": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.12,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_healing_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:sapphire_ring": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:netherite_ruby_necklace": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_tanzanite_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:soul",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:iron_ring": {
+ "attributes": [
+ {
+ "id": "generic.armor",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:jade_ring": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_archer_ring": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "combatroll:recharge",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:jade_necklace": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_tank_necklace": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 6.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:copper_ring": {
+ "attributes": [
+ {
+ "id": "generic.armor",
+ "value": 0.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:unique_attack_ring": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.12,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_jade_ring": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_tanzanite_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:soul",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_dex_ring": {
+ "attributes": [
+ {
+ "id": "generic.attack_speed",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "combatroll:recharge",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:ruby_necklace": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_frost_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:gold_ring": {
+ "attributes": []
+ },
+ "jewelry:netherite_sapphire_necklace": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:netherite_topaz_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_tank_ring": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 6.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:citrine_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:lightning",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:tanzanite_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:soul",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:citrine_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:lightning",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_arcane_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:diamond_necklace": {
+ "attributes": [
+ {
+ "id": "generic.movement_speed",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:tanzanite_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:soul",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_jade_necklace": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_sapphire_ring": {
+ "attributes": [
+ {
+ "id": "generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:unique_arcane_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_frost_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_fire_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_citrine_necklace": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:lightning",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:ruby_ring": {
+ "attributes": [
+ {
+ "id": "generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_citrine_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:lightning",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_archer_necklace": {
+ "attributes": [
+ {
+ "id": "ranged_weapon:damage",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "combatroll:count",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "ranged_weapon:haste",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:netherite_topaz_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_healing_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.08,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:topaz_ring": {
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "jewelry:unique_dex_necklace": {
+ "attributes": [
+ {
+ "id": "generic.attack_speed",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "generic.attack_damage",
+ "value": 0.06,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "combatroll:count",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "jewelry:emerald_necklace": {
+ "attributes": [
+ {
+ "id": "generic.luck",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/config/jewelry/villages.json b/config/jewelry/villages.json
new file mode 100644
index 0000000..a74e8bf
--- /dev/null
+++ b/config/jewelry/villages.json
@@ -0,0 +1,54 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "jewelry:village/desert/jewelry_shop",
+ "weight": 2,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "jewelry:village/savanna/jewelry_shop",
+ "weight": 2,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "jewelry:village/plains/jewelry_shop",
+ "weight": 2,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "jewelry:village/taiga/jewelry_shop",
+ "weight": 2,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "jewelry:village/snowy/jewelry_shop",
+ "weight": 2,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/lithium.properties b/config/lithium.properties
new file mode 100644
index 0000000..febe4b0
--- /dev/null
+++ b/config/lithium.properties
@@ -0,0 +1,8 @@
+# This is the configuration file for Lithium.
+# This file exists for debugging purposes and should not be configured otherwise.
+# Before configuring anything, take a backup of the worlds that will be opened.
+#
+# You can find information on editing this file and all the available options here:
+# https://github.com/jellysquid3/lithium-fabric/wiki/Configuration-File
+#
+# By default, this file will be empty except for this notice.
diff --git a/config/modernfix-mixins.properties b/config/modernfix-mixins.properties
new file mode 100644
index 0000000..647a2f9
--- /dev/null
+++ b/config/modernfix-mixins.properties
@@ -0,0 +1,84 @@
+# This is the configuration file for ModernFix.
+# In general, prefer using the config screen to editing this file. It can be accessed
+# via the standard mod menu on your respective mod loader. Changes will, however,
+# require restarting the game to take effect.
+#
+# The following options can be enabled or disabled if there is a compatibility issue.
+# Add a line with your option name and =true or =false at the bottom of the file to enable
+# or disable a rule. For example:
+# mixin.perf.dynamic_resources=true
+# Do not include the #. You may reset to defaults by deleting this file.
+#
+# Available options:
+# mixin.bugfix.buffer_builder_leak=true # (default)
+# mixin.bugfix.chunk_deadlock=true # (default)
+# mixin.bugfix.concurrency=true # (default)
+# mixin.bugfix.ender_dragon_leak=true # (default)
+# mixin.bugfix.missing_block_entities=false # (default)
+# mixin.bugfix.packet_leak=false # (default)
+# mixin.bugfix.paper_chunk_patches=true # (default)
+# mixin.bugfix.registry_ops_cme=true # (default)
+# mixin.bugfix.restore_old_dragon_movement=false # (default)
+# mixin.bugfix.world_leaks=true # (default)
+# mixin.bugfix.world_screen_skipped=true # (default)
+# mixin.devenv=false # (default)
+# mixin.feature.blockentity_incorrect_thread=false # (default)
+# mixin.feature.branding=true # (default)
+# mixin.feature.cause_lag_by_disabling_threads=false # (default)
+# mixin.feature.direct_stack_trace=false # (default)
+# mixin.feature.disable_unihex_font=false # (default)
+# mixin.feature.integrated_server_watchdog=true # (default)
+# mixin.feature.log_stdout_in_log_files=true # (default)
+# mixin.feature.mcfunction_profiling=true # (default)
+# mixin.feature.measure_time=true # (default)
+# mixin.feature.remove_chat_signing=false # (default)
+# mixin.feature.remove_telemetry=true # (default)
+# mixin.feature.snapshot_easter_egg=true # (default)
+# mixin.feature.spam_thread_dump=false # (default)
+# mixin.feature.spark_profile_launch=false # (default)
+# mixin.feature.spark_profile_world_join=false # (default)
+# mixin.feature.stalled_chunk_load_detection=false # (default)
+# mixin.feature.suppress_narrator_stacktrace=true # (default)
+# mixin.feature.warn_missing_perf_mods=true # (default)
+# mixin.launch.class_search_cache=true # (default)
+# mixin.perf.blast_search_trees=true # (default)
+# mixin.perf.blast_search_trees.force=false # (default)
+# mixin.perf.cache_blockstate_cache_arrays=true # (default)
+# mixin.perf.cache_model_materials=true # (default)
+# mixin.perf.cache_profile_texture_url=true # (default)
+# mixin.perf.cache_strongholds=true # (default)
+# mixin.perf.cache_upgraded_structures=true # (default)
+# mixin.perf.chunk_meshing=true # (default)
+# mixin.perf.clear_fabric_mapping_tables=false # (default)
+# mixin.perf.clear_mixin_classinfo=false # (default)
+# mixin.perf.compact_bit_storage=true # (default)
+# mixin.perf.compact_mojang_registries=true # (default)
+# mixin.perf.compress_unihex_font=true # (default)
+# mixin.perf.dedicated_reload_executor=true # (default)
+# mixin.perf.deduplicate_climate_parameters=false # (default)
+# mixin.perf.deduplicate_location=false # (default)
+# mixin.perf.deduplicate_wall_shapes=true # (default)
+# mixin.perf.dynamic_dfu=true # (default)
+# mixin.perf.dynamic_entity_renderers=false # (default)
+# mixin.perf.dynamic_resources=false # (default)
+# mixin.perf.dynamic_structure_manager=true # (default)
+# mixin.perf.faster_command_suggestions=true # (default)
+# mixin.perf.faster_item_rendering=false # (default)
+# mixin.perf.faster_structure_location=true # (default)
+# mixin.perf.faster_texture_stitching=true # (default)
+# mixin.perf.fix_loop_spin_waiting=true # (default)
+# mixin.perf.ingredient_item_deduplication=false # (default)
+# mixin.perf.lazy_search_tree_registry=true # (default)
+# mixin.perf.memoize_creative_tab_build=true # (default)
+# mixin.perf.model_optimizations=true # (default)
+# mixin.perf.mojang_registry_size=true # (default)
+# mixin.perf.reduce_blockstate_cache_rebuilds=true # (default)
+# mixin.perf.remove_biome_temperature_cache=true # (default)
+# mixin.perf.remove_spawn_chunks=false # (default)
+# mixin.perf.state_definition_construct=true # (default)
+# mixin.perf.thread_priorities=true # (default)
+# mixin.perf.ticking_chunk_alloc=true # (default)
+# mixin.perf.worldgen_allocation=true # (default)
+# mixin.safety=true # (default)
+#
+# User overrides go here.
diff --git a/config/naturalist.json b/config/naturalist.json
new file mode 100644
index 0000000..6492a65
--- /dev/null
+++ b/config/naturalist.json
@@ -0,0 +1,126 @@
+{
+ "alligatorRemoved": false,
+ "bassRemoved": false,
+ "bearRemoved": false,
+ "bluejayRemoved": false,
+ "boarRemoved": false,
+ "butterflyRemoved": false,
+ "canaryRemoved": false,
+ "cardinalRemoved": false,
+ "catfishRemoved": false,
+ "coralSnakeRemoved": false,
+ "deerRemoved": false,
+ "dragonflyRemoved": false,
+ "duckRemoved": false,
+ "elephantRemoved": false,
+ "finchRemoved": false,
+ "fireflyRemoved": false,
+ "forestFoxRemoved": false,
+ "forestRabbitRemoved": false,
+ "giraffeRemoved": false,
+ "hippoRemoved": false,
+ "lionRemoved": false,
+ "lizardRemoved": false,
+ "rattlesnakeRemoved": false,
+ "rhinoRemoved": false,
+ "robinRemoved": false,
+ "snailRemoved": false,
+ "snakeRemoved": false,
+ "sparrowRemoved": false,
+ "tortoiseRemoved": false,
+ "vultureRemoved": false,
+ "zebraRemoved": false,
+ "alligatorSpawnWeight": 10,
+ "alligatorSpawnMinGroupSize": 2,
+ "alligatorSpawnMaxGroupSize": 3,
+ "bassSpawnWeight": 10,
+ "bassSpawnMinGroupSize": 3,
+ "bassSpawnMaxGroupSize": 6,
+ "bearSpawnWeight": 10,
+ "bearSpawnMinGroupSize": 1,
+ "bearSpawnMaxGroupSize": 2,
+ "bluejaySpawnWeight": 10,
+ "bluejaySpawnMinGroupSize": 3,
+ "bluejaySpawnMaxGroupSize": 4,
+ "boarSpawnWeight": 10,
+ "boarSpawnMinGroupSize": 3,
+ "boarSpawnMaxGroupSize": 4,
+ "butterflySpawnWeight": 10,
+ "butterflySpawnMinGroupSize": 3,
+ "butterflySpawnMaxGroupSize": 6,
+ "canarySpawnWeight": 10,
+ "canarySpawnMinGroupSize": 3,
+ "canarySpawnMaxGroupSize": 4,
+ "cardinalSpawnWeight": 10,
+ "cardinalSpawnMinGroupSize": 3,
+ "cardinalSpawnMaxGroupSize": 4,
+ "catfishSpawnWeight": 10,
+ "catfishSpawnMinGroupSize": 1,
+ "catfishSpawnMaxGroupSize": 2,
+ "coralSnakeSpawnWeight": 10,
+ "coralSnakeSpawnMinGroupSize": 1,
+ "coralSnakeSpawnMaxGroupSize": 1,
+ "deerSpawnWeight": 10,
+ "deerSpawnMinGroupSize": 3,
+ "deerSpawnMaxGroupSize": 5,
+ "dragonflySpawnWeight": 10,
+ "dragonflySpawnMinGroupSize": 2,
+ "dragonflySpawnMaxGroupSize": 4,
+ "duckSpawnWeight": 10,
+ "duckSpawnMinGroupSize": 3,
+ "duckSpawnMaxGroupSize": 4,
+ "elephantSpawnWeight": 5,
+ "elephantSpawnMinGroupSize": 1,
+ "elephantSpawnMaxGroupSize": 3,
+ "finchSpawnWeight": 10,
+ "finchSpawnMinGroupSize": 3,
+ "finchSpawnMaxGroupSize": 4,
+ "fireflySpawnWeight": 10,
+ "fireflySpawnMinGroupSize": 2,
+ "fireflySpawnMaxGroupSize": 4,
+ "forestFoxSpawnWeight": 10,
+ "forestFoxSpawnMinGroupSize": 1,
+ "forestFoxSpawnMaxGroupSize": 2,
+ "forestRabbitSpawnWeight": 10,
+ "forestRabbitSpawnMinGroupSize": 2,
+ "forestRabbitSpawnMaxGroupSize": 3,
+ "giraffeSpawnWeight": 5,
+ "giraffeSpawnMinGroupSize": 1,
+ "giraffeSpawnMaxGroupSize": 3,
+ "hippoSpawnWeight": 10,
+ "hippoSpawnMinGroupSize": 1,
+ "hippoSpawnMaxGroupSize": 3,
+ "lionSpawnWeight": 3,
+ "lionSpawnMinGroupSize": 1,
+ "lionSpawnMaxGroupSize": 3,
+ "lizardSpawnWeight": 10,
+ "lizardSpawnMinGroupSize": 1,
+ "lizardSpawnMaxGroupSize": 1,
+ "rattlesnakeSpawnWeight": 10,
+ "rattlesnakeSpawnMinGroupSize": 1,
+ "rattlesnakeSpawnMaxGroupSize": 1,
+ "rhinoSpawnWeight": 1,
+ "rhinoSpawnMinGroupSize": 1,
+ "rhinoSpawnMaxGroupSize": 3,
+ "robinSpawnWeight": 10,
+ "robinSpawnMinGroupSize": 3,
+ "robinSpawnMaxGroupSize": 4,
+ "snailSpawnWeight": 10,
+ "snailSpawnMinGroupSize": 2,
+ "snailSpawnMaxGroupSize": 3,
+ "snakeSpawnWeight": 10,
+ "snakeSpawnMinGroupSize": 1,
+ "snakeSpawnMaxGroupSize": 1,
+ "sparrowSpawnWeight": 10,
+ "sparrowSpawnMinGroupSize": 3,
+ "sparrowSpawnMaxGroupSize": 4,
+ "tortoiseSpawnWeight": 10,
+ "tortoiseSpawnMinGroupSize": 1,
+ "tortoiseSpawnMaxGroupSize": 1,
+ "vultureSpawnWeight": 3,
+ "vultureSpawnMinGroupSize": 3,
+ "vultureSpawnMaxGroupSize": 5,
+ "zebraSpawnWeight": 1,
+ "zebraSpawnMinGroupSize": 2,
+ "zebraSpawnMaxGroupSize": 6
+} \ No newline at end of file
diff --git a/config/necronomicon.json5 b/config/necronomicon.json5
new file mode 100644
index 0000000..472a3e6
--- /dev/null
+++ b/config/necronomicon.json5
@@ -0,0 +1,17 @@
+{
+ // This is used to debug stuff
+ "debug": false,
+ // A test boolean
+ "test": false,
+ // A list!
+ // Supports multiple values using List.of()
+ "list": [
+ "test",
+ "test2"
+ ],
+ "exampleColors": {
+ "red": 255,
+ "green": 255,
+ "blue": 255
+ }
+} \ No newline at end of file
diff --git a/config/paladins/items_v5.json b/config/paladins/items_v5.json
new file mode 100644
index 0000000..5f91410
--- /dev/null
+++ b/config/paladins/items_v5.json
@@ -0,0 +1,482 @@
+{
+ "weapons": {
+ "iron_claymore": {
+ "attack_damage": 8.3,
+ "attack_speed": -3.0,
+ "attributes": []
+ },
+ "iron_mace": {
+ "attack_damage": 7.0,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "diamond_claymore": {
+ "attack_damage": 9.9,
+ "attack_speed": -3.0,
+ "attributes": []
+ },
+ "golden_mace": {
+ "attack_damage": 4.3,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "netherite_holy_wand": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 4.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wooden_great_hammer": {
+ "attack_damage": 6.6,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "stone_great_hammer": {
+ "attack_damage": 8.5,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "diamond_mace": {
+ "attack_damage": 8.3,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "iron_great_hammer": {
+ "attack_damage": 10.3,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "golden_great_hammer": {
+ "attack_damage": 6.6,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "netherite_claymore": {
+ "attack_damage": 11.5,
+ "attack_speed": -3.0,
+ "attributes": []
+ },
+ "diamond_holy_staff": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 5.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "golden_claymore": {
+ "attack_damage": 5.2,
+ "attack_speed": -3.0,
+ "attributes": []
+ },
+ "holy_staff": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "acolyte_wand": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 3.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "stone_claymore": {
+ "attack_damage": 6.8,
+ "attack_speed": -3.0,
+ "attributes": []
+ },
+ "diamond_great_hammer": {
+ "attack_damage": 12.2,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "netherite_holy_staff": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 6.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "holy_wand": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 3.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "netherite_great_hammer": {
+ "attack_damage": 14.1,
+ "attack_speed": -3.2,
+ "attributes": []
+ },
+ "diamond_holy_wand": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "netherite_mace": {
+ "attack_damage": 9.6,
+ "attack_speed": -2.8,
+ "attributes": []
+ }
+ },
+ "armor_sets": {
+ "crusader_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "netherite_crusader_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "prior_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "priest_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "paladin_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.5,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "netherite_prior_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:healing",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/config/paladins/shields.json b/config/paladins/shields.json
new file mode 100644
index 0000000..40d3c25
--- /dev/null
+++ b/config/paladins/shields.json
@@ -0,0 +1,53 @@
+{
+ "shields": {
+ "paladins:netherite_kite_shield": {
+ "durability": 1344,
+ "attributes": [
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "generic.max_health",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "paladins:diamond_kite_shield": {
+ "durability": 672,
+ "attributes": [
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "paladins:golden_kite_shield": {
+ "durability": 168,
+ "attributes": []
+ },
+ "paladins:iron_kite_shield": {
+ "durability": 336,
+ "attributes": [
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "generic.max_health",
+ "value": 2.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/config/paladins/tweaks.json b/config/paladins/tweaks.json
new file mode 100644
index 0000000..50033d9
--- /dev/null
+++ b/config/paladins/tweaks.json
@@ -0,0 +1,8 @@
+{
+ "ignore_items_required_mods": false,
+ "barrier_knockback_strength": 0.3,
+ "battle_banner_attack_speed_bonus": 0.4,
+ "battle_banner_ranged_haste_bonus": 0.4,
+ "battle_banner_spell_haste_bonus": 0.4,
+ "battle_banner_knockback_resistance_bonus": 0.5
+} \ No newline at end of file
diff --git a/config/paladins/villages.json b/config/paladins/villages.json
new file mode 100644
index 0000000..1039140
--- /dev/null
+++ b/config/paladins/villages.json
@@ -0,0 +1,54 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "paladins:village/desert/sanctuary",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "paladins:village/savanna/sanctuary",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "paladins:village/plains/sanctuary",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "paladins:village/taiga/sanctuary",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "paladins:village/snowy/sanctuary",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/paper-global.yml b/config/paper-global.yml
new file mode 100644
index 0000000..9fc285c
--- /dev/null
+++ b/config/paper-global.yml
@@ -0,0 +1,147 @@
+# This is the global configuration file for Paper.
+# As you can see, there's a lot to configure. Some options may impact gameplay, so use
+# with caution, and make sure you know what each option does before configuring.
+#
+# If you need help with the configuration or have any questions related to Paper,
+# join us in our Discord or check the docs page.
+#
+# The world configuration options have been moved inside
+# their respective world folder. The files are named paper-world.yml
+#
+# File Reference: https://docs.papermc.io/paper/reference/global-configuration/
+# Docs: https://docs.papermc.io/
+# Discord: https://discord.gg/papermc
+# Website: https://papermc.io/
+
+_version: 31
+anticheat:
+ obfuscation:
+ items:
+ all-models:
+ also-obfuscate: []
+ dont-obfuscate:
+ - minecraft:lodestone_tracker
+ sanitize-count: true
+ enable-item-obfuscation: false
+ model-overrides:
+ minecraft:elytra:
+ also-obfuscate: []
+ dont-obfuscate:
+ - minecraft:damage
+ sanitize-count: true
+block-updates:
+ disable-chorus-plant-updates: false
+ disable-mushroom-block-updates: false
+ disable-noteblock-updates: false
+ disable-tripwire-updates: false
+chunk-loading-advanced:
+ auto-config-send-distance: true
+ player-max-concurrent-chunk-generates: 0
+ player-max-concurrent-chunk-loads: 0
+chunk-loading-basic:
+ player-max-chunk-generate-rate: -1.0
+ player-max-chunk-load-rate: 100.0
+ player-max-chunk-send-rate: 75.0
+chunk-system:
+ io-threads: -1
+ worker-threads: -1
+collisions:
+ enable-player-collisions: true
+ send-full-pos-for-hard-colliding-entities: true
+commands:
+ ride-command-allow-player-as-vehicle: false
+ suggest-player-names-when-null-tab-completions: true
+console:
+ enable-brigadier-completions: true
+ enable-brigadier-highlighting: true
+ has-all-permissions: false
+item-validation:
+ book:
+ author: 8192
+ page: 16384
+ title: 8192
+ book-size:
+ page-max: 2560
+ total-multiplier: 0.98
+ display-name: 8192
+ lore-line: 8192
+ resolve-selectors-in-books: false
+messages:
+ kick:
+ authentication-servers-down: <lang:multiplayer.disconnect.authservers_down>
+ connection-throttle: Connection throttled! Please wait before reconnecting.
+ flying-player: <lang:multiplayer.disconnect.flying>
+ flying-vehicle: <lang:multiplayer.disconnect.flying>
+ no-permission: <red>I'm sorry, but you do not have permission to perform this command.
+ Please contact the server administrators if you believe that this is in error.
+ use-display-name-in-quit-message: false
+misc:
+ chat-threads:
+ chat-executor-core-size: -1
+ chat-executor-max-size: -1
+ client-interaction-leniency-distance: default
+ compression-level: default
+ enable-nether: true
+ fix-far-end-terrain-generation: true
+ load-permissions-yml-before-plugins: true
+ max-joins-per-tick: 5
+ max-tracking-combat-entries: 10240
+ prevent-negative-villager-demand: false
+ region-file-cache-size: 256
+ send-full-pos-for-item-entities: false
+ strict-advancement-dimension-check: false
+ use-alternative-luck-formula: false
+ use-dimension-type-for-custom-spawners: false
+ xp-orb-groups-per-area: default
+packet-limiter:
+ all-packets:
+ action: KICK
+ interval: 7.0
+ max-packet-rate: 500.0
+ kick-message: <red><lang:disconnect.exceeded_packet_rate>
+ overrides:
+ minecraft:place_recipe:
+ action: DROP
+ interval: 4.0
+ max-packet-rate: 5.0
+player-auto-save:
+ max-per-tick: -1
+ rate: -1
+proxies:
+ bungee-cord:
+ online-mode: true
+ proxy-protocol: false
+ velocity:
+ enabled: false
+ online-mode: true
+ secret: ''
+scoreboards:
+ save-empty-scoreboard-teams: true
+ track-plugin-scoreboards: false
+spam-limiter:
+ incoming-packet-threshold: 300
+ recipe-spam-increment: 1
+ recipe-spam-limit: 20
+ tab-spam-increment: 1
+ tab-spam-limit: 500
+spark:
+ enable-immediately: false
+ enabled: true
+time:
+ affects-all-worlds: false
+unsupported-settings:
+ allow-headless-pistons: false
+ allow-permanent-block-break-exploits: false
+ allow-piston-duplication: false
+ allow-unsafe-end-portal-teleportation: false
+ oversized-item-component-sanitizer:
+ dont-sanitize: []
+ perform-username-validation: true
+ skip-tripwire-hook-placement-validation: false
+ skip-vanilla-damage-tick-when-shield-blocked: false
+ update-equipment-on-player-actions: true
+update-checker:
+ enabled: true
+watchdog:
+ early-warning-delay: 10000
+ early-warning-every: 5000
diff --git a/config/paper-world-defaults.yml b/config/paper-world-defaults.yml
new file mode 100644
index 0000000..048c131
--- /dev/null
+++ b/config/paper-world-defaults.yml
@@ -0,0 +1,323 @@
+# This is the world defaults configuration file for Paper.
+# As you can see, there's a lot to configure. Some options may impact gameplay, so use
+# with caution, and make sure you know what each option does before configuring.
+#
+# If you need help with the configuration or have any questions related to Paper,
+# join us in our Discord or check the docs page.
+#
+# Configuration options here apply to all worlds, unless you specify overrides inside
+# the world-specific config file inside each world folder.
+#
+# File Reference: https://docs.papermc.io/paper/reference/world-configuration/
+# Docs: https://docs.papermc.io/
+# Discord: https://discord.gg/papermc
+# Website: https://papermc.io/
+
+_version: 31
+anticheat:
+ anti-xray:
+ enabled: false
+ engine-mode: 1
+ hidden-blocks:
+ - copper_ore
+ - deepslate_copper_ore
+ - raw_copper_block
+ - gold_ore
+ - deepslate_gold_ore
+ - iron_ore
+ - deepslate_iron_ore
+ - raw_iron_block
+ - coal_ore
+ - deepslate_coal_ore
+ - lapis_ore
+ - deepslate_lapis_ore
+ - mossy_cobblestone
+ - obsidian
+ - chest
+ - diamond_ore
+ - deepslate_diamond_ore
+ - redstone_ore
+ - deepslate_redstone_ore
+ - clay
+ - emerald_ore
+ - deepslate_emerald_ore
+ - ender_chest
+ lava-obscures: false
+ max-block-height: 64
+ replacement-blocks:
+ - stone
+ - oak_planks
+ - deepslate
+ update-radius: 2
+ use-permission: false
+chunks:
+ auto-save-interval: default
+ delay-chunk-unloads-by: 10s
+ entity-per-chunk-save-limit:
+ arrow: -1
+ ender_pearl: -1
+ experience_orb: -1
+ fireball: -1
+ small_fireball: -1
+ snowball: -1
+ fixed-chunk-inhabited-time: -1
+ flush-regions-on-save: false
+ max-auto-save-chunks-per-tick: 24
+ prevent-moving-into-unloaded-chunks: false
+collisions:
+ allow-player-cramming-damage: false
+ allow-vehicle-collisions: true
+ fix-climbing-bypassing-cramming-rule: false
+ max-entity-collisions: 8
+ only-players-collide: false
+command-blocks:
+ force-follow-perm-level: true
+ permissions-level: 2
+entities:
+ armor-stands:
+ do-collision-entity-lookups: true
+ tick: true
+ behavior:
+ allow-spider-world-border-climbing: true
+ baby-zombie-movement-modifier: 0.5
+ cooldown-failed-beehive-releases: true
+ disable-chest-cat-detection: false
+ disable-creeper-lingering-effect: false
+ disable-player-crits: false
+ door-breaking-difficulty:
+ husk:
+ - HARD
+ vindicator:
+ - NORMAL
+ - HARD
+ zombie:
+ - HARD
+ zombie_villager:
+ - HARD
+ zombified_piglin:
+ - HARD
+ ender-dragons-death-always-places-dragon-egg: false
+ experience-merge-max-value: -1
+ mobs-can-always-pick-up-loot:
+ skeletons: false
+ zombies: false
+ nerf-pigmen-from-nether-portals: false
+ only-merge-items-horizontally: false
+ parrots-are-unaffected-by-player-movement: false
+ phantoms-do-not-spawn-on-creative-players: true
+ phantoms-only-attack-insomniacs: true
+ phantoms-spawn-attempt-max-seconds: 119
+ phantoms-spawn-attempt-min-seconds: 60
+ piglins-guard-chests: true
+ pillager-patrols:
+ disable: false
+ spawn-chance: 0.2
+ spawn-delay:
+ per-player: false
+ ticks: 12000
+ start:
+ day: 5
+ per-player: false
+ player-insomnia-start-ticks: 72000
+ should-remove-dragon: false
+ spawner-nerfed-mobs-should-jump: false
+ stuck-entity-poi-retry-delay: 200
+ zombie-villager-infection-chance: default
+ zombies-target-turtle-eggs: true
+ markers:
+ tick: true
+ mob-effects:
+ immune-to-wither-effect:
+ wither: true
+ wither-skeleton: true
+ spiders-immune-to-poison-effect: true
+ sniffer:
+ boosted-hatch-time: default
+ hatch-time: default
+ spawning:
+ all-chunks-are-slime-chunks: false
+ alt-item-despawn-rate:
+ enabled: false
+ items:
+ cobblestone: 300
+ count-all-mobs-for-spawning: false
+ creative-arrow-despawn-rate: default
+ despawn-range-shape: ELLIPSOID
+ despawn-ranges:
+ ambient:
+ hard: default
+ soft: default
+ axolotls:
+ hard: default
+ soft: default
+ creature:
+ hard: default
+ soft: default
+ misc:
+ hard: default
+ soft: default
+ monster:
+ hard: default
+ soft: default
+ underground_water_creature:
+ hard: default
+ soft: default
+ water_ambient:
+ hard: default
+ soft: default
+ water_creature:
+ hard: default
+ soft: default
+ despawn-time:
+ llama_spit: disabled
+ snowball: disabled
+ disable-mob-spawner-spawn-egg-transformation: false
+ duplicate-uuid:
+ mode: SAFE_REGEN
+ safe-regen-delete-range: 32
+ filter-bad-tile-entity-nbt-from-falling-blocks: true
+ filtered-entity-tag-nbt-paths:
+ - Pos
+ - Motion
+ - sleeping_pos
+ iron-golems-can-spawn-in-air: false
+ max-arrow-despawn-invulnerability: 200
+ monster-spawn-max-light-level: default
+ non-player-arrow-despawn-rate: default
+ per-player-mob-spawns: true
+ scan-for-legacy-ender-dragon: true
+ skeleton-horse-thunder-spawn-chance: default
+ slime-spawn-height:
+ slime-chunk:
+ maximum: 40.0
+ surface-biome:
+ maximum: 70.0
+ minimum: 50.0
+ spawn-limits:
+ ambient: -1
+ axolotls: -1
+ creature: -1
+ monster: -1
+ underground_water_creature: -1
+ water_ambient: -1
+ water_creature: -1
+ ticks-per-spawn:
+ ambient: -1
+ axolotls: -1
+ creature: -1
+ monster: -1
+ underground_water_creature: -1
+ water_ambient: -1
+ water_creature: -1
+ wandering-trader:
+ spawn-chance-failure-increment: 25
+ spawn-chance-max: 75
+ spawn-chance-min: 25
+ spawn-day-length: 24000
+ spawn-minute-length: 1200
+ wateranimal-spawn-height:
+ maximum: default
+ minimum: default
+ tracking-range-y:
+ animal: default
+ display: default
+ enabled: false
+ misc: default
+ monster: default
+ other: default
+ player: default
+environment:
+ disable-explosion-knockback: false
+ disable-ice-and-snow: false
+ disable-thunder: false
+ fire-tick-delay: 30
+ frosted-ice:
+ delay:
+ max: 40
+ min: 20
+ enabled: true
+ generate-flat-bedrock: false
+ locate-structures-outside-world-border: false
+ max-block-ticks: 65536
+ max-fluid-ticks: 65536
+ nether-ceiling-void-damage-height: disabled
+ optimize-explosions: false
+ portal-create-radius: 16
+ portal-search-radius: 128
+ portal-search-vanilla-dimension-scaling: true
+ treasure-maps:
+ enabled: true
+ find-already-discovered:
+ loot-tables: default
+ villager-trade: false
+ void-damage-amount: 4.0
+ void-damage-min-build-height-offset: -64.0
+ water-over-lava-flow-speed: 5
+feature-seeds:
+ generate-random-seeds-for-all: false
+fishing-time-range:
+ maximum: 600
+ minimum: 100
+fixes:
+ disable-unloaded-chunk-enderpearl-exploit: false
+ falling-block-height-nerf: disabled
+ fix-items-merging-through-walls: false
+ prevent-tnt-from-moving-in-water: false
+ split-overstacked-loot: true
+ tnt-entity-height-nerf: disabled
+hopper:
+ cooldown-when-full: true
+ disable-move-event: false
+ ignore-occluding-blocks: false
+lootables:
+ auto-replenish: false
+ max-refills: -1
+ refresh-max: 2d
+ refresh-min: 12h
+ reset-seed-on-fill: true
+ restrict-player-reloot: true
+ restrict-player-reloot-time: disabled
+ retain-unlooted-shulker-box-loot-table-on-non-player-break: true
+maps:
+ item-frame-cursor-limit: 128
+ item-frame-cursor-update-interval: 10
+max-growth-height:
+ bamboo:
+ max: 16
+ min: 11
+ cactus: 3
+ reeds: 3
+misc:
+ allow-remote-ender-dragon-respawning: false
+ alternate-current-update-order: HORIZONTAL_FIRST_OUTWARD
+ disable-end-credits: false
+ disable-relative-projectile-velocity: false
+ disable-sprint-interruption-on-attack: false
+ legacy-ender-pearl-behavior: false
+ max-leash-distance: default
+ redstone-implementation: VANILLA
+ show-sign-click-command-failure-msgs-to-player: false
+ update-pathfinding-on-block-update: true
+scoreboards:
+ allow-non-player-entities-on-scoreboards: true
+ use-vanilla-world-scoreboard-name-coloring: false
+spawn:
+ allow-using-signs-inside-spawn-protection: false
+tick-rates:
+ behavior:
+ villager:
+ validatenearbypoi: -1
+ container-update: 1
+ dry-farmland: 1
+ grass-spread: 1
+ mob-spawner: 1
+ sensor:
+ villager:
+ secondarypoisensor: 40
+ wet-farmland: 1
+unsupported-settings:
+ disable-world-ticking-when-empty: false
+ fix-invulnerable-end-crystal-exploit: true
+ ticking:
+ block-entities: true
+ chunks: true
diff --git a/config/patchouli.json5 b/config/patchouli.json5
new file mode 100644
index 0000000..cb29d9f
--- /dev/null
+++ b/config/patchouli.json5
@@ -0,0 +1,16 @@
+{
+ // Set this to true to disable advancement locking for ALL books, making all entries visible at all times. Config Flag: advancements_disabled
+ "disableAdvancementLocking": false,
+ // Granular list of Book ID's to disable advancement locking for, e.g. [ "botania:lexicon" ]. Config Flags: advancements_disabled_<bookid>
+ "noAdvancementBooks": [],
+ // Enable testing mode. By default this doesn't do anything, but you can use the config flag in your books if you want. Config Flag: testing_mode
+ "testingMode": false,
+ // Set this to the ID of a book to have it show up in players' inventories, replacing the recipe book.
+ "inventoryButtonBook": "",
+ // Set this to true to use Shift instead of Ctrl for the inventory quick lookup feature.
+ "useShiftForQuickLookup": false,
+ // Set how to handle text overflow: OVERFLOW the text off the page, TRUNCATE overflowed text, or RESIZE everything to fit. Relogin after changing.
+ "textOverflowMode": "RESIZE",
+ // How long in ticks the quick lookup key needs to be pressed before the book opens
+ "quickLookupTime": 10
+} \ No newline at end of file
diff --git a/config/ponder-client.toml b/config/ponder-client.toml
new file mode 100644
index 0000000..6a69056
--- /dev/null
+++ b/config/ponder-client.toml
@@ -0,0 +1,19 @@
+#.
+#Slow down a ponder scene whenever there is text on screen.
+comfyReading = false
+#.
+#Show additional info in the ponder view and reload scene scripts more frequently.
+editingMode = false
+
+#.
+#Settings for the Placement Assist
+[placementAssist]
+ #.
+ #What indicator should be used when showing where the assisted placement ends up relative to your crosshair
+ #Choose 'NONE' to disable the Indicator altogether
+ #Allowed Values: TEXTURE, TRIANGLE, NONE
+ indicatorType = "TEXTURE"
+ #.
+ #Change the size of the Indicator by this multiplier
+ #Range: 0.0 ~ 3.4028234663852886E38
+ indicatorScale = 1.0
diff --git a/config/railways-client.toml b/config/railways-client.toml
new file mode 100644
index 0000000..f639085
--- /dev/null
+++ b/config/railways-client.toml
@@ -0,0 +1,67 @@
+#.
+#Client-only settings - If you're looking for general settings, look inside your worlds serverconfig folder!
+[client]
+ #.
+ #Show extended debug info in coupler goggle overlay
+ showExtendedCouplerDebug = false
+ #.
+ #Skip clientside train derailing. This prevents stuttering when a train places tracks, but trains will not appear derailed when they crash
+ skipClientDerailing = false
+ #.
+ #Use a scanline shader when spying through a conductor
+ useConductorSpyShader = true
+ #.
+ #Vertical offset for track overlays
+ #Range: -256.0 ~ 256.0
+ trackOverlayOffset = 0.0
+ #.
+ #Whether to actually apply the dev cape (ignored for non-devs)
+ #This setting may require a relog to take effect
+ useDevCape = true
+ #.
+ #Should the normal create conductor cap be rendered on top of the conductors existing hat?
+ renderNormalCap = true
+ #.
+ #Should flywheels and blocks extending the FlywheelBlock class be animated when apart of trains?
+ animatedFlywheels = true
+ #.
+ #Allow all wrenches to auto-fill `/snr shadow_realm banish` when sneak-used, without requiring the tag ShadowHammer.
+ universalShadowWrench = false
+
+ #.
+ #Smoke Settings
+ [client.smoke]
+ #.
+ #Smoke particle style
+ #Allowed Values: VANILLA, OLD, CARTOON
+ smokeType = "CARTOON"
+
+ #.
+ #Old-style Smoke Settings
+ [client.smoke.old]
+ #.
+ #[in Ticks]
+ #Lifetime of smoke particles emitted by contraptions
+ #Range: 20 ~ 1000
+ smokeLifetime = 500
+ #.
+ #Smoke emission rate on contraptions
+ #Range: 0.0 ~ 10.0
+ smokePercentage = 0.75
+ #.
+ #Smoke texture quality
+ #Allowed Values: LOW, MEDIUM, HIGH, ULTRA
+ smokeQuality = "HIGH"
+ #.
+ #Thicker smoke (renders 2 extra layers per particle)
+ thickerSmoke = true
+
+ #.
+ #Cartoon-style Smoke Settings
+ [client.smoke.cartoon]
+ #.
+ #Spawn faster-rising small puffs of smoke on an interval
+ spawnFasterPuffs = true
+ #.
+ #Spawn steam on an interval
+ spawnSteam = false
diff --git a/config/railways-common.toml b/config/railways-common.toml
new file mode 100644
index 0000000..dc3c70f
--- /dev/null
+++ b/config/railways-common.toml
@@ -0,0 +1,8 @@
+#.
+#Register integration tracks for mods that are not present
+#[@cui:RequiresReload:both]
+registerMissingTracks = false
+#.
+#Disable Steam 'n' Rails datafixers. Do not enable this config if your world contains pre-Create 0.5.1 monobogeys, because then they will be destroyed
+#[@cui:RequiresReload:both]
+disableDatafixer = false
diff --git a/config/railways-server.toml b/config/railways-server.toml
new file mode 100644
index 0000000..b84851a
--- /dev/null
+++ b/config/railways-server.toml
@@ -0,0 +1,65 @@
+#.
+#Miscellaneous settings
+[misc]
+ #.
+ #Coupler will require points to be on the same or adjacent track edge, this will prevent the coupler from working if there is any form of junction in between the two points.
+ strictCoupler = false
+ #.
+ #Allow controlling Brass Switches remotely when approaching them on a train
+ flipDistantSwitches = true
+ #.
+ #Max distance between targeted track and placed switch stand
+ #Range: 16 ~ 128
+ switchPlacementRange = 64
+ #.
+ #Allow creepers and ghast fireballs to damage tracks
+ creeperTrackDamage = false
+ #.
+ #Multiplier used for calculating exhaustion from speed when a handcar is used.
+ #Range: 0.0 ~ 1.0
+ handcarHungerMultiplier = 0.009999999776482582
+ #.
+ #Rollers clear snow-encased tracks when rolling over them.
+ rollersClearSnow = true
+ #.
+ #Allow creative mode players to relocate trains without distance restrictions.
+ #[@cui:RequiresRelog]
+ unlimitedCreativeRelocation = false
+
+#.
+#Semaphore settings
+[semaphores]
+ #.
+ #.
+ #Simplified semaphore placement (no upside-down placement)
+ simplifiedPlacement = true
+ #.
+ #Whether semaphore color order is reversed when the semaphores are oriented upside-down
+ flipYellowOrder = false
+
+#.
+#Conductor settings
+[conductors]
+ #.
+ #.
+ #Conductor whistle is limited to the owner of a train
+ mustOwnBoundTrain = false
+ #.
+ #Maximum length of conductor vents
+ #Range: > 1
+ maxConductorVentLength = 64
+ #.
+ #How often a conductor whistle updates the train of the bound conductor
+ #Range: 1 ~ 600
+ whistleRebindRate = 10
+
+#.
+#Realism Settings
+[realism]
+ #.
+ #.
+ #Make trains require fuel to run (either from fuel tanks or solid fuels in chests/barrels)
+ realisticTrains = false
+ #.
+ #Make fuel tanks only accept proper liquid fuels (so water etc can't go into them)
+ realisticFuelTanks = true
diff --git a/config/repurposed_structures.json b/config/repurposed_structures.json
new file mode 100644
index 0000000..4435820
--- /dev/null
+++ b/config/repurposed_structures.json
@@ -0,0 +1,4 @@
+{
+ "importModdedItems": true,
+ "blacklistedRSLoottablesFromImportingModdedItems": ""
+} \ No newline at end of file
diff --git a/config/resourceful-config-web.json b/config/resourceful-config-web.json
new file mode 100644
index 0000000..c2f84cc
--- /dev/null
+++ b/config/resourceful-config-web.json
@@ -0,0 +1,12 @@
+{
+ "enabled": false,
+ "port": 7903,
+ "validator": {
+ "uuids": [],
+ "if": {
+ "password": "4e0d73b4-8ebd-4133-9747-89ae6ce991db",
+ "type": "password"
+ },
+ "type": "if"
+ }
+} \ No newline at end of file
diff --git a/config/rogues/items_v2.json b/config/rogues/items_v2.json
new file mode 100644
index 0000000..e2c424e
--- /dev/null
+++ b/config/rogues/items_v2.json
@@ -0,0 +1,505 @@
+{
+ "weapons": {
+ "netherite_double_axe": {
+ "attack_damage": 9.6,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "iron_double_axe": {
+ "attack_damage": 7.0,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "golden_sickle": {
+ "attack_damage": 2.4,
+ "attack_speed": -2.0,
+ "attributes": []
+ },
+ "golden_dagger": {
+ "attack_damage": 1.8,
+ "attack_speed": -1.6,
+ "attributes": []
+ },
+ "diamond_double_axe": {
+ "attack_damage": 8.3,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "netherite_glaive": {
+ "attack_damage": 8.1,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "golden_double_axe": {
+ "attack_damage": 4.3,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "iron_dagger": {
+ "attack_damage": 3.3,
+ "attack_speed": -1.6,
+ "attributes": []
+ },
+ "diamond_sickle": {
+ "attack_damage": 5.0,
+ "attack_speed": -2.0,
+ "attributes": []
+ },
+ "flint_dagger": {
+ "attack_damage": 2.6,
+ "attack_speed": -1.6,
+ "attributes": []
+ },
+ "golden_glaive": {
+ "attack_damage": 3.5,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "iron_glaive": {
+ "attack_damage": 5.8,
+ "attack_speed": -2.6,
+ "attributes": []
+ },
+ "diamond_dagger": {
+ "attack_damage": 4.0,
+ "attack_speed": -1.6,
+ "attributes": []
+ },
+ "stone_double_axe": {
+ "attack_damage": 5.6,
+ "attack_speed": -2.8,
+ "attributes": []
+ },
+ "netherite_sickle": {
+ "attack_damage": 5.9,
+ "attack_speed": -2.0,
+ "attributes": []
+ },
+ "iron_sickle": {
+ "attack_damage": 4.1,
+ "attack_speed": -2.0,
+ "attributes": []
+ },
+ "netherite_dagger": {
+ "attack_damage": 4.7,
+ "attack_speed": -1.6,
+ "attributes": []
+ },
+ "diamond_glaive": {
+ "attack_damage": 7.0,
+ "attack_speed": -2.6,
+ "attributes": []
+ }
+ },
+ "armor_sets": {
+ "assassin_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "netherite_assassin_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "berserker_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "warrior_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 5,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 4,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "rogue_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_speed",
+ "value": 0.04,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.movement_speed",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "netherite_berserker_armor": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 8,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 6,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "minecraft:generic.attack_damage",
+ "value": 0.05,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.knockback_resistance",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "minecraft:generic.armor_toughness",
+ "value": 1.0,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/config/rogues/tweaks.json b/config/rogues/tweaks.json
new file mode 100644
index 0000000..1ff8f03
--- /dev/null
+++ b/config/rogues/tweaks.json
@@ -0,0 +1,19 @@
+{
+ "ignore_items_required_mods": false,
+ "effects_raw_id_start": 700,
+ "slice_and_dice_damage_multiplier": 0.1,
+ "slice_and_dice_max_stacks": 10,
+ "stealth_movement_speed_multiplier": -0.5,
+ "stealth_follow_range": 1.0,
+ "stealth_visibility_multiplier": 0.1,
+ "shattered_armor_multiplier": -0.3,
+ "shout_damage_multiplier": -0.3,
+ "charge_speed_multiplier": 0.5,
+ "charge_knockback_resistance_bonus": 0.5,
+ "enable_rebalance_enchantment_sharpness": true,
+ "enchantment_sharpness_multiplier_per_level": 0.08,
+ "enable_rebalance_enchantment_smite": true,
+ "enchantment_smite_multiplier_per_level": 0.12,
+ "enable_rebalance_enchantment_arthropods": true,
+ "enchantment_arthropods_multiplier_per_level": 0.12
+} \ No newline at end of file
diff --git a/config/rogues/villages.json b/config/rogues/villages.json
new file mode 100644
index 0000000..50ce5be
--- /dev/null
+++ b/config/rogues/villages.json
@@ -0,0 +1,54 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "rogues:village/desert/barracks",
+ "weight": 6,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "rogues:village/savanna/barracks",
+ "weight": 6,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "rogues:village/plains/barracks",
+ "weight": 6,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "rogues:village/taiga/barracks",
+ "weight": 6,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "rogues:village/snowy/barracks",
+ "weight": 6,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/rpg_series/loot_v2.json b/config/rpg_series/loot_v2.json
new file mode 100644
index 0000000..6b3a32f
--- /dev/null
+++ b/config/rpg_series/loot_v2.json
@@ -0,0 +1,2875 @@
+{
+ "injectors": {
+ "minecraft:chests/ruined_portal": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/abandoned_mineshaft": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_0_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/igloo_chest": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_0_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/shipwreck_supply": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_0_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/spawn_bonus_chest": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_0_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/bastion_bridge": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/simple_dungeon": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/stronghold_crossing": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/buried_treasure": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/shipwreck_treasure": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/desert_pyramid": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/underwater_ruin_small": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/jungle_temple": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/pillager_outpost": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/woodland_mansion": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "minecraft:chests/nether_bridge": {
+ "rolls": 0.75,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/underwater_ruin_big": {
+ "rolls": 0.75,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/bastion_other": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/bastion_treasure": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:chests/ancient_city": {
+ "rolls": 0.8,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 2
+ }
+ ]
+ },
+ "minecraft:chests/stronghold_library": {
+ "rolls": 0.8,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 2
+ }
+ ]
+ },
+ "minecraft:chests/end_city_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.0,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_4_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:entities/ender_dragon": {
+ "rolls": 3.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:entities/wither": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecraft:entities/warden": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecells:entities/conjunctivius": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "minecells:entities/concierge": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "bosses_of_mass_destruction:entities/lich": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "bosses_of_mass_destruction:entities/void_blossom": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "bosses_of_mass_destruction:chests/gauntlet": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "bosses_of_mass_destruction:chests/obsidilith": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_4_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "graveyard:chests/great_crypt_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "graveyard:chests/crypt_loot": {
+ "rolls": 0.2,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "graveyard:chests/small_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ }
+ ]
+ },
+ "graveyard:chests/medium_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "graveyard:chests/large_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "illagerinvasion:chests/illager_fort_tower": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "betterdungeons:skeleton_dungeon/chests/common": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "betterdungeons:zombie_dungeon/chests/common": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterdungeons:small_nether_dungeon/chests/common": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterdungeons:zombie_dungeon/chests/special": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterdungeons:zombie_dungeon/chests/tombstone": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterstrongholds:chests/cmd_yung": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "betterstrongholds:chests/armoury": {
+ "rolls": 3.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "betterstrongholds:chests/crypt": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterdeserttemples:chests/wardrobe": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "betterdeserttemples:chests/tomb_pharaoh": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 2
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterdeserttemples:chests/pharaoh_hidden": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 2
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterfortresses:chests/keep": {
+ "rolls": 0.25,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/lost_soul_city_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/desert_pyramid_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/badlands_dungeon_loot_high": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/level_three_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/ocean_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/ocean_ruin_fortress": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/nether_lava_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/badlands_dungeon_loot_low": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/end_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_4_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_4_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/level_one_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/bone_dungeon_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 3
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/ruin_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "philipsruins:chest/ancient_ruins_loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "awesomedungeonnether:chests/awesome_dungeon": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "awesomedungeonocean:chests/awesome_dungeon": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "awesomedungeonend:chests/awesome_dungeon": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "awesomedungeon:chests/awesome_dungeon": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "structory:outcast/bandit/desert_copper": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "structory:outcast/generic/bandit": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "structory:outcast/mine/loot": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "structory:outcast/settlement": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "structory:outcast/generic/miner": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "structory:outcast/bandit/desert": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "structory:outcast/farm_ruin": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "structory:outcast/ruin/ruin": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "kaisyn:village/exclusives/village_piglin_house": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "kaisyn:outpost/common/armory": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ }
+ ]
+ },
+ "kaisyn:village/exclusives/village_piglin_barrel": {
+ "rolls": 0.2,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:underground/chest": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:spire/common": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:spire/junk": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:ruin/glacial/main_cs": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:spire/treasure": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.0,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:desert_outpost": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "terralith:ruin/glacial/junk": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betternether:chests/wither_tower_bonus": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_4_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betternether:chests/city_surprise": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_4_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterend:chests/shadow_forest": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "betterend:chests/umbrella_jungle": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "betterend:chests/foggy_mushroomland": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "betterend:chests/biome": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/thornborn_towers/thornborn_towers_top_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise_seven_seas:chests/victory_frigate/victory_frigate_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/infested_temple/infested_temple_top_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/illager_windmill/illager_windmill_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/bandit_towers/bandit_towers_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/ceryneian_hind/ceryneian_hind_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/small_blimp/small_blimp_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/heavenly_conqueror/heavenly_conqueror_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/aviary/aviary_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/illager_corsair/illager_corsair_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/typhon/typhon_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise_seven_seas:chests/corsair_corvette/corsair_corvette_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise_seven_seas:chests/small_yacht/small_yacht_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/mushroom_house/mushroom_house_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_0_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ }
+ ]
+ },
+ "dungeons_arise:chests/jungle_tree_house/jungle_tree_house_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/illager_galley/illager_galley_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/undead_pirate_ship/undead_pirate_ship_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/heavenly_challenger/heavenly_challenger_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/heavenly_rider/heavenly_rider_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:golden_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/illager_fort/illager_fort_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/keep_kayra/keep_kayra_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise_seven_seas:chests/pirate_junk/pirate_junk_treasure": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/mushroom_mines/mushroom_mines_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/mines_treasure_medium": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/keep_kayra/keep_kayra_library_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/mining_system/mining_system_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/shiraz_palace/shiraz_palace_treasure": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_3_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/foundry/foundry_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/keep_kayra/keep_kayra_garden_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/plague_asylum/plague_asylum_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise_seven_seas:chests/unicorn_galleon/unicorn_galleon_treasure": {
+ "rolls": 1.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/shiraz_palace/shiraz_palace_library": {
+ "rolls": 0.5,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "dungeons_arise:chests/shiraz_palace/shiraz_palace_elite": {
+ "rolls": 2.0,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_2_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_2_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_3_armors",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_2_accessories",
+ "weight": 1
+ },
+ {
+ "id": "#rpg_series:tier_3_accessories",
+ "weight": 1
+ }
+ ]
+ }
+ },
+ "regex_injectors": {
+ "^dungeons_arise:chests.*barrels$": {
+ "rolls": 0.2,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ },
+ "^dungeons_arise:chests.*normal$": {
+ "rolls": 0.35,
+ "bonus_rolls": 0.2,
+ "entries": [
+ {
+ "id": "#rpg_series:tier_1_weapons",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_armors",
+ "weight": 1,
+ "enchant": {
+ "min_power": 1.0,
+ "max_power": 30.0,
+ "allow_treasure": true
+ }
+ },
+ {
+ "id": "#rpg_series:tier_1_accessories",
+ "weight": 1
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/config/rpg_series/tag_cache.json b/config/rpg_series/tag_cache.json
new file mode 100644
index 0000000..969e275
--- /dev/null
+++ b/config/rpg_series/tag_cache.json
@@ -0,0 +1,229 @@
+{
+ "cache": {
+ "rpg_series:tier_4_weapons": [],
+ "rpg_series:tier_1_armors": [
+ "archers:archer_armor_chest",
+ "archers:archer_armor_feet",
+ "archers:archer_armor_head",
+ "archers:archer_armor_legs",
+ "paladins:paladin_armor_chest",
+ "paladins:paladin_armor_feet",
+ "paladins:paladin_armor_head",
+ "paladins:paladin_armor_legs",
+ "paladins:priest_robe_chest",
+ "paladins:priest_robe_feet",
+ "paladins:priest_robe_head",
+ "paladins:priest_robe_legs",
+ "rogues:rogue_armor_chest",
+ "rogues:rogue_armor_feet",
+ "rogues:rogue_armor_head",
+ "rogues:rogue_armor_legs",
+ "rogues:warrior_armor_chest",
+ "rogues:warrior_armor_feet",
+ "rogues:warrior_armor_head",
+ "rogues:warrior_armor_legs",
+ "wizards:wizard_robe_chest",
+ "wizards:wizard_robe_feet",
+ "wizards:wizard_robe_head",
+ "wizards:wizard_robe_legs"
+ ],
+ "rpg_series:tier_2_armors": [
+ "archers:ranger_armor_chest",
+ "archers:ranger_armor_feet",
+ "archers:ranger_armor_head",
+ "archers:ranger_armor_legs",
+ "paladins:crusader_armor_chest",
+ "paladins:crusader_armor_feet",
+ "paladins:crusader_armor_head",
+ "paladins:crusader_armor_legs",
+ "paladins:prior_robe_chest",
+ "paladins:prior_robe_feet",
+ "paladins:prior_robe_head",
+ "paladins:prior_robe_legs",
+ "rogues:assassin_armor_chest",
+ "rogues:assassin_armor_head",
+ "rogues:assassin_armor_feet",
+ "rogues:assassin_armor_legs",
+ "rogues:berserker_armor_chest",
+ "rogues:berserker_armor_head",
+ "rogues:berserker_armor_feet",
+ "rogues:berserker_armor_legs",
+ "wizards:arcane_robe_chest",
+ "wizards:arcane_robe_feet",
+ "wizards:arcane_robe_head",
+ "wizards:arcane_robe_legs",
+ "wizards:fire_robe_chest",
+ "wizards:fire_robe_feet",
+ "wizards:fire_robe_head",
+ "wizards:fire_robe_legs",
+ "wizards:frost_robe_chest",
+ "wizards:frost_robe_feet",
+ "wizards:frost_robe_head",
+ "wizards:frost_robe_legs"
+ ],
+ "rpg_series:tier_3_armors": [
+ "archers:netherite_ranger_armor_head",
+ "archers:netherite_ranger_armor_chest",
+ "archers:netherite_ranger_armor_legs",
+ "archers:netherite_ranger_armor_feet",
+ "paladins:netherite_crusader_armor_head",
+ "paladins:netherite_crusader_armor_chest",
+ "paladins:netherite_crusader_armor_legs",
+ "paladins:netherite_crusader_armor_feet",
+ "paladins:netherite_prior_robe_head",
+ "paladins:netherite_prior_robe_chest",
+ "paladins:netherite_prior_robe_legs",
+ "paladins:netherite_prior_robe_feet",
+ "rogues:netherite_assassin_armor_head",
+ "rogues:netherite_assassin_armor_chest",
+ "rogues:netherite_assassin_armor_legs",
+ "rogues:netherite_assassin_armor_feet",
+ "rogues:netherite_berserker_armor_head",
+ "rogues:netherite_berserker_armor_chest",
+ "rogues:netherite_berserker_armor_legs",
+ "rogues:netherite_berserker_armor_feet",
+ "wizards:netherite_arcane_robe_head",
+ "wizards:netherite_arcane_robe_chest",
+ "wizards:netherite_arcane_robe_legs",
+ "wizards:netherite_arcane_robe_feet",
+ "wizards:netherite_fire_robe_head",
+ "wizards:netherite_fire_robe_chest",
+ "wizards:netherite_fire_robe_legs",
+ "wizards:netherite_fire_robe_feet",
+ "wizards:netherite_frost_robe_head",
+ "wizards:netherite_frost_robe_chest",
+ "wizards:netherite_frost_robe_legs",
+ "wizards:netherite_frost_robe_feet"
+ ],
+ "rpg_series:tier_0_accessories": [
+ "jewelry:copper_ring",
+ "jewelry:iron_ring",
+ "jewelry:gold_ring"
+ ],
+ "rpg_series:tier_1_accessories": [
+ "jewelry:emerald_necklace",
+ "jewelry:diamond_necklace",
+ "paladins:iron_kite_shield"
+ ],
+ "rpg_series:tier_3_weapons": [
+ "archers:netherite_shortbow",
+ "archers:netherite_longbow",
+ "archers:netherite_rapid_crossbow",
+ "archers:netherite_heavy_crossbow",
+ "archers:netherite_spear",
+ "paladins:netherite_mace",
+ "paladins:netherite_great_hammer",
+ "paladins:netherite_claymore",
+ "paladins:netherite_holy_staff",
+ "rogues:netherite_dagger",
+ "rogues:netherite_sickle",
+ "rogues:netherite_double_axe",
+ "rogues:netherite_glaive",
+ "wizards:staff_netherite_arcane",
+ "wizards:staff_netherite_fire",
+ "wizards:staff_netherite_frost"
+ ],
+ "rpg_series:tier_2_accessories": [
+ "jewelry:ruby_ring",
+ "jewelry:topaz_ring",
+ "jewelry:citrine_ring",
+ "jewelry:jade_ring",
+ "jewelry:sapphire_ring",
+ "jewelry:tanzanite_ring",
+ "jewelry:ruby_necklace",
+ "jewelry:topaz_necklace",
+ "jewelry:citrine_necklace",
+ "jewelry:jade_necklace",
+ "jewelry:sapphire_necklace",
+ "jewelry:tanzanite_necklace",
+ "paladins:diamond_kite_shield"
+ ],
+ "rpg_series:tier_3_accessories": [
+ "jewelry:netherite_ruby_ring",
+ "jewelry:netherite_topaz_ring",
+ "jewelry:netherite_citrine_ring",
+ "jewelry:netherite_jade_ring",
+ "jewelry:netherite_sapphire_ring",
+ "jewelry:netherite_tanzanite_ring",
+ "jewelry:netherite_ruby_necklace",
+ "jewelry:netherite_topaz_necklace",
+ "jewelry:netherite_citrine_necklace",
+ "jewelry:netherite_jade_necklace",
+ "jewelry:netherite_sapphire_necklace",
+ "jewelry:netherite_tanzanite_necklace",
+ "paladins:netherite_kite_shield"
+ ],
+ "rpg_series:tier_1_weapons": [
+ "minecraft:crossbow",
+ "archers:composite_longbow",
+ "archers:iron_spear",
+ "paladins:iron_mace",
+ "paladins:iron_great_hammer",
+ "paladins:iron_claymore",
+ "paladins:holy_staff",
+ "rogues:iron_dagger",
+ "rogues:iron_sickle",
+ "rogues:iron_double_axe",
+ "rogues:iron_glaive",
+ "wizards:staff_wizard"
+ ],
+ "rpg_series:golden_weapons": [
+ "archers:golden_spear",
+ "paladins:golden_claymore",
+ "paladins:golden_great_hammer",
+ "paladins:golden_mace",
+ "paladins:golden_kite_shield",
+ "rogues:golden_dagger",
+ "rogues:golden_sickle",
+ "rogues:golden_double_axe",
+ "rogues:golden_glaive"
+ ],
+ "rpg_series:tier_2_weapons": [
+ "archers:mechanic_shortbow",
+ "archers:royal_longbow",
+ "archers:rapid_crossbow",
+ "archers:heavy_crossbow",
+ "archers:diamond_spear",
+ "paladins:diamond_mace",
+ "paladins:diamond_great_hammer",
+ "paladins:diamond_claymore",
+ "paladins:diamond_holy_staff",
+ "rogues:diamond_dagger",
+ "rogues:diamond_sickle",
+ "rogues:diamond_double_axe",
+ "rogues:diamond_glaive",
+ "wizards:staff_arcane",
+ "wizards:staff_fire",
+ "wizards:staff_frost"
+ ],
+ "rpg_series:tier_4_accessories": [
+ "jewelry:unique_attack_ring",
+ "jewelry:unique_attack_necklace",
+ "jewelry:unique_dex_ring",
+ "jewelry:unique_dex_necklace",
+ "jewelry:unique_tank_ring",
+ "jewelry:unique_tank_necklace",
+ "jewelry:unique_archer_ring",
+ "jewelry:unique_archer_necklace",
+ "jewelry:unique_arcane_ring",
+ "jewelry:unique_arcane_necklace",
+ "jewelry:unique_fire_ring",
+ "jewelry:unique_fire_necklace",
+ "jewelry:unique_frost_ring",
+ "jewelry:unique_frost_necklace",
+ "jewelry:unique_healing_ring",
+ "jewelry:unique_healing_necklace"
+ ],
+ "rpg_series:tier_0_weapons": [
+ "minecraft:bow",
+ "archers:flint_spear",
+ "paladins:wooden_great_hammer",
+ "paladins:stone_great_hammer",
+ "paladins:stone_claymore",
+ "paladins:acolyte_wand",
+ "rogues:flint_dagger",
+ "rogues:stone_double_axe",
+ "wizards:wand_novice"
+ ]
+ }
+} \ No newline at end of file
diff --git a/config/sliceanddice-client.toml b/config/sliceanddice-client.toml
new file mode 100644
index 0000000..ed46892
--- /dev/null
+++ b/config/sliceanddice-client.toml
@@ -0,0 +1,2 @@
+[effects]
+ seasonal = true
diff --git a/config/sliceanddice-common.toml b/config/sliceanddice-common.toml
new file mode 100644
index 0000000..12d3e74
--- /dev/null
+++ b/config/sliceanddice-common.toml
@@ -0,0 +1,21 @@
+[harvester]
+ uses_knife = true
+
+[slicer]
+ consume_tool_durability = true
+ ignore_rotation = false
+ jei_show_converted_recipes = false
+
+[basin_cooking]
+ enabled = true
+ replace_fluid_containers = true
+ #Allowed Values: NONE, HEATED, SUPERHEATED
+ heat_condition = "HEATED"
+
+[sprinkler]
+ #Range: 10 ~ 2048
+ fluid_capacity = 300
+ #Range: 0 ~ 2048
+ fluid_per_use = 100
+ #Range: 1 ~ 32
+ horizontal_range = 5
diff --git a/config/sophisticatedbackpacks-common.toml b/config/sophisticatedbackpacks-common.toml
new file mode 100644
index 0000000..da6c60e
--- /dev/null
+++ b/config/sophisticatedbackpacks-common.toml
@@ -0,0 +1,4 @@
+#Common Settings
+[common]
+ #Turns on/off loot added to various vanilla chest loot tables
+ chestLootEnabled = true
diff --git a/config/sophisticatedbackpacks-server.toml b/config/sophisticatedbackpacks-server.toml
new file mode 100644
index 0000000..0ff0ea6
--- /dev/null
+++ b/config/sophisticatedbackpacks-server.toml
@@ -0,0 +1,446 @@
+#Server Settings
+[server]
+ #List of items that are not allowed to be put in backpacks - e.g. "minecraft:shulker_box"
+ disallowedItems = []
+ #Determines if container items (those that override canFitInsideContainerItems to false) are able to fit in backpacks
+ containerItemsDisallowed = false
+ #List of blocks that inventory interaction upgrades can't interact with - e.g. "minecraft:shulker_box"
+ noInteractionBlocks = []
+ #List of blocks that are not allowed to connect to backpacks - e.g. "refinedstorage:external_storage"
+ noConnectionBlocks = []
+ #Maximum number of upgrades of type per backpack in format of "UpgradeRegistryName[or UpgradeGroup]|MaxNumber"
+ maxUpgradesPerStorage = ["stack_upgrades|3", "jukebox_upgrades|1", "furnace_upgrades|1"]
+ #Turns on/off item fluid handler of backpack in its item form. There are some dupe bugs caused by default fluid handling implementation that manifest when backpack is drained / filled in its item form in another mod's tank and the only way to prevent them is disallowing drain/fill in item form altogether
+ itemFluidHandlerEnabled = true
+ #Determines whether player can right click on backpack that another player is wearing to open it. If off will turn off that capability for everyone and remove related settings from backpack.
+ allowOpeningOtherPlayerBackpacks = true
+ #Allows disabling item display settings. Primarily in cases where custom backpack model doesn't support showing the item. (Requires game restart to take effect)
+ itemDisplayDisabled = false
+ #Allows disabling logic that dedupes backpacks with the same UUID in players' inventory. This is here to allow turning off the logic just in case it would be causing performance issues.
+ tickDedupeLogicDisabled = false
+ #Determines if backpacks can be placed in container items (those that check for return value of canFitInsideContainerItems)
+ canBePlacedInContainerItems = false
+
+ #Leather Backpack Settings
+ [server.leatherBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 27
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Copper Backpack Settings
+ [server.copperBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 45
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Iron Backpack Settings
+ [server.ironBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 54
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Gold Backpack Settings
+ [server.goldBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 81
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Diamond Backpack Settings
+ [server.diamondBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 108
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Netherite Backpack Settings
+ [server.netheriteBackpack]
+ #Number of inventory slots in the backpack
+ #Range: 1 ~ 144
+ inventorySlotCount = 120
+ #Number of upgrade slots in the backpack
+ #Range: 0 ~ 10
+ upgradeSlotCount = 7
+
+ #Compacting Upgrade Settings
+ [server.compactingUpgrade]
+ #Number of Compacting Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Compacting Upgrade Settings
+ [server.advancedCompactingUpgrade]
+ #Number of Advanced Compacting Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Deposit Upgrade Settings
+ [server.depositUpgrade]
+ #Number of Deposit Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Deposit Upgrade Settings
+ [server.advancedDepositUpgrade]
+ #Number of Advanced Deposit Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Feeding Upgrade Settings
+ [server.feedingUpgrade]
+ #Number of Feeding Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Feeding Upgrade Settings
+ [server.advancedFeedingUpgrade]
+ #Number of Advanced Feeding Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Filter Upgrade Settings
+ [server.filterUpgrade]
+ #Number of Filter Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Filter Upgrade Settings
+ [server.advancedFilterUpgrade]
+ #Number of Advanced Filter Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Magnet Upgrade Settings
+ [server.magnetUpgrade]
+ #Number of Magnet Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+ #Range around storage in blocks at which magnet will pickup items
+ #Range: 1 ~ 20
+ magnetRange = 3
+
+ #Advanced Magnet Upgrade Settings
+ [server.advancedMagnetUpgrade]
+ #Number of Advanced Magnet Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+ #Range around storage in blocks at which magnet will pickup items
+ #Range: 1 ~ 20
+ magnetRange = 5
+
+ #Pickup Upgrade Settings
+ [server.pickupUpgrade]
+ #Number of Pickup Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Pickup Upgrade Settings
+ [server.advancedPickupUpgrade]
+ #Number of Advanced Pickup Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Refill Upgrade Settings
+ [server.refillUpgrade]
+ #Number of Refill Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 6
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Refill Upgrade Settings
+ [server.advancedRefillUpgrade]
+ #Number of Advanced Refill Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 12
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Restock Upgrade Settings
+ [server.restockUpgrade]
+ #Number of Restock Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Restock Upgrade Settings
+ [server.advancedRestockUpgrade]
+ #Number of Advanced Restock Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Void Upgrade Settings
+ [server.voidUpgrade]
+ #Number of Void Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+ #Determines whether void upgrade allows voiding anything or it only has overflow option
+ voidAnythingEnabled = true
+
+ #Advanced Void Upgrade Settings
+ [server.advancedVoidUpgrade]
+ #Number of Advanced Void Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+ #Determines whether void upgrade allows voiding anything or it only has overflow option
+ voidAnythingEnabled = true
+
+ #Stack Upgrade Settings
+ [server.stackUpgrade]
+ #List of items that are not supposed to stack in storage even when stack upgrade is inserted. Item registry names are expected here.
+ nonStackableItems = ["minecraft:bundle", "minecraft:shulker_box", "minecraft:white_shulker_box", "minecraft:orange_shulker_box", "minecraft:magenta_shulker_box", "minecraft:light_blue_shulker_box", "minecraft:yellow_shulker_box", "minecraft:lime_shulker_box", "minecraft:pink_shulker_box", "minecraft:gray_shulker_box", "minecraft:light_gray_shulker_box", "minecraft:cyan_shulker_box", "minecraft:purple_shulker_box", "minecraft:blue_shulker_box", "minecraft:brown_shulker_box", "minecraft:green_shulker_box", "minecraft:red_shulker_box", "minecraft:black_shulker_box"]
+
+ #Smelting Upgrade Settings
+ [server.smeltingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Smoking Upgrade Settings
+ [server.smokingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Blasting Upgrade Settings
+ [server.blastingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Auto-Smelting Upgrade Settings
+ [server.autoSmeltingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Auto-Smoking Upgrade Settings
+ [server.autoSmokingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Auto-Blasting Upgrade Settings
+ [server.autoBlastingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Inception Upgrade Settings
+ [server.inceptionUpgrade]
+ #Allows / Disallows backpack upgrades to work with inventories of Backpacks in the Backpack with Inception Upgrade
+ upgradesUseInventoriesOfBackpacksInBackpack = true
+ #Allows / Disallows upgrades to be functional even when they are in Backpacks in the inventory of Backpack with Inception Upgrade
+ upgradesInContainedBackpacksAreFunctional = true
+
+ #Tool Swapper Upgrade Settings
+ [server.toolSwapperUpgrade]
+ #Number of Tool Swapper Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 8
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Tank Upgrade Settings
+ [server.tankUpgrade]
+ #Capacity in mB the tank upgrade will have per row of storage slots
+ #Range: 500 ~ 20000
+ capacityPerSlotRow = 4000
+ #Ratio that gets applied (multiplies) to inventory stack multiplier before this is applied to max energy of the battery and max in/out. Value lower than 1 makes stack multiplier affect the max energy less, higher makes it affect the max energy more. 0 turns off stack multiplier affecting battery upgrade
+ #Range: 0.0 ~ 5.0
+ stackMultiplierRatio = 1.0
+ #Cooldown between fill/drain actions done on fluid containers in tank slots. Only fills/drains one bucket worth to/from container after this cooldown and then waits again.
+ #Range: 1 ~ 100
+ autoFillDrainContainerCooldown = 20
+ #How much FE can be transfered in / out per operation. This is a base transfer rate and same as max capacity gets multiplied by number of rows in storage and stack multiplier.
+ #Range: 1 ~ 1000
+ maxInputOutput = 20
+ #Energy in FE the battery upgrade will have per row of storage slots
+ #Range: 500 ~ 50000
+ energyPerSlotRow = 10000
+
+ #Pump Upgrade Settings
+ [server.pumpUpgrade]
+ #Number of fluid filter slots
+ #Range: 1 ~ 20
+ filterSlots = 4
+ #How much mB can be transfered in / out per operation. This is a base transfer rate that gets multiplied by number of rows in storage and stack multiplier.
+ #Range: 1 ~ 1000
+ maxInputOutput = 20
+ #Ratio that gets applied (multiplies) to inventory stack multiplier before this is applied to max input/output value. Value lower than 1 makes stack multiplier affect the capacity less, higher makes it affect the capacity more. 0 turns off stack multiplier affecting input/output
+ #Range: 0.0 ~ 5.0
+ stackMultiplierRatio = 1.0
+
+ #Xp Pump Upgrade Settings
+ [server.xpPumpUpgrade]
+ #Whether xp pump can mend items with mending. Set false here to turn off the feature altogether.
+ mendingOn = true
+ #How many experience points at a maximum would be used to mend an item per operation (every 5 ticks and 1 xp point usually translates to 2 damage repaired).
+ #Range: 1 ~ 20
+ maxXpPointsPerMending = 5
+
+ #Advanced Jukebox Upgrade Settings
+ [server.advancedJukeboxUpgrade]
+ #Number of slots for discs in jukebox upgrade
+ #Range: 1 ~ 16
+ numberOfSlots = 12
+ #Number of lots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Settings for Spawning Entities with Backpack
+ [server.entityBackpackAdditions]
+ #Chance of an entity spawning with Backpack
+ #Range: 0.0 ~ 1.0
+ chance = 0.01
+ #Turns on/off addition of loot into backpacks
+ addLoot = true
+ #Turns on/off buffing the entity that wears backpack with potion effects. These are scaled based on how much loot is added.
+ buffWithPotionEffects = true
+ #Turns on/off buffing the entity that wears backpack with additional health. Health is scaled based on backpack tier the mob wears.
+ buffHealth = true
+ #Turns on/off equiping the entity that wears backpack with armor. What armor material and how enchanted is scaled based on backpack tier the mob wears.
+ equipWithArmor = true
+ #Map of entities that can spawn with backpack and related loot tables (if adding a loot is enabled) in format of "EntityRegistryName|LootTableName"
+ entityLootTableList = ["minecraft:creeper|minecraft:chests/desert_pyramid", "minecraft:drowned|minecraft:chests/shipwreck_treasure", "minecraft:enderman|minecraft:chests/end_city_treasure", "minecraft:evoker|minecraft:chests/woodland_mansion", "minecraft:husk|minecraft:chests/desert_pyramid", "minecraft:piglin|minecraft:chests/bastion_bridge", "minecraft:piglin_brute|minecraft:chests/bastion_treasure", "minecraft:pillager|minecraft:chests/pillager_outpost", "minecraft:skeleton|minecraft:chests/simple_dungeon", "minecraft:stray|minecraft:chests/igloo_chest", "minecraft:vex|minecraft:chests/woodland_mansion", "minecraft:vindicator|minecraft:chests/woodland_mansion", "minecraft:witch|minecraft:chests/buried_treasure", "minecraft:wither_skeleton|minecraft:chests/nether_bridge", "minecraft:zombie|minecraft:chests/simple_dungeon", "minecraft:zombie_villager|minecraft:chests/village/village_armorer", "minecraft:zombified_piglin|minecraft:chests/bastion_other"]
+ #List of music discs that are not supposed to be played by entities
+ discBlockList = ["botania:record_gaia_1", "botania:record_gaia_2"]
+ #Turns on/off a chance that the entity that wears backpack gets jukebox upgrade and plays a music disc.
+ playJukebox = true
+ #Determines whether backpack drops to fake players if killed by them in addition to real ones that it always drops to
+ dropToFakePlayers = false
+ #Chance of mob dropping backpack when killed by player
+ #Range: 0.0 ~ 1.0
+ backpackDropChance = 0.5
+ #Chance increase per looting level of mob dropping backpack
+ #Range: 0.0 ~ 0.3
+ lootingChanceIncreasePerLevel = 0.15
+
+ [server.nerfs]
+ #Determines if too many backpacks in player's inventory cause slowness to the player
+ tooManyBackpacksSlowness = false
+ #Maximum number of backpacks in player's inventory that will not cause slowness
+ #Range: 1 ~ 27
+ maxNumberOfBackpacks = 3
+ #Ratio of slowness levels per every backpack above the maximum number allowed. (number of backpacks above the max gets multiplied by this number and ceiled)
+ #Range: 0.1 ~ 5.0
+ slownessLevelsPerAdditionalBackpack = 1.0
+ #Determines if active upgrades will only work in the backpack that's worn by the player. Active upgrades are for example magnet, pickup, cooking, feeding upgrades.
+ onlyWornBackpackTriggersUpgrades = false
diff --git a/config/sophisticatedcore-client.toml b/config/sophisticatedcore-client.toml
new file mode 100644
index 0000000..3c2d752
--- /dev/null
+++ b/config/sophisticatedcore-client.toml
@@ -0,0 +1,7 @@
+#Client Settings
+[client]
+ #Positions where sort buttons can display to help with conflicts with controls from other mods
+ #Allowed Values: TITLE_LINE_RIGHT, BELOW_UPGRADES, BELOW_UPGRADE_TABS, HIDDEN
+ sortButtonsPosition = "TITLE_LINE_RIGHT"
+ #Whether click sound should play when custom buttons are clicked in gui
+ playButtonSound = true
diff --git a/config/sophisticatedcore-common.toml b/config/sophisticatedcore-common.toml
new file mode 100644
index 0000000..8b501b3
--- /dev/null
+++ b/config/sophisticatedcore-common.toml
@@ -0,0 +1,4 @@
+#Common Settings
+[common]
+ #Disable / enable any items here (disables their recipes)
+ enabledItems = ["sophisticatedbackpacks:void_upgrade|true", "sophisticatedbackpacks:advanced_refill_upgrade|true", "sophisticatedstorage:copper_to_iron_tier_upgrade|true", "sophisticatedstorage:barrel|true", "sophisticatedstorage:storage_output|true", "sophisticatedbackpacks:stack_upgrade_starter_tier|true", "sophisticatedstorage:smoking_upgrade|true", "sophisticatedstorage:limited_barrel_3|true", "sophisticatedstorage:limited_barrel_2|true", "sophisticatedstorage:limited_barrel_1|true", "sophisticatedstorage:limited_barrel_4|true", "sophisticatedbackpacks:feeding_upgrade|true", "sophisticatedstorage:iron_barrel|true", "sophisticatedstorage:stack_upgrade_tier_1|true", "sophisticatedstorage:stack_upgrade_tier_2|true", "sophisticatedstorage:stack_upgrade_tier_3|true", "sophisticatedstorage:stack_upgrade_tier_4|true", "sophisticatedstorage:stack_upgrade_tier_5|true", "sophisticatedstorage:stonecutter_upgrade|true", "sophisticatedstorage:stack_downgrade_tier_3|true", "sophisticatedstorage:stack_downgrade_tier_2|true", "sophisticatedstorage:limited_iron_barrel_2|true", "sophisticatedstorage:stack_downgrade_tier_1|true", "sophisticatedstorage:crafting_upgrade|true", "sophisticatedstorage:advanced_void_upgrade|true", "sophisticatedbackpacks:compacting_upgrade|true", "sophisticatedbackpacks:advanced_restock_upgrade|true", "sophisticatedstorage:iron_chest|true", "sophisticatedstorage:upgrade_base|true", "sophisticatedstorage:advanced_feeding_upgrade|true", "sophisticatedstorage:chest|true", "sophisticatedstorage:limited_gold_barrel_1|true", "sophisticatedstorage:limited_gold_barrel_2|true", "sophisticatedstorage:limited_gold_barrel_3|true", "sophisticatedstorage:limited_gold_barrel_4|true", "sophisticatedbackpacks:advanced_tool_swapper_upgrade|true", "sophisticatedstorage:iron_to_diamond_tier_upgrade|true", "sophisticatedstorage:stack_upgrade_tier_1_plus|true", "sophisticatedstorage:iron_shulker_box|true", "sophisticatedbackpacks:magnet_upgrade|true", "sophisticatedstorage:magnet_upgrade|true", "sophisticatedstorage:advanced_jukebox_upgrade|true", "sophisticatedbackpacks:diamond_backpack|true", "sophisticatedstorage:auto_smoking_upgrade|true", "sophisticatedbackpacks:smithing_upgrade|true", "sophisticatedstorage:gold_barrel|true", "sophisticatedstorage:smelting_upgrade|true", "sophisticatedbackpacks:tank_upgrade|true", "sophisticatedstorage:jukebox_upgrade|true", "sophisticatedbackpacks:stack_downgrade_tier_2|true", "sophisticatedbackpacks:advanced_pickup_upgrade|true", "sophisticatedbackpacks:auto_smoking_upgrade|true", "sophisticatedstorage:iron_to_gold_tier_upgrade|true", "sophisticatedbackpacks:stack_upgrade_omega_tier|true", "sophisticatedbackpacks:auto_blasting_upgrade|true", "sophisticatedstorage:copper_barrel|true", "sophisticatedstorage:storage_link|true", "sophisticatedstorage:gold_shulker_box|true", "sophisticatedstorage:gold_chest|true", "sophisticatedstorage:auto_blasting_upgrade|true", "sophisticatedstorage:netherite_shulker_box|true", "sophisticatedbackpacks:smelting_upgrade|true", "sophisticatedstorage:advanced_pickup_upgrade|true", "sophisticatedbackpacks:battery_upgrade|true", "sophisticatedbackpacks:smoking_upgrade|true", "sophisticatedstorage:diamond_barrel|true", "sophisticatedbackpacks:advanced_feeding_upgrade|true", "sophisticatedstorage:limited_copper_barrel_1|true", "sophisticatedstorage:limited_copper_barrel_2|true", "sophisticatedstorage:limited_copper_barrel_3|true", "sophisticatedstorage:limited_copper_barrel_4|true", "sophisticatedbackpacks:advanced_magnet_upgrade|true", "sophisticatedstorage:controller|true", "sophisticatedbackpacks:filter_upgrade|true", "sophisticatedstorage:hopper_upgrade|true", "sophisticatedstorage:compacting_upgrade|true", "sophisticatedstorage:advanced_magnet_upgrade|true", "sophisticatedstorage:limited_iron_barrel_3|true", "sophisticatedbackpacks:blasting_upgrade|true", "sophisticatedbackpacks:stack_downgrade_tier_3|true", "sophisticatedbackpacks:stack_upgrade_tier_3|true", "sophisticatedbackpacks:deposit_upgrade|true", "sophisticatedstorage:filter_upgrade|true", "sophisticatedbackpacks:advanced_filter_upgrade|true", "sophisticatedbackpacks:iron_backpack|true", "sophisticatedbackpacks:pickup_upgrade|true", "sophisticatedstorage:basic_to_copper_tier_upgrade|true", "sophisticatedstorage:diamond_shulker_box|true", "sophisticatedstorage:copper_shulker_box|true", "sophisticatedstorage:shulker_box|true", "sophisticatedstorage:gold_to_diamond_tier_upgrade|true", "sophisticatedstorage:advanced_compacting_upgrade|true", "sophisticatedbackpacks:stack_downgrade_tier_1|true", "sophisticatedbackpacks:stonecutter_upgrade|true", "sophisticatedbackpacks:advanced_compacting_upgrade|true", "sophisticatedstorage:limited_diamond_barrel_1|true", "sophisticatedstorage:limited_diamond_barrel_2|true", "sophisticatedstorage:limited_diamond_barrel_3|true", "sophisticatedstorage:limited_diamond_barrel_4|true", "sophisticatedbackpacks:backpack|true", "sophisticatedbackpacks:tool_swapper_upgrade|true", "sophisticatedstorage:advanced_hopper_upgrade|true", "sophisticatedbackpacks:advanced_void_upgrade|true", "sophisticatedstorage:copper_chest|true", "sophisticatedstorage:feeding_upgrade|true", "sophisticatedbackpacks:crafting_upgrade|true", "sophisticatedstorage:compression_upgrade|true", "sophisticatedbackpacks:stack_upgrade_tier_4|true", "sophisticatedstorage:diamond_chest|true", "sophisticatedstorage:advanced_filter_upgrade|true", "sophisticatedbackpacks:jukebox_upgrade|true", "sophisticatedbackpacks:everlasting_upgrade|true", "sophisticatedstorage:storage_io|true", "sophisticatedstorage:limited_iron_barrel_4|true", "sophisticatedstorage:limited_iron_barrel_1|true", "sophisticatedstorage:pickup_upgrade|true", "sophisticatedstorage:auto_smelting_upgrade|true", "sophisticatedbackpacks:inception_upgrade|true", "sophisticatedbackpacks:advanced_jukebox_upgrade|true", "sophisticatedstorage:basic_to_iron_tier_upgrade|true", "sophisticatedstorage:copper_to_gold_tier_upgrade|true", "sophisticatedbackpacks:anvil_upgrade|true", "sophisticatedstorage:blasting_upgrade|true", "sophisticatedbackpacks:xp_pump_upgrade|true", "sophisticatedbackpacks:auto_smelting_upgrade|true", "sophisticatedstorage:basic_tier_upgrade|true", "sophisticatedbackpacks:stack_upgrade_tier_2|true", "sophisticatedbackpacks:stack_upgrade_tier_1|true", "sophisticatedstorage:stack_upgrade_omega_tier|true", "sophisticatedstorage:void_upgrade|true", "sophisticatedbackpacks:advanced_pump_upgrade|true", "sophisticatedbackpacks:upgrade_base|true", "sophisticatedstorage:storage_tool|true", "sophisticatedstorage:storage_input|true", "sophisticatedbackpacks:refill_upgrade|true", "sophisticatedstorage:basic_to_gold_tier_upgrade|true", "sophisticatedbackpacks:gold_backpack|true", "sophisticatedstorage:basic_to_diamond_tier_upgrade|true", "sophisticatedbackpacks:copper_backpack|true", "sophisticatedbackpacks:advanced_deposit_upgrade|true", "sophisticatedbackpacks:restock_upgrade|true", "sophisticatedstorage:copper_to_diamond_tier_upgrade|true", "sophisticatedbackpacks:pump_upgrade|true"]
diff --git a/config/sophisticatedstorage-client.toml b/config/sophisticatedstorage-client.toml
new file mode 100644
index 0000000..33483ee
--- /dev/null
+++ b/config/sophisticatedstorage-client.toml
@@ -0,0 +1,6 @@
+#Client-side Settings
+[client]
+ #Determines whether JEI and creative tab will show tinted storage items for iron and higher tiers. Can help with easily removing many of these items from there.
+ showHigherTierTintedVariants = true
+ #Determines whether JEI and creative tab will show only single wood variant of storage item per tier. Makes creative tab and .
+ showSingleWoodVariantOnly = false
diff --git a/config/sophisticatedstorage-common.toml b/config/sophisticatedstorage-common.toml
new file mode 100644
index 0000000..65b308d
--- /dev/null
+++ b/config/sophisticatedstorage-common.toml
@@ -0,0 +1,4 @@
+#Common Settings
+[common]
+ #Determines whether chests / barrels are always dropped as packed with their contents when broken without the need to use packing tape
+ dropPacked = false
diff --git a/config/sophisticatedstorage-server.toml b/config/sophisticatedstorage-server.toml
new file mode 100644
index 0000000..8e05f1d
--- /dev/null
+++ b/config/sophisticatedstorage-server.toml
@@ -0,0 +1,701 @@
+#Server Settings
+[server]
+ #Limit of maximum number of upgrades of type per storage in format of "StorageType|UpgradeRegistryName[or UpgradeGroup]|MaxNumber"
+ maxUpgradesPerStorage = ["chest|stack_upgrades|2", "chest|jukebox_upgrades|1", "chest|furnace_upgrades|1", "shulker_box|stack_upgrades|2", "shulker_box|jukebox_upgrades|1", "shulker_box|furnace_upgrades|1", "barrel|stack_upgrades|2", "barrel|jukebox_upgrades|1", "barrel|furnace_upgrades|1", "limited_barrel|jukebox_upgrades|1", "limited_barrel|furnace_upgrades|1"]
+ #Threshold of number of item entities dropped from chest / barrel above which break is canceled (unless shift key is pressed) and message is displayed explaining to player many drops and packing tape use
+ #Range: 0 ~ 1000
+ tooManyItemEntityDrops = 200
+
+ #Wood Barrel Settings
+ [server.WoodBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 27
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Copper Barrel Settings
+ [server.CopperBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 45
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Iron Barrel Settings
+ [server.IronBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 54
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Gold Barrel Settings
+ [server.GoldBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 81
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Diamond Barrel Settings
+ [server.DiamondBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 108
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Netherite Barrel Settings
+ [server.NetheriteBarrel]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 132
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Limited Barrel I Settings
+ [server.LimitedBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 32
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Copper Barrel I Settings
+ [server.LimitedCopperBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 53
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Iron Barrel I Settings
+ [server.LimitedIronBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 64
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Limited Gold Barrel I Settings
+ [server.LimitedGoldBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 96
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Limited Diamond Barrel I Settings
+ [server.LimitedDiamondBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 128
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Limited Netherite Barrel I Settings
+ [server.LimitedNetheriteBarrelI]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 160
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Limited Barrel II Settings
+ [server.LimitedBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 16
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Copper Barrel II Settings
+ [server.LimitedCopperBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 27
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Iron Barrel II Settings
+ [server.LimitedIronBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 32
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Limited Gold Barrel II Settings
+ [server.LimitedGoldBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 48
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Limited Diamond Barrel II Settings
+ [server.LimitedDiamondBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 64
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Limited Netherite Barrel II Settings
+ [server.LimitedNetheriteBarrelII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 80
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Limited Barrel III Settings
+ [server.LimitedBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 10
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Copper Barrel III Settings
+ [server.LimitedCopperBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 17
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Iron Barrel III Settings
+ [server.LimitedIronBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 20
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Limited Gold Barrel III Settings
+ [server.LimitedGoldBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 30
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Limited Diamond Barrel III Settings
+ [server.LimitedDiamondBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 40
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Limited Netherite Barrel III Settings
+ [server.LimitedNetheriteBarrelIII]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 50
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Limited Barrel IV Settings
+ [server.LimitedBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 8
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Copper Barrel IV Settings
+ [server.LimitedCopperBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 13
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Limited Iron Barrel IV Settings
+ [server.LimitedIronBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 16
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Limited Gold Barrel IV Settings
+ [server.LimitedGoldBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 24
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Limited Diamond Barrel IV Settings
+ [server.LimitedDiamondBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 32
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Limited Netherite Barrel IV Settings
+ [server.LimitedNetheriteBarrelIV]
+ #Multiplier that's used to calculate base slot limit
+ #Range: 1 ~ 8192
+ baseSlotLimitMultiplier = 40
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Wood Chest Settings
+ [server.WoodChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 27
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Copper Chest Settings
+ [server.CopperChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 45
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Iron Chest Settings
+ [server.IronChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 54
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Gold Chest Settings
+ [server.GoldChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 81
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Diamond Chest Settings
+ [server.DiamondChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 108
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Netherite Chest Settings
+ [server.NetheriteChest]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 132
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ #Shulker Box Settings
+ [server.ShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 27
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Copper Shulker Box Settings
+ [server.CopperShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 45
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 1
+
+ #Iron Shulker Box Settings
+ [server.IronShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 54
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 2
+
+ #Gold Shulker Box Settings
+ [server.GoldShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 81
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 3
+
+ #Diamond Shulker Box Settings
+ [server.DiamondShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 108
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 4
+
+ #Netherite Shulker Box Settings
+ [server.NetheriteShulkerBox]
+ #Number of inventory slots in the storage
+ #Range: 1 ~ 180
+ inventorySlotCount = 132
+ #Number of upgrade slots in the storage
+ #Range: 0 ~ 10
+ upgradeSlotCount = 5
+
+ [server.shulkerBoxDisallowedItems]
+ #List of items that are not allowed to be put in shulkerboxes - e.g. "minecraft:bundle"
+ disallowedItems = []
+ #Determines if container items (those that override canFitInsideContainerItems to false) are able to fit in shulker boxes
+ containerItemsDisallowed = false
+
+ #Stack Upgrade Settings
+ [server.stackUpgrade]
+ #List of items that are not supposed to stack in storage even when stack upgrade is inserted. Item registry names are expected here.
+ nonStackableItems = ["minecraft:bundle", "minecraft:shulker_box", "minecraft:white_shulker_box", "minecraft:orange_shulker_box", "minecraft:magenta_shulker_box", "minecraft:light_blue_shulker_box", "minecraft:yellow_shulker_box", "minecraft:lime_shulker_box", "minecraft:pink_shulker_box", "minecraft:gray_shulker_box", "minecraft:light_gray_shulker_box", "minecraft:cyan_shulker_box", "minecraft:purple_shulker_box", "minecraft:blue_shulker_box", "minecraft:brown_shulker_box", "minecraft:green_shulker_box", "minecraft:red_shulker_box", "minecraft:black_shulker_box"]
+
+ #Compacting Upgrade Settings
+ [server.compactingUpgrade]
+ #Number of Compacting Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Compacting Upgrade Settings
+ [server.advancedCompactingUpgrade]
+ #Number of Advanced Compacting Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Deposit Upgrade Settings
+ [server.depositUpgrade]
+ #Number of Deposit Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Deposit Upgrade Settings
+ [server.advancedDepositUpgrade]
+ #Number of Advanced Deposit Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Feeding Upgrade Settings
+ [server.feedingUpgrade]
+ #Number of Feeding Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Feeding Upgrade Settings
+ [server.advancedFeedingUpgrade]
+ #Number of Advanced Feeding Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Filter Upgrade Settings
+ [server.filterUpgrade]
+ #Number of Filter Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Filter Upgrade Settings
+ [server.advancedFilterUpgrade]
+ #Number of Advanced Filter Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Magnet Upgrade Settings
+ [server.magnetUpgrade]
+ #Number of Magnet Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+ #Range around storage in blocks at which magnet will pickup items
+ #Range: 1 ~ 20
+ magnetRange = 3
+
+ #Advanced Magnet Upgrade Settings
+ [server.advancedMagnetUpgrade]
+ #Number of Advanced Magnet Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+ #Range around storage in blocks at which magnet will pickup items
+ #Range: 1 ~ 20
+ magnetRange = 5
+
+ #Pickup Upgrade Settings
+ [server.pickupUpgrade]
+ #Number of Pickup Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+
+ #Advanced Pickup Upgrade Settings
+ [server.advancedPickupUpgrade]
+ #Number of Advanced Pickup Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+
+ #Void Upgrade Settings
+ [server.voidUpgrade]
+ #Number of Void Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 9
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 3
+ #Determines whether void upgrade allows voiding anything or it only has overflow option
+ voidAnythingEnabled = true
+
+ #Advanced Void Upgrade Settings
+ [server.advancedVoidUpgrade]
+ #Number of Advanced Void Upgrade's filter slots
+ #Range: 1 ~ 20
+ filterSlots = 16
+ #Number of filter slots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
+ #Determines whether void upgrade allows voiding anything or it only has overflow option
+ voidAnythingEnabled = true
+
+ #Smelting Upgrade Settings
+ [server.smeltingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Smoking Upgrade Settings
+ [server.smokingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Blasting Upgrade Settings
+ [server.blastingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+
+ #Auto-Smelting Upgrade Settings
+ [server.autoSmeltingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Auto-Smoking Upgrade Settings
+ [server.autoSmokingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Auto-Blasting Upgrade Settings
+ [server.autoBlastingUpgrade]
+ #Smelting speed multiplier (1.0 equals speed at which vanilla furnace smelts items)
+ #Range: 0.25 ~ 4.0
+ smeltingSpeedMultiplier = 1.0
+ #Fuel efficiency multiplier (1.0 equals speed at which it's used in vanilla furnace)
+ #Range: 0.25 ~ 4.0
+ fuelEfficiencyMultiplier = 1.0
+ #Number of input filter slots
+ #Range: 1 ~ 20
+ inputFilterSlots = 8
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 6
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 20
+ fuelFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 6
+ fuelFilterSlotsInRow = 4
+
+ #Pump Upgrade Settings
+ [server.pumpUpgrade]
+ #Number of fluid filter slots
+ #Range: 1 ~ 20
+ filterSlots = 4
+ #How much mB can be transfered in / out per operation. This is a base transfer rate that gets multiplied by number of rows in storage and stack multiplier.
+ #Range: 1 ~ 1000
+ maxInputOutput = 20
+ #Ratio that gets applied (multiplies) to inventory stack multiplier before this is applied to max input/output value. Value lower than 1 makes stack multiplier affect the capacity less, higher makes it affect the capacity more. 0 turns off stack multiplier affecting input/output
+ #Range: 0.0 ~ 5.0
+ stackMultiplierRatio = 1.0
+
+ #Xp Pump Upgrade Settings
+ [server.xpPumpUpgrade]
+ #Whether xp pump can mend items with mending. Set false here to turn off the feature altogether.
+ mendingOn = true
+ #How many experience points at a maximum would be used to mend an item per operation (every 5 ticks and 1 xp point usually translates to 2 damage repaired).
+ #Range: 1 ~ 20
+ maxXpPointsPerMending = 5
+
+ #Compression Upgrade Settings
+ [server.compressionUpgrade]
+ #Defines how many slots at a maximum compression upgrade is able to use
+ #Range: 3 ~ 9
+ maxNumberOfSlots = 5
+ #List of items that can be decompressed by compression upgrade and their results. Item registry names are expected here in format of "mod:itemBeingDecompressed=Nxmod:itemDecompressResult
+ additionalDecompressibleItems = ["minecraft:glowstone=4xminecraft:glowstone_dust", "minecraft:quartz_block=4xminecraft:quartz"]
+
+ #Hopper Upgrade Settings
+ [server.hopperUpgrade]
+ #Number of input filter slots
+ #Range: 1 ~ 8
+ inputFilterSlots = 2
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 4
+ inputFilterSlotsInRow = 2
+ #Number of fuel filter slots
+ #Range: 1 ~ 8
+ outputFilterSlots = 2
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 4
+ outputFilterSlotsInRow = 2
+ #Number of ticks between each transfer
+ #Range: 1 ~ 100
+ transferSpeedTicks = 8
+ #Maximum stack size that can be transferred in one transfer
+ #Range: 1 ~ 64
+ maxTransferStackSize = 1
+
+ #Advanced Hopper Upgrade Settings
+ [server.advancedHopperUpgrade]
+ #Number of input filter slots
+ #Range: 1 ~ 8
+ inputFilterSlots = 4
+ #Number of input filter slots displayed in a row
+ #Range: 1 ~ 4
+ inputFilterSlotsInRow = 4
+ #Number of fuel filter slots
+ #Range: 1 ~ 8
+ outputFilterSlots = 4
+ #Number of fuel filter slots displayed in a row
+ #Range: 1 ~ 4
+ outputFilterSlotsInRow = 4
+ #Number of ticks between each transfer
+ #Range: 1 ~ 100
+ transferSpeedTicks = 2
+ #Maximum stack size that can be transferred in one transfer
+ #Range: 1 ~ 64
+ maxTransferStackSize = 4
+
+ #Advanced Jukebox Upgrade Settings
+ [server.advancedJukeboxUpgrade]
+ #Number of slots for discs in jukebox upgrade
+ #Range: 1 ~ 16
+ numberOfSlots = 12
+ #Number of lots displayed in a row
+ #Range: 1 ~ 6
+ slotsInRow = 4
diff --git a/config/spell_engine/enchantments.json b/config/spell_engine/enchantments.json
new file mode 100644
index 0000000..85c0863
--- /dev/null
+++ b/config/spell_engine/enchantments.json
@@ -0,0 +1,9 @@
+{
+ "infinity": {
+ "enabled": true,
+ "max_level": 1,
+ "min_cost": 20,
+ "step_cost": 30,
+ "bonus_per_level": 1.0
+ }
+} \ No newline at end of file
diff --git a/config/spell_engine/server.json5 b/config/spell_engine/server.json5
new file mode 100644
index 0000000..ccf1682
--- /dev/null
+++ b/config/spell_engine/server.json5
@@ -0,0 +1,69 @@
+{
+ // Applied as multiplier on top of spell.cast.movement_speed. Default value of 1.0 means no change.
+ "movement_multiplier_speed_while_casting": 1.0,
+ // Allow spells to bypass invulnerability frames. This is required in order for high attack frequency spells (such as beams) to work.
+ "bypass_iframes": true,
+ // Spell haste reduces the cooldown time of abilities
+ "haste_affects_cooldown": true,
+ // Spell costs exhausts (hunger) will be multiplied with this value. Set `0` for no exhaust.
+ "spell_cost_exhaust_multiplier": 1.0,
+ // Spells should cost items. Set `false` to remove rune (or other item) cost from all spells.
+ "spell_cost_item_allowed": true,
+ // Spells should damage items on use. Set `false` to disable.
+ "spell_cost_durability_allowed": true,
+ // The time in ticks of global cooldown to apply to all instant cast spells when casted.
+ "spell_instant_cast_gcd": 0,
+ // Players cannot unequip a spell book, if one of the spells in it is on cooldown.
+ "spell_book_cooldown_lock": true,
+ // Players can use the Spell Binding Table to create spell books.
+ "spell_book_creation_enabled": true,
+ // Spell book creation level cost
+ "spell_book_creation_cost": 1,
+ // Spell book creation level requirement
+ "spell_book_creation_requirement": 1,
+ // Spell binding level cost multiplier
+ "spell_binding_level_cost_multiplier": 1,
+ // Spell binding lapis lazuli cost multiplier
+ "spell_binding_lapis_cost_multiplier": 1,
+ // Should the player be able to cast spells from the offhand spell book?
+ "spell_book_offhand": false,
+ // If set true, a Fireball doesn't collide with an ally, a healing projectile doesn't collide with an enemy
+ "projectiles_pass_thru_irrelevant_targets": true,
+ // Auto swap Bow & Spear cooldown ticks to apply for attack and itemUse
+ "auto_swap_cooldown": 5,
+ // Apply `Spell Casting from Spell Book` capability to anything that subclasses Sword
+ "add_spell_casting_to_swords": true,
+ // Apply `Spell Casting from Spell Book` capability to any item matching this regex. (Not applied of empty)
+ "add_spell_casting_regex": "",
+ // Do not apply `Spell Casting from Spell Book` capability to any item matching this regex. (Not applied of empty)
+ "blacklist_spell_casting_regex": "",
+ /* Relations determine which cases the effect of a player casted spell can effect a target.
+ +----------------+-----------+---------------+----------+----------+--------+
+ | | FRIENDLY | SEMI_FRIENDLY | NEUTRAL | HOSTILE | MIXED |
+ +----------------+-----------+---------------+----------+----------+--------+
+ | DIRECT DAMAGE | 🚫 | ✅ | ✅ | ✅ | ✅ |
+ | AREA DAMAGE | 🚫 | 🚫 | 🚫 | ✅ | ✅ |
+ | DIRECT HEALING | ✅ | ✅ | ✅ | 🚫 | ✅ |
+ | AREA HEALING | ✅ | ✅ | 🚫 | 🚫 | ✅ |
+ +----------------+-----------+---------------+----------+----------+--------+
+
+ The various relation related configs are being checked in the following order:
+ - `player_relations`
+ - `player_relation_to_passives`
+ - `player_relation_to_hostiles`
+ - `player_relation_to_other`
+ (The first relation to be found for the target will be applied.)
+ */
+ "player_relations": {
+ "minecraft:player": "SEMI_FRIENDLY",
+ "minecraft:villager": "SEMI_FRIENDLY",
+ "minecraft:iron_golem": "NEUTRAL",
+ "guardvillagers:guard": "SEMI_FRIENDLY"
+ },
+ // Relation to unspecified entities those are instance of PassiveEntity(Yarn)
+ "player_relation_to_passives": "HOSTILE",
+ // Relation to unspecified entities those are instance of HostileEntity(Yarn)
+ "player_relation_to_hostiles": "HOSTILE",
+ // Fallback relation
+ "player_relation_to_other": "HOSTILE"
+} \ No newline at end of file
diff --git a/config/spell_power/attributes.json b/config/spell_power/attributes.json
new file mode 100644
index 0000000..ca13d6c
--- /dev/null
+++ b/config/spell_power/attributes.json
@@ -0,0 +1,26 @@
+{
+ "attributes_container_injection_scope": "LIVING_ENTITY",
+ "use_vanilla_magic_damage_type": true,
+ "base_spell_critical_chance_percentage": 5.0,
+ "base_spell_critical_damage_percentage": 50.0,
+ "status_effect_raw_id_starts_at": 730,
+ "spell_power_effect": {
+ "uuid": "446cf95e-be63-40d9-ad90-6cc388c08460",
+ "bonus_per_stack": 0.1
+ },
+ "secondary_effects": {
+ "critical_damage": {
+ "uuid": "0612ed2a-3ce5-11ed-b878-0242ac120002",
+ "bonus_per_stack": 0.1
+ },
+ "haste": {
+ "uuid": "092f4f58-3ce5-11ed-b878-0242ac120002",
+ "bonus_per_stack": 0.05
+ },
+ "critical_chance": {
+ "uuid": "0e0ddd12-0646-42b7-8daf-36b4ccf524df",
+ "bonus_per_stack": 0.05
+ }
+ },
+ "resistance_reduction_cap": 0.75
+} \ No newline at end of file
diff --git a/config/spell_power/enchantments.json b/config/spell_power/enchantments.json
new file mode 100644
index 0000000..99c47ee
--- /dev/null
+++ b/config/spell_power/enchantments.json
@@ -0,0 +1,64 @@
+{
+ "allow_stacking": true,
+ "spell_power": {
+ "requires_related_attributes": false,
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 9,
+ "bonus_per_level": 0.05
+ },
+ "soulfrost": {
+ "requires_related_attributes": true,
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 9,
+ "bonus_per_level": 0.03
+ },
+ "sunfire": {
+ "requires_related_attributes": true,
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 9,
+ "bonus_per_level": 0.03
+ },
+ "energize": {
+ "requires_related_attributes": true,
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 9,
+ "bonus_per_level": 0.03
+ },
+ "critical_chance": {
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 12,
+ "bonus_per_level": 0.02
+ },
+ "critical_damage": {
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 10,
+ "step_cost": 12,
+ "bonus_per_level": 0.05
+ },
+ "haste": {
+ "enabled": true,
+ "max_level": 5,
+ "min_cost": 15,
+ "step_cost": 17,
+ "bonus_per_level": 0.04
+ },
+ "magic_protection": {
+ "enabled": true,
+ "max_level": 4,
+ "min_cost": 3,
+ "step_cost": 6,
+ "bonus_per_level": 2.0
+ },
+ "schema_version": 0
+} \ No newline at end of file
diff --git a/config/tconstruct-common.toml b/config/tconstruct-common.toml
new file mode 100644
index 0000000..98cff0a
--- /dev/null
+++ b/config/tconstruct-common.toml
@@ -0,0 +1,129 @@
+#Everything to do with gameplay
+[gameplay]
+ #Set this to false to disable new players spawning with the Tinkers' Book.
+ shouldSpawnWithTinkersBook = true
+ #If non-empty, only this material will be shown on tools in creative and JEI (or the first valid material if this is invalid for the tool).
+ #If empty, all materials will show
+ showOnlyToolMaterial = ""
+ #If non-empty, only material will be shown on parts in creative and JEI (or the first valid material if this is invalid for the part).
+ #If empty, all materials will show
+ showOnlyPartMaterial = ""
+ #If true, tables such as the part builder and tinker station will show all variants. If false shows only a variant with a default texture.
+ showAllTableVariants = true
+ #If true, anvils will show all metal variants. If false, shows only a variant with the default texture
+ showAllAnvilVariants = true
+ #If true, smeltery and foundry controllers, drains, ducts, and chutes will show all variants
+ showAllSmelteryVariants = true
+
+ #Tweaks to vanilla damage sources to better work with armor
+ [gameplay.damageTweaks]
+ #Amount of durability restored by a repair kit in terms of ingots. Does not affect the cost to create the kit, that is controlled by JSON.
+ #Range: 0.0 ~ 32767.0
+ repairKitAmount = 2.0
+
+#Options related to recipes, limited options as a datapack allows most recipes to be modified
+[recipes]
+ #Add a recipe that allows you to craft a piece of flint using 3 gravel
+ addGravelToFlintRecipe = true
+ #Makes the recipe to alloy netherite in the smeltery only cost 2 gold per netherite ingot. If false uses the vanilla rate of 4 gold per ingot. Disable if there are crafting duplications.
+ cheaperNetheriteAlloy = true
+ #Makes wither skeletons drop necrotic bones
+ witherBoneDrop = true
+ #Allows converting wither bones to regular bones
+ witherBoneConversion = true
+ #Slimeballs not being usable in vanilla recipes that require slimeballs. Config option exists to disable easily in case this fix is redundant to another mod
+ slimeRecipeFix = true
+ #Fixes clear glass not being usable in vanilla recipes that require glass. Config option exists to disable easily in case this fix is redundant to another mod
+ glassRecipeFix = true
+
+ #Ore rates when melting in the melter
+ [recipes.ore_rates.melter]
+ #Number of nuggets produced per metal ore unit melted. 9 nuggets would give 1 ingot
+ #Range: 1 ~ 45
+ nuggetsPerMetal = 12
+ #Number of gem shards produced per gem ore unit melted. 4 gem shards would give 1 gem
+ #Range: 1 ~ 20
+ shardsPerGem = 8
+
+ #Ore rates when melting in the smeltery
+ [recipes.ore_rates.smeltery]
+ #Number of nuggets produced per metal ore unit melted. 9 nuggets would give 1 ingot
+ #Range: 1 ~ 45
+ nuggetsPerMetal = 12
+ #Number of gem shards produced per gem ore unit melted. 4 gem shards would give 1 gem
+ #Range: 1 ~ 20
+ shardsPerGem = 8
+
+ #Ore rates when melting in the foundry
+ [recipes.ore_rates.foundry]
+ #Number of nuggets produced per metal ore unit melted. 9 nuggets would give 1 ingot
+ #Range: 1 ~ 45
+ nuggetsPerMetal = 9
+ #Number of gem shards produced per gem ore unit melted. 4 gem shards would give 1 gem
+ #Range: 1 ~ 20
+ shardsPerGem = 4
+
+ #Byprouct rates when melting in the foundry
+ [recipes.ore_rates.foundry_byproduct]
+ #Number of nuggets produced per metal ore unit melted. 9 nuggets would give 1 ingot
+ #Range: 1 ~ 45
+ nuggetsPerMetal = 3
+ #Number of gem shards produced per gem ore unit melted. 4 gem shards would give 1 gem
+ #Range: 1 ~ 20
+ shardsPerGem = 4
+
+ #Entity head drops when killed by a charged creeper
+ [recipes.heads]
+ blaze = true
+ enderman = true
+ stray = true
+ husk = true
+ drowned = true
+ spider = true
+ cave_spider = true
+ piglin_brute = true
+ zombified_piglin = true
+
+#Options related to loot table injections. Note some of the changes are done via global loot managers, these only control injecting loot into loot pools
+#If your modpack makes extensive loot table changes, many of these may be automatically disabled. You can also manually set up tables for more control.
+[loot]
+ #Adds slimy saplings and seeds into various loot chests. Helps for worlds without slime islands
+ slimy_loot = true
+ #Weight of blazing blood in the piglin bartering tables. Set to 0 to disable
+ #Range: 0 ~ 100
+ barter_blazing_blood = 20
+ #Weight of tinker tools in the vanilla spawn bonus chest, randomly replacing the vanilla axe or shovel. Tool will have a random tier 1 head and binding, plus a wooden handle. Set to 0 to disable.
+ #For comparison, vanilla wooden axes and pickaxes have a weight of 3, and stone axes/pickaxes have a weight of 1
+ #Range: 0 ~ 25
+ tinker_tool_bonus_chest = 2
+ #If true, ender dragons will drop scales when damaged by explosions
+ drop_dragon_Scales = true
+
+#Everything to do with world generation
+[worldgen]
+ #Generate Cobalt
+ generateCobalt = true
+ #Approx Ores per Chunk
+ veinCountCobalt = 8
+
+ #Options related to slime geodes
+ [worldgen.geodes]
+ #If true, recipes using slime crystals will ignore the other geode configs, useful if you add other ways to get the slime crystals. When false (default), recipes using slime crystals will be substituted for an alternative if the geode is disabled.
+ forceRecipes = false
+ #If true, earthslime geodes generate deep in the world as another way to get slime
+ earth = true
+ #If true, skyslime geodes generate above amethyst as another way to get skyslime
+ sky = true
+ #If true, ichor geodes generate high in the nether. Strongly encouraged to keep enabled even if you disable the other geodes, as ichor crystals have some unique recipes and the fallbacks kinda suck for gameplay.
+ ichor = true
+ #If true, enderslime geodes generate as additional islands in the end
+ ender = true
+
+#Features to use in debugging gameplay and mechanics, generally should not be enabled in packs
+[debug]
+ #If true, forces integration materials to be enabled, even if the relevant metal is missing. Useful for testing material balance.
+ #Does not provide recipes for any of them, they will only be available to cheat in creative.
+ forceIntegrationMaterials = false
+ #If STACKTRACE, logs the stacktrace whenever a tool stack is created from a non-modifiable item. If WARNING (default), logs a shorter but more efficient error. If IGNORE, disables logging (useful for modpacks/players *after* they reported the issue). The stacktrace helps debug which mod is causing it, but is rather expensive on the chance they are doing it a lot.
+ #Allowed Values: STACKTRACE, WARNING, IGNORED
+ logInvalidToolStack = "WARNING"
diff --git a/config/toms_storage.json b/config/toms_storage.json
new file mode 100644
index 0000000..10d4805
--- /dev/null
+++ b/config/toms_storage.json
@@ -0,0 +1,16 @@
+{
+ "onlyTrims": false,
+ "invRange": 16,
+ "wirelessRange": 16,
+ "invConnectorMaxCables": 2048,
+ "multiblockInv": [],
+ "advWirelessRange": 64,
+ "wirelessTermBeaconLvl": 1,
+ "wirelessTermBeaconLvlDim": 4,
+ "invLinkBeaconLvl": 1,
+ "invLinkBeaconLvlDim": 2,
+ "blockedBlocks": [
+ "create:belt"
+ ],
+ "blockedMods": []
+} \ No newline at end of file
diff --git a/config/towns_and_towers/structure_enable_or_disable_new.json5 b/config/towns_and_towers/structure_enable_or_disable_new.json5
new file mode 100644
index 0000000..df278cb
--- /dev/null
+++ b/config/towns_and_towers/structure_enable_or_disable_new.json5
@@ -0,0 +1,88 @@
+/*
+This config file makes it possible to switch off any structure from Towns and Towers. Big thanks to Cristelknight for making this all possible.
+To disable a structure, simply set the value of that structure to "false".
+o change the rarity of a structure category, use the other file in the config.
+
+LINKS
+=====
+Curseforge link: https://www.curseforge.com/minecraft/mc-mods/towns-and-towers
+Modrinth link: https://modrinth.com/mod/towns-and-towers
+PMC link: https://www.planetminecraft.com/data-pack/towns-amp-towers-structure-overhaul/
+GitHub Repository: [NEED TO MAKE ONE]
+*/
+{
+ // Here you can find all pillager outposts.
+ "towers": {
+ "pillager_outpost_badlands": true,
+ "pillager_outpost_beach": true,
+ "pillager_outpost_birch_forest": true,
+ "pillager_outpost_desert": true,
+ "pillager_outpost_flower_forest": true,
+ "pillager_outpost_forest": true,
+ "pillager_outpost_grove": true,
+ "pillager_outpost_jungle": true,
+ "pillager_outpost_meadow": true,
+ "pillager_outpost_mushroom_fields": true,
+ "pillager_outpost_ocean": true,
+ "pillager_outpost_old_growth_taiga": true,
+ "pillager_outpost_savanna": true,
+ "pillager_outpost_savanna_plateau": true,
+ "pillager_outpost_snowy_beach": true,
+ "pillager_outpost_snowy_plains": true,
+ "pillager_outpost_snowy_slopes": true,
+ "pillager_outpost_sparse_jungle": true,
+ "pillager_outpost_sunflower_plains": true,
+ "pillager_outpost_swamp": true,
+ "pillager_outpost_taiga": true,
+ "pillager_outpost_snowy_taiga": true,
+ "pillager_outpost_wooded_badlands": true,
+ // Here you can find all pillager outposts which are exclusive to other worldgen mods (ex.: WWOO, Terralith, BoP, BYG, etc.).
+ "exclusives": {
+ "pillager_outpost_mediterranean": true,
+ "pillager_outpost_tudor": true,
+ "pillager_outpost_classic": true,
+ "pillager_outpost_oriental": true,
+ "pillager_outpost_swedish": true,
+ "pillager_outpost_iberian": true,
+ "pillager_outpost_rustic": true
+ }
+ },
+ // Here you can find all structures that aren't villages or outposts.
+ "other": {
+ "mimic_desert": true,
+ "wreckage_ocean": true
+ },
+ // Here you can find all villages.
+ "towns": {
+ "village_badlands": true,
+ "village_beach": true,
+ "village_birch_forest": true,
+ "village_flower_forest": true,
+ "village_forest": true,
+ "village_snowy_slopes": true,
+ "village_jungle": true,
+ "village_meadow": true,
+ "village_mushroom_fields": true,
+ "village_ocean": true,
+ "village_old_growth_taiga": true,
+ "village_grove": true,
+ "village_savanna_plateau": true,
+ "village_sunflower_plains": true,
+ "village_snowy_taiga": true,
+ "village_sparse_jungle": true,
+ "village_swamp": true,
+ "village_wooded_badlands": true,
+ // Here you can find all villages which are exclusive to other worldgen mods (ex.: WWOO, Terralith, BoP, BYG, etc.).
+ "exclusives": {
+ "village_mediterranean": true,
+ "village_swedish": true,
+ "village_tudor": true,
+ "village_wandering_trader_camp": true,
+ "village_classic": true,
+ "village_rustic": true,
+ "village_iberian": true,
+ "village_nilotic": true,
+ "village_piglin": true
+ }
+ }
+} \ No newline at end of file
diff --git a/config/towns_and_towers/structure_rarity_new.json5 b/config/towns_and_towers/structure_rarity_new.json5
new file mode 100644
index 0000000..48dbffc
--- /dev/null
+++ b/config/towns_and_towers/structure_rarity_new.json5
@@ -0,0 +1,43 @@
+/*
+This config file makes it possible to change the spacing, separation, salt (and frequency) of Towns and Towers' structure sets. Big thanks to Cristelknight for making this all possible.
+ SPACING --- controls how far a structure can be from others of its kind
+ SEPARATION --- controls how close to each other two structures of the same type can be.
+By default, the values should be 48/24 for villages and outposts (spacing/separation respectively) - a hypothetical village is going to appear not further than 48 chunks away (ca. 760 blocks), but not closer than 24 chunks (ca. 380 blocks).
+ * If you want a structure to spawn more frequently, decrease those values.
+ * If you want a structure to spawn less frequently, increase those values.
+KEEP IN MIND THAT SPACING ALWAYS NEEDS TO BE HIGHER THAN SEPARATION.
+
+LINKS
+=====
+Curseforge link: https://www.curseforge.com/minecraft/mc-mods/towns-and-towers
+Modrinth link: https://modrinth.com/mod/towns-and-towers
+PMC link: https://www.planetminecraft.com/data-pack/towns-amp-towers-structure-overhaul/
+GitHub Repository: [NEED TO MAKE ONE]
+*/
+{
+ // Here you can find all pillager outposts.
+ "towers": {
+ // DEFAULT 48
+ "spacing": 48,
+ // DEFAULT 24
+ "separation": 24,
+ "frequency": 0.2,
+ "salt": 205745294
+ },
+ // Here you can find all structures that aren't villages or outposts.
+ "other": {
+ // DEFAULT 32
+ "spacing": 32,
+ // DEFAULT 16
+ "separation": 16,
+ "salt": 30084234
+ },
+ // Here you can find all villages.
+ "towns": {
+ // DEFAULT 48
+ "spacing": 48,
+ // DEFAULT 24
+ "separation": 24,
+ "salt": 10587309
+ }
+} \ No newline at end of file
diff --git a/config/waystones-common.toml b/config/waystones-common.toml
new file mode 100644
index 0000000..6150f60
--- /dev/null
+++ b/config/waystones-common.toml
@@ -0,0 +1,152 @@
+[client]
+
+# If enabled, the text overlay on waystones will no longer always render at full brightness.
+disableTextGlow = false
+
+[compatibility]
+
+# If enabled, JourneyMap waypoints will be created for each activated waystone.
+displayWaystonesOnJourneyMap = true
+
+# If enabled, JourneyMap waypoints will only be created if the mod 'JourneyMap Integration' is not installed
+preferJourneyMapIntegration = true
+
+[cooldowns]
+
+# The multiplier applied to the cooldown when teleporting to a global waystone via inventory button or warp stone.
+globalWaystoneCooldownMultiplier = 1.0
+
+# The cooldown between usages of the inventory button in seconds.
+inventoryButtonCooldown = 300
+
+# The time in ticks it takes to use a scroll. This is the charge-up time when holding right-click.
+scrollUseTime = 32
+
+# The time in ticks that it takes to use a warp plate. This is the time the player has to stand on top for.
+warpPlateUseTime = 20
+
+# The cooldown between usages of the warp stone in seconds. This is bound to the player, not the item, so multiple warp stones share the same cooldown.
+warpStoneCooldown = 30
+
+# The time in ticks that it takes to use a warp stone. This is the charge-up time when holding right-click.
+warpStoneUseTime = 32
+
+[inventoryButton]
+
+# The y position of the warp button in the creative menu.
+creativeWarpButtonX = 88
+
+# The y position of the warp button in the creative menu.
+creativeWarpButtonY = 33
+
+# Set to 'NONE' for no inventory button. Set to 'NEAREST' for an inventory button that teleports to the nearest waystone. Set to 'ANY' for an inventory button that opens the waystone selection menu. Set to a waystone name for an inventory button that teleports to a specifically named waystone.
+inventoryButton = ""
+
+# The x position of the warp button in the inventory.
+warpButtonX = 58
+
+# The y position of the warp button in the inventory.
+warpButtonY = 60
+
+[restrictions]
+
+# Set to true if players should be able to teleport between waystones by simply right-clicking a waystone.
+allowWaystoneToWaystoneTeleport = true
+
+# Set to 'ALLOW' to allow dimensional warp in general. Set to 'GLOBAL_ONLY' to restrict dimensional warp to global waystones. Set to 'DENY' to disallow all dimensional warps.
+dimensionalWarp = "ALLOW"
+
+# List of dimensions that players are allowed to warp cross-dimension from and to. If left empty, all dimensions except those in dimensionalWarpDenyList are allowed.
+dimensionalWarpAllowList = [ ]
+
+# List of dimensions that players are not allowed to warp cross-dimension from and to. Only used if dimensionalWarpAllowList is empty.
+dimensionalWarpDenyList = [ ]
+
+# If enabled, waystones generated in worldgen are unbreakable.
+generatedWaystonesUnbreakable = false
+
+# Set to false to allow non-creative players to make waystones globally activated for all players.
+globalWaystoneSetupRequiresCreativeMode = true
+
+# List of leashed mobs that cannot be taken with you when teleporting
+leashedDenyList = [ "minecraft:wither" ]
+
+# If enabled, only the owner of a waystone (the one who placed it) can rename it.
+restrictRenameToOwner = false
+
+# If enabled, only creative players can place, edit or break waystones. This does NOT disable the crafting recipe.
+restrictToCreative = false
+
+# If enabled, leashed mobs will be teleported with you
+transportLeashed = true
+
+# Whether to take leashed mobs with you when teleporting between dimensions
+transportLeashedDimensional = true
+
+[worldGen]
+
+# These names will be used for the PRESET name generation mode. See the nameGenerationMode option for more info.
+customWaystoneNames = [ ]
+
+# List of dimensions that waystones are allowed to spawn in through world gen. If left empty, all dimensions except those in worldGenDimensionDenyList are used.
+dimensionAllowList = [ "minecraft:overworld", "minecraft:the_nether", "minecraft:the_end" ]
+
+# List of dimensions that waystones are not allowed to spawn in through world gen. Only used if worldGenDimensionAllowList is empty.
+dimensionDenyList = [ ]
+
+# Ensures that pretty much every village will have a waystone, by spawning it as early as possible. In addition, this means waystones will generally be located in the center of the village.
+forceSpawnInVillages = false
+
+# Approximate chunk distance between waystones generated freely in world generation. Set to 0 to disable generation.
+frequency = 25
+
+# Set to 'PRESET_FIRST' to first use names from the custom names list. Set to 'PRESET_ONLY' to use only those custom names. Set to 'MIXED' to have some waystones use custom names, and others random names.
+nameGenerationMode = "PRESET_FIRST"
+
+# Set to true if waystones should be added to the generation of villages. Some villages may still spawn without a waystone.
+spawnInVillages = true
+
+# Set to 'DEFAULT' to only generate the normally textured waystones. Set to 'MOSSY' or 'SANDY' to generate all as that variant. Set to 'BIOME' to make the style depend on the biome it is generated in.
+worldGenStyle = "BIOME"
+
+[xpCost]
+
+# The amount of blocks per xp level requirement. If set to 500, the base xp cost for travelling 1000 blocks will be 2 levels.
+blocksPerXpLevel = 1000
+
+# The base xp level cost when travelling between dimensions. Ignores block distance.
+dimensionalWarpXpCost = 3
+
+# The multiplier applied to the base xp cost when teleporting to a global waystone through any method.
+globalWaystoneXpCostMultiplier = 0.0
+
+# The multiplier applied to the base xp cost when teleporting via the inventory button.
+inventoryButtonXpCostMultiplier = 0.0
+
+# Set to true if experience cost should be inverted, meaning the shorter the distance, the more expensive. Can be used to encourage other methods for short-distance travel.
+inverseXpCost = false
+
+# The maximum base xp cost (may be exceeded by multipliers defined below), set to 0 to disable all distance-based XP costs
+maximumBaseXpCost = 3.0
+
+# The minimum base xp cost (may be subceeded by multipliers defined below)
+minimumBaseXpCost = 0.0
+
+# The multiplier applied to the base xp cost when teleporting from a portstone.
+portstoneXpCostMultiplier = 0.0
+
+# The multiplier applied to the base xp cost when teleporting from one sharestone to another.
+sharestoneXpCostMultiplier = 0.0
+
+# The multiplier applied to the base xp cost when teleporting from one warp plate to another.
+warpPlateXpCostMultiplier = 0.0
+
+# The multiplier applied to the base xp cost when teleporting using a Warp Stone item (not the Waystone block, Konstantin)
+warpStoneXpCostMultiplier = 0.0
+
+# The multiplier applied to the base xp cost when teleporting from one waystone to another.
+waystoneXpCostMultiplier = 0.0
+
+# How much xp is needed per leashed animal to travel with you
+xpCostPerLeashed = 0
+
diff --git a/config/wizards/items_v4.json b/config/wizards/items_v4.json
new file mode 100644
index 0000000..dfffe20
--- /dev/null
+++ b/config/wizards/items_v4.json
@@ -0,0 +1,638 @@
+{
+ "weapons": {
+ "staff_netherite_fire": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 6.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_netherite_frost": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 6.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_netherite_arcane": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 6.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_fire": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_arcane": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 5.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_novice": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 3.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_arcane": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_frost": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 5.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_netherite_arcane": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 4.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_fire": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 5.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_frost": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "staff_wizard": {
+ "attack_damage": 4.0,
+ "attack_speed": -3.0,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 4.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 4.0,
+ "operation": "ADDITION"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 4.0,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_netherite_fire": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 4.5,
+ "operation": "ADDITION"
+ }
+ ]
+ },
+ "wand_netherite_frost": {
+ "attack_damage": 2.0,
+ "attack_speed": -2.4,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 4.5,
+ "operation": "ADDITION"
+ }
+ ]
+ }
+ },
+ "armor_sets": {
+ "netherite_arcane_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "netherite_frost_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "arcane_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:haste",
+ "value": 0.03,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "fire_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "frost_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:frost",
+ "value": 0.25,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_damage",
+ "value": 0.1,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "netherite_fire_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:fire",
+ "value": 0.3,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:critical_chance",
+ "value": 0.02,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ },
+ "wizard_robe": {
+ "armor_toughness": 0.0,
+ "knockback_resistance": 0.0,
+ "head": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "chest": {
+ "armor": 3,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "legs": {
+ "armor": 2,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ },
+ "feet": {
+ "armor": 1,
+ "attributes": [
+ {
+ "id": "spell_power:arcane",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:fire",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ },
+ {
+ "id": "spell_power:frost",
+ "value": 0.2,
+ "operation": "MULTIPLY_BASE"
+ }
+ ]
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/config/wizards/tweaks.json b/config/wizards/tweaks.json
new file mode 100644
index 0000000..ece5579
--- /dev/null
+++ b/config/wizards/tweaks.json
@@ -0,0 +1,4 @@
+{
+ "ignore_items_required_mods": false,
+ "arcane_charge_damage_per_stack": 0.15
+} \ No newline at end of file
diff --git a/config/wizards/villages.json b/config/wizards/villages.json
new file mode 100644
index 0000000..b360e33
--- /dev/null
+++ b/config/wizards/villages.json
@@ -0,0 +1,64 @@
+{
+ "entries": [
+ {
+ "pool": "minecraft:village/desert/houses",
+ "structures": [
+ {
+ "id": "wizards:village/desert/wizard_tower",
+ "weight": 1,
+ "limit": 1
+ },
+ {
+ "id": "wizards:village/desert/wizard_tower_2",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/savanna/houses",
+ "structures": [
+ {
+ "id": "wizards:village/savanna/wizard_tower",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/plains/houses",
+ "structures": [
+ {
+ "id": "wizards:village/plains/wizard_tower",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/taiga/houses",
+ "structures": [
+ {
+ "id": "wizards:village/taiga/wizard_tower",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ },
+ {
+ "pool": "minecraft:village/snowy/houses",
+ "structures": [
+ {
+ "id": "wizards:village/snowy/wizard_tower",
+ "weight": 1,
+ "limit": 1
+ },
+ {
+ "id": "wizards:village/snowy/wizard_tower_2",
+ "weight": 3,
+ "limit": 1
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/zfastnoise.mixin.properties b/config/zfastnoise.mixin.properties
new file mode 100644
index 0000000..e1ad68e
--- /dev/null
+++ b/config/zfastnoise.mixin.properties
@@ -0,0 +1,4 @@
+#
+#Thu Jul 23 19:14:51 GMT 2026
+mixin.perf.biome=true
+mixin.perf.noise=true