Initial Commit
This commit is contained in:
commit
6cc81ce6d8
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
logs/*
|
||||
crash-reports/*
|
||||
secrets.py
|
||||
22
DiscordBot.service
Normal file
22
DiscordBot.service
Normal file
@ -0,0 +1,22 @@
|
||||
[Unit]
|
||||
Description=Discord Bot
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=minecraft
|
||||
WorkingDirectory=/home/minecraft/GPack
|
||||
ExecStart=/home/minecraft/.local/bin/uv run discord_bot.py
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
# Optional but recommended
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
|
||||
# Allow binding to privileged ports like :80 while still running as `minecraft`.
|
||||
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
NoNewPrivileges=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
1
banned-ips.json
Normal file
1
banned-ips.json
Normal file
@ -0,0 +1 @@
|
||||
[]
|
||||
1
banned-players.json
Normal file
1
banned-players.json
Normal file
@ -0,0 +1 @@
|
||||
[]
|
||||
24
config/appleskin-client.toml
Normal file
24
config/appleskin-client.toml
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
[client]
|
||||
#If true, shows the hunger (and saturation if showSaturationHudOverlay is true) that would be restored by food you are currently holding
|
||||
showFoodValuesHudOverlay = true
|
||||
#If true, shows your food exhaustion as a progress bar behind the hunger bars
|
||||
showFoodExhaustionHudUnderlay = true
|
||||
#Alpha value of the flashing icons at their most visible point (1.0 = fully opaque, 0.0 = fully transparent)
|
||||
#Range: 0.0 ~ 1.0
|
||||
maxHudOverlayFlashAlpha = 0.65
|
||||
#If true, health/hunger overlay will shake to match Minecraft's icon animations
|
||||
showVanillaAnimationsOverlay = true
|
||||
#If true, adds a line that shows your hunger, saturation, and exhaustion level in the F3 debug overlay
|
||||
showFoodStatsInDebugOverlay = true
|
||||
#If true, shows the hunger and saturation values of food in its tooltip while holding SHIFT
|
||||
showFoodValuesInTooltip = true
|
||||
#If true, shows the hunger and saturation values of food in its tooltip automatically (without needing to hold SHIFT)
|
||||
showFoodValuesInTooltipAlways = true
|
||||
#If true, shows estimated health restored by food on the health bar
|
||||
showFoodHealthHudOverlay = true
|
||||
#If true, shows your current saturation level overlayed on the hunger bar
|
||||
showSaturationHudOverlay = true
|
||||
#If true, enables the hunger/saturation/health overlays for food in your off-hand
|
||||
showFoodValuesHudOverlayWhenOffhand = true
|
||||
|
||||
224
config/attributefix.json
Normal file
224
config/attributefix.json
Normal file
@ -0,0 +1,224 @@
|
||||
{
|
||||
"attributes": {
|
||||
"tacz:tacz.bullet_resistance": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1,
|
||||
"value": 1
|
||||
}
|
||||
},
|
||||
"forge:step_height_addition": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": -512,
|
||||
"value": -512
|
||||
},
|
||||
"max": {
|
||||
"default": 512,
|
||||
"value": 512
|
||||
}
|
||||
},
|
||||
"minecraft:generic.follow_range": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 2048,
|
||||
"value": 2048
|
||||
}
|
||||
},
|
||||
"minecraft:generic.flying_speed": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"forge:nametag_distance": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 64,
|
||||
"value": 64
|
||||
}
|
||||
},
|
||||
"minecraft:generic.movement_speed": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"forge:entity_gravity": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": -8,
|
||||
"value": -8
|
||||
},
|
||||
"max": {
|
||||
"default": 8,
|
||||
"value": 8
|
||||
}
|
||||
},
|
||||
"forge:block_reach": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"minecraft:generic.max_health": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 1,
|
||||
"value": 1
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1000000
|
||||
}
|
||||
},
|
||||
"minecraft:generic.attack_speed": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"minecraft:generic.attack_damage": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 2048,
|
||||
"value": 1000000
|
||||
}
|
||||
},
|
||||
"minecraft:generic.luck": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": -1024,
|
||||
"value": -1024
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"minecraft:zombie.spawn_reinforcements": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1,
|
||||
"value": 1
|
||||
}
|
||||
},
|
||||
"minecraft:horse.jump_strength": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 2,
|
||||
"value": 2
|
||||
}
|
||||
},
|
||||
"minecraft:generic.attack_knockback": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 5,
|
||||
"value": 1000000
|
||||
}
|
||||
},
|
||||
"minecraft:generic.armor": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 30,
|
||||
"value": 1000000
|
||||
}
|
||||
},
|
||||
"forge:swim_speed": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
},
|
||||
"minecraft:generic.knockback_resistance": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1,
|
||||
"value": 1
|
||||
}
|
||||
},
|
||||
"minecraft:generic.armor_toughness": {
|
||||
"enabled": true,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 20,
|
||||
"value": 1000000
|
||||
}
|
||||
},
|
||||
"forge:entity_reach": {
|
||||
"enabled": false,
|
||||
"min": {
|
||||
"default": 0,
|
||||
"value": 0
|
||||
},
|
||||
"max": {
|
||||
"default": 1024,
|
||||
"value": 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
config/curios-common.toml
Normal file
5
config/curios-common.toml
Normal file
@ -0,0 +1,5 @@
|
||||
#List of slots to create or modify.
|
||||
#See documentation for syntax: https://docs.illusivesoulworks.com/curios/configuration#slot-configuration
|
||||
#
|
||||
slots = []
|
||||
|
||||
6
config/embeddium-mixins.properties
Normal file
6
config/embeddium-mixins.properties
Normal file
@ -0,0 +1,6 @@
|
||||
# This is the configuration file for Embeddium.
|
||||
#
|
||||
# You can find information on editing this file and all the available options here:
|
||||
# https://github.com/jellysquid3/sodium-fabric/wiki/Configuration-File
|
||||
#
|
||||
# By default, this file will be empty except for this notice.
|
||||
30
config/embeddium-options.json
Normal file
30
config/embeddium-options.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"quality": {
|
||||
"weather_quality": "DEFAULT",
|
||||
"leaves_quality": "DEFAULT",
|
||||
"enable_vignette": true,
|
||||
"use_quad_normals_for_shading": false
|
||||
},
|
||||
"advanced": {
|
||||
"enable_memory_tracing": false,
|
||||
"use_advanced_staging_buffers": true,
|
||||
"disable_incompatible_mod_warnings": false,
|
||||
"cpu_render_ahead_limit": 3
|
||||
},
|
||||
"performance": {
|
||||
"chunk_builder_threads": 0,
|
||||
"always_defer_chunk_updates_v2": true,
|
||||
"animate_only_visible_textures": true,
|
||||
"use_entity_culling": true,
|
||||
"use_fog_occlusion": true,
|
||||
"use_block_face_culling": true,
|
||||
"use_compact_vertex_format": true,
|
||||
"use_translucent_face_sorting_v2": true,
|
||||
"use_no_error_g_l_context": true
|
||||
},
|
||||
"notifications": {
|
||||
"force_disable_donation_prompts": false,
|
||||
"has_cleared_donation_button": false,
|
||||
"has_seen_donation_prompt": false
|
||||
}
|
||||
}
|
||||
23
config/ferritecore-mixin.toml
Normal file
23
config/ferritecore-mixin.toml
Normal file
@ -0,0 +1,23 @@
|
||||
#Use a slightly more compact, but also slightly slower representation for block states
|
||||
compactFastMap = false
|
||||
#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
|
||||
#Cache the predicate instances used in multipart models
|
||||
cacheMultipartPredicates = 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
|
||||
#Avoid creation of new strings when creating ModelResourceLocations
|
||||
modelResourceLocations = true
|
||||
#Use smaller data structures for "simple" models, especially models with few side-specific faces
|
||||
modelSides = true
|
||||
#Replace the blockstate neighbor table
|
||||
replaceNeighborLookup = true
|
||||
#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
|
||||
#Do not store the properties of a state explicitly and read themfrom the replace neighbor table instead. Requires replaceNeighborLookup to be enabled
|
||||
replacePropertyMap = true
|
||||
#Deduplicate vertex data of baked quads in the basic model implementations
|
||||
bakedQuadDeduplication = true
|
||||
|
||||
7
config/firstaid-common.toml
Normal file
7
config/firstaid-common.toml
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
#Generic configuration settings
|
||||
[misc]
|
||||
#Enabled additional debug logs - May slow down the game and will increase log file size
|
||||
#Only enable for special purposes
|
||||
debug = false
|
||||
|
||||
29
config/fml.toml
Normal file
29
config/fml.toml
Normal file
@ -0,0 +1,29 @@
|
||||
#Early window height
|
||||
earlyWindowHeight = 480
|
||||
#Enable forge global version checking
|
||||
versionCheck = true
|
||||
#Should we control the window. Disabling this disables new GL features and can be bad for mods that rely on them.
|
||||
earlyWindowControl = true
|
||||
#Early window framebuffer scale
|
||||
earlyWindowFBScale = 1
|
||||
#Early window provider
|
||||
earlyWindowProvider = "fmlearlywindow"
|
||||
#Early window width
|
||||
earlyWindowWidth = 854
|
||||
#Early window starts maximized
|
||||
earlyWindowMaximized = false
|
||||
#Default config path for servers
|
||||
defaultConfigPath = "defaultconfigs"
|
||||
#Disables Optimized DFU client-side - already disabled on servers
|
||||
disableOptimizedDFU = true
|
||||
#Skip specific GL versions, may help with buggy graphics card drivers
|
||||
earlyWindowSkipGLVersions = []
|
||||
#Whether to log a help message on first attempt, to aid troubleshooting. This setting should automatically disable itself after a successful launch
|
||||
earlyWindowLogHelpMessage = true
|
||||
#Max threads for early initialization parallelism, -1 is based on processor count
|
||||
maxThreads = -1
|
||||
#Squir?
|
||||
earlyWindowSquir = false
|
||||
#Whether to show CPU usage stats in early window
|
||||
earlyWindowShowCPU = false
|
||||
|
||||
21
config/immediatelyfast.json
Normal file
21
config/immediatelyfast.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"REGULAR_INFO": "----- Regular config values below -----",
|
||||
"font_atlas_resizing": true,
|
||||
"map_atlas_generation": true,
|
||||
"hud_batching": true,
|
||||
"fast_text_lookup": true,
|
||||
"fast_buffer_upload": true,
|
||||
"COSMETIC_INFO": "----- Cosmetic only config values below (Does not optimize anything) -----",
|
||||
"dont_add_info_into_debug_hud": false,
|
||||
"EXPERIMENTAL_INFO": "----- Experimental config values below (Rendering glitches may occur) -----",
|
||||
"experimental_disable_error_checking": false,
|
||||
"experimental_disable_resource_pack_conflict_handling": false,
|
||||
"experimental_sign_text_buffering": false,
|
||||
"experimental_screen_batching": false,
|
||||
"DEBUG_INFO": "----- Debug only config values below (Do not touch) -----",
|
||||
"debug_only_and_not_recommended_disable_universal_batching": false,
|
||||
"debug_only_and_not_recommended_disable_mod_conflict_handling": false,
|
||||
"debug_only_and_not_recommended_disable_hardware_conflict_handling": false,
|
||||
"debug_only_print_additional_error_information": false,
|
||||
"debug_only_use_last_usage_for_batch_ordering": false
|
||||
}
|
||||
22
config/ironchests/chests/barrels/copper.json
Normal file
22
config/ironchests/chests/barrels/copper.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 9,
|
||||
"rows": 4,
|
||||
"inventoryOffset": 8,
|
||||
"menuOffset": 8,
|
||||
"width": 176,
|
||||
"height": 187,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 3.0,
|
||||
"sound": "copper"
|
||||
}
|
||||
}
|
||||
24
config/ironchests/chests/barrels/crystal.json
Normal file
24
config/ironchests/chests/barrels/crystal.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"transparent": true,
|
||||
"renderItems": true,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "glass",
|
||||
"explosionResistance": 0.3,
|
||||
"destroyTime": 0.3,
|
||||
"sound": "glass",
|
||||
"noOcclusion": true
|
||||
}
|
||||
}
|
||||
22
config/ironchests/chests/barrels/diamond.json
Normal file
22
config/ironchests/chests/barrels/diamond.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 5.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
22
config/ironchests/chests/barrels/gold.json
Normal file
22
config/ironchests/chests/barrels/gold.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 11,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 26,
|
||||
"menuOffset": 8,
|
||||
"width": 212,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 3.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
22
config/ironchests/chests/barrels/iron.json
Normal file
22
config/ironchests/chests/barrels/iron.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 9,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 8,
|
||||
"menuOffset": 8,
|
||||
"width": 176,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 5.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
23
config/ironchests/chests/barrels/netherite.json
Normal file
23
config/ironchests/chests/barrels/netherite.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 13,
|
||||
"rows": 7,
|
||||
"inventoryOffset": 44,
|
||||
"menuOffset": 8,
|
||||
"width": 250,
|
||||
"height": 240,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 1200.0,
|
||||
"destroyTime": 50.0,
|
||||
"sound": "netherite_block"
|
||||
},
|
||||
"fireResistant": true
|
||||
}
|
||||
22
config/ironchests/chests/barrels/obsidian.json
Normal file
22
config/ironchests/chests/barrels/obsidian.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"block_type": "barrel",
|
||||
"shape": {
|
||||
"type": "cube",
|
||||
"min": [0, 0, 0],
|
||||
"max": [1, 1, 1]
|
||||
},
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 1200.0,
|
||||
"destroyTime": 50.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
16
config/ironchests/chests/copper.json
Normal file
16
config/ironchests/chests/copper.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"length": 9,
|
||||
"rows": 4,
|
||||
"inventoryOffset": 8,
|
||||
"menuOffset": 8,
|
||||
"width": 176,
|
||||
"height": 187,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 3.0,
|
||||
"sound": "copper"
|
||||
}
|
||||
}
|
||||
18
config/ironchests/chests/crystal.json
Normal file
18
config/ironchests/chests/crystal.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"transparent": true,
|
||||
"renderItems": true,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "glass",
|
||||
"explosionResistance": 0.3,
|
||||
"destroyTime": 0.3,
|
||||
"sound": "glass",
|
||||
"noOcclusion": true
|
||||
}
|
||||
}
|
||||
16
config/ironchests/chests/diamond.json
Normal file
16
config/ironchests/chests/diamond.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 5.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
20
config/ironchests/chests/dirt.json
Normal file
20
config/ironchests/chests/dirt.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"length": 1,
|
||||
"rows": 1,
|
||||
"inventoryOffset": 8,
|
||||
"menuOffset": 80,
|
||||
"width": 176,
|
||||
"height": 133,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "dirt",
|
||||
"explosionResistance": 0.5,
|
||||
"destroyTime": 0.5,
|
||||
"sound": "gravel"
|
||||
},
|
||||
"predicate": {
|
||||
"items": [
|
||||
"minecraft:dirt"
|
||||
]
|
||||
}
|
||||
}
|
||||
16
config/ironchests/chests/gold.json
Normal file
16
config/ironchests/chests/gold.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"length": 11,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 26,
|
||||
"menuOffset": 8,
|
||||
"width": 212,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 3.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
16
config/ironchests/chests/iron.json
Normal file
16
config/ironchests/chests/iron.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"length": 9,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 8,
|
||||
"menuOffset": 8,
|
||||
"width": 176,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 6.0,
|
||||
"destroyTime": 5.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
17
config/ironchests/chests/netherite.json
Normal file
17
config/ironchests/chests/netherite.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"length": 13,
|
||||
"rows": 7,
|
||||
"inventoryOffset": 44,
|
||||
"menuOffset": 8,
|
||||
"width": 250,
|
||||
"height": 240,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 1200.0,
|
||||
"destroyTime": 50.0,
|
||||
"sound": "netherite_block"
|
||||
},
|
||||
"fireResistant": true
|
||||
}
|
||||
16
config/ironchests/chests/obsidian.json
Normal file
16
config/ironchests/chests/obsidian.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"length": 12,
|
||||
"rows": 6,
|
||||
"inventoryOffset": 35,
|
||||
"menuOffset": 8,
|
||||
"width": 232,
|
||||
"height": 222,
|
||||
"properties": {
|
||||
"type": "builder",
|
||||
"material": "metal",
|
||||
"requiresCorrectToolForDrops": true,
|
||||
"explosionResistance": 1200.0,
|
||||
"destroyTime": 50.0,
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
6
config/ironchests/defaults.properties
Normal file
6
config/ironchests/defaults.properties
Normal file
@ -0,0 +1,6 @@
|
||||
#Iron Chests Default Files
|
||||
#Setting a value will recopy the default files.
|
||||
#Wed Mar 25 22:46:11 CET 2026
|
||||
barrels=true
|
||||
chests=true
|
||||
chest_upgrades=true
|
||||
3
config/ironchests/upgrade_types/copper.json
Normal file
3
config/ironchests/upgrade_types/copper.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"to": "copper_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/crystal.json
Normal file
4
config/ironchests/upgrade_types/crystal.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "crystal_chest",
|
||||
"from": "diamond_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/diamond.json
Normal file
4
config/ironchests/upgrade_types/diamond.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "diamond_chest",
|
||||
"from": "gold_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/gold.json
Normal file
4
config/ironchests/upgrade_types/gold.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "gold_chest",
|
||||
"from": "iron_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/iron.json
Normal file
4
config/ironchests/upgrade_types/iron.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "iron_chest",
|
||||
"from": "copper_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/netherite.json
Normal file
4
config/ironchests/upgrade_types/netherite.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "netherite_chest",
|
||||
"from": "diamond_chest"
|
||||
}
|
||||
4
config/ironchests/upgrade_types/obsidian.json
Normal file
4
config/ironchests/upgrade_types/obsidian.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"to": "obsidian_chest",
|
||||
"from": "diamond_chest"
|
||||
}
|
||||
7
config/lrarmor-common.toml
Normal file
7
config/lrarmor-common.toml
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
[general]
|
||||
#Enable armor set effect
|
||||
enableArmorSetEffect = true
|
||||
#Enable armor attribute
|
||||
enableArmorAttribute = true
|
||||
|
||||
12
config/lrtactical-common.toml
Normal file
12
config/lrtactical-common.toml
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
[grenade]
|
||||
#Whether grenade explosion can damage blocks (if it can)
|
||||
grenadeExplosionBlockDamage = true
|
||||
|
||||
[melee]
|
||||
#Whether melee items consume durability on attack
|
||||
meleeItemConsumeDurability = true
|
||||
#when target's invulnerable tick is less than this value, melee attack will ignore it
|
||||
#Range: 0 ~ 100
|
||||
meleeIgnoreInvulnerableTickThreshold = 20
|
||||
|
||||
3
config/modernfix-common.toml
Normal file
3
config/modernfix-common.toml
Normal file
@ -0,0 +1,3 @@
|
||||
#These JEI plugins will be loaded on the main thread
|
||||
blacklist_async_jei_plugins = ["jepb:jei_plugin"]
|
||||
|
||||
111
config/modernfix-mixins.properties
Normal file
111
config/modernfix-mixins.properties
Normal file
@ -0,0 +1,111 @@
|
||||
# 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.cofh_core_crash=true # (default)
|
||||
# mixin.bugfix.concurrency=true # (default)
|
||||
# mixin.bugfix.ctm_resourceutil_cme=true # (default)
|
||||
# mixin.bugfix.ender_dragon_leak=true # (default)
|
||||
# mixin.bugfix.entity_pose_stack=true # (default)
|
||||
# mixin.bugfix.extra_experimental_screen=true # (default)
|
||||
# mixin.bugfix.fix_config_crashes=true # (default)
|
||||
# mixin.bugfix.forge_at_inject_error=true # (default)
|
||||
# mixin.bugfix.forge_vehicle_packets=true # (default)
|
||||
# mixin.bugfix.missing_block_entities=false # (default)
|
||||
# mixin.bugfix.model_data_manager_cme=true # (default)
|
||||
# mixin.bugfix.packet_leak=false # (default)
|
||||
# mixin.bugfix.paper_chunk_patches=true # (default)
|
||||
# mixin.bugfix.recipe_book_type_desync=true # (default)
|
||||
# mixin.bugfix.registry_ops_cme=true # (default)
|
||||
# mixin.bugfix.removed_dimensions=true # (default)
|
||||
# mixin.bugfix.restore_old_dragon_movement=false # (default)
|
||||
# mixin.bugfix.unsafe_modded_shape_caches=true # (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.registry_event_progress=false # (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_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_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.datapack_reload_exceptions=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_resources.ctm=true # (default)
|
||||
# mixin.perf.dynamic_resources.ldlib=true # (default)
|
||||
# mixin.perf.dynamic_resources.supermartijncore=true # (default)
|
||||
# mixin.perf.dynamic_structure_manager=true # (default)
|
||||
# mixin.perf.fast_forge_dummies=true # (default)
|
||||
# mixin.perf.fast_registry_validation=true # (default)
|
||||
# mixin.perf.faster_capabilities=true # (default)
|
||||
# mixin.perf.faster_ingredients=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.forge_cap_retrieval=true # (default)
|
||||
# mixin.perf.forge_registry_alloc=true # (default)
|
||||
# mixin.perf.forge_registry_lambda=true # (default)
|
||||
# mixin.perf.ingredient_item_deduplication=false # (default)
|
||||
# mixin.perf.kubejs=true # (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.patchouli_deduplicate_books=true # (default)
|
||||
# mixin.perf.potential_spawns_alloc=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.resourcefullib_highlight_deduplication=true # (default)
|
||||
# mixin.perf.resourcepacks=true # (default)
|
||||
# mixin.perf.smart_ingredient_sync=true # (default)
|
||||
# mixin.perf.state_definition_construct=true # (default)
|
||||
# mixin.perf.tag_id_caching=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.
|
||||
8
config/simplytraps.toml
Normal file
8
config/simplytraps.toml
Normal file
@ -0,0 +1,8 @@
|
||||
StakeWallDamageMultiplier = 1.0
|
||||
StakeDamageMultiplier = 1.0
|
||||
SpikeDamageMultiplier = 1.0
|
||||
BarbedWireDamageMultiplier = 1.0
|
||||
BarbedIvyWireDamageMultiplier = 1.0
|
||||
##This variable represents time in ticks. 20 ticks = 1 second
|
||||
GrassTrapTime = 5.0
|
||||
|
||||
55
config/tacz-common.toml
Normal file
55
config/tacz-common.toml
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
[gun]
|
||||
#The default fire sound range (block)
|
||||
#Range: > 0
|
||||
DefaultGunFireSoundDistance = 64
|
||||
#The silencer default fire sound range (block)
|
||||
#Range: > 0
|
||||
DefaultGunSilenceSoundDistance = 16
|
||||
#The range (block) of other gun sound, reloading sound etc.
|
||||
#Range: > 0
|
||||
DefaultGunOtherSoundDistance = 16
|
||||
#Whether or not the player will consume ammo in creative mode
|
||||
CreativePlayerConsumeAmmo = true
|
||||
#Auto reload all the guns in player inventory, useful for pvp servers
|
||||
AutoReloadWhenRespawn = false
|
||||
|
||||
[ammo]
|
||||
#Warning: Ammo with explosive properties can break blocks
|
||||
ExplosiveAmmoDestroysBlock = true
|
||||
#Warning: Ammo with explosive properties can set the surroundings on fire
|
||||
ExplosiveAmmoFire = false
|
||||
#Ammo with explosive properties can add knockback effect
|
||||
ExplosiveAmmoKnockBack = true
|
||||
#The distance at which the explosion effect can be seen
|
||||
#Range: > 0
|
||||
ExplosiveAmmoVisibleDistance = 192
|
||||
#Those blocks that the ammo can pass through
|
||||
PassThroughBlocks = []
|
||||
#Whether a ammo can break the glass
|
||||
DestroyGlass = true
|
||||
#Whether a ammo can ignite the block
|
||||
IgniteBlock = true
|
||||
#Whether a ammo can ignite the entity
|
||||
IgniteEntity = true
|
||||
#Global bullet speed modifier, the init speed of the bullet will be multiplied by this value, default is 2.0
|
||||
#This is to compensate the side effects introduced while fixing the shooter variable input issue
|
||||
#Range: 0.01 ~ 20.0
|
||||
GlobalBulletSpeedModifier = 2.0
|
||||
|
||||
[other]
|
||||
#Deprecated: now move to .minecraft/tacz/tacz-pre.toml or <your version>/tacz/tacz-pre.toml
|
||||
#When enabled, the reload command will not overwrite the default model file under config
|
||||
DefaultPackDebug = false
|
||||
#The farthest sound distance of the target, including minecarts type
|
||||
#Range: > 0
|
||||
TargetSoundDistance = 128
|
||||
#DEV: Server hitbox offset (If the hitbox is ahead, fill in a negative number)
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
ServerHitboxOffset = 3.0
|
||||
#Server hitbox latency fix
|
||||
ServerHitboxLatencyFix = true
|
||||
#The maximum latency (in milliseconds) for the server hitbox latency fix saved
|
||||
#Range: 250.0 ~ 1.7976931348623157E308
|
||||
ServerHitboxLatencyMaxSaveMs = 1000.0
|
||||
|
||||
8
config/travelersbackpack-common.toml
Normal file
8
config/travelersbackpack-common.toml
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
#Common config settings
|
||||
[common]
|
||||
#Enables backpacks spawning in loot chests
|
||||
enableLoot = true
|
||||
#Enables trade for Villager Backpack in Librarian villager trades
|
||||
enableVillagerTrade = true
|
||||
|
||||
72
config/undeadnights_difficulty_config.json
Normal file
72
config/undeadnights_difficulty_config.json
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"dynamicScaling": {
|
||||
"dynamicScalingEnabled": false,
|
||||
"healthScalePerPlayer": 0.05,
|
||||
"damageScalePerPlayer": 0.05,
|
||||
"speedScalePerPlayer": 0.0,
|
||||
"armorScalePerPlayer": 0.0,
|
||||
"daysBetweenScaleIncreases": 10.0,
|
||||
"daysHealthScaleIncrease": 0.05,
|
||||
"daysDamageScaleIncrease": 0.05,
|
||||
"daysSpeedScaleIncrease": 0.0,
|
||||
"daysArmorScaleIncrease": 0.0,
|
||||
"maxHealthScale": 2.0,
|
||||
"maxDamageScale": 2.0,
|
||||
"maxSpeedScale": 2.0,
|
||||
"maxArmorScale": 2.0
|
||||
},
|
||||
"difficultyLevels": [
|
||||
{
|
||||
"difficultyName": "Level 1",
|
||||
"minStartDay": 0,
|
||||
"maxStartDay": 0,
|
||||
"chanceForDifficultyLevelSwitch": 100,
|
||||
"difficultySettingsHordeNights": {
|
||||
"daysBetweenHordeNights": 5,
|
||||
"chanceForHordeNight": 100,
|
||||
"spawnAdditionalWaves": true,
|
||||
"cooldownBetweenWaves": 45,
|
||||
"chanceForAdditionalWave": 7,
|
||||
"allDayLongHordeNights": false,
|
||||
"maxHordesPerHordeNight": 0,
|
||||
"numberOfPlayersToGetHordePerHordeEvent": 5
|
||||
},
|
||||
"difficultySettingsHordeMobs": {
|
||||
"updateHordeMobAttributes": false,
|
||||
"updateAttributesOfThirdPartyMobs": false,
|
||||
"healthAttributeScaleFactor": 1.0,
|
||||
"damageAttributeScaleFactor": 1.0,
|
||||
"speedAttributeScaleFactor": 1.0,
|
||||
"armorAttributeScaleFactor": 1.0,
|
||||
"hordeMobsTrackingRange": 128.0,
|
||||
"hordeZombiesBurnInTheSun": false,
|
||||
"vanillaZombiesBurnInTheSun": true,
|
||||
"hordeZombiesAreFasterOnWater": false,
|
||||
"hordeMobsCanClimbEachOther": true,
|
||||
"blockBreaking": false,
|
||||
"blockBreakingTier": 1
|
||||
},
|
||||
"difficultySettingsHordes": {
|
||||
"hordeSizeScaleFactor": 1.0,
|
||||
"enableRandomHordes": false,
|
||||
"chanceForRandomHorde": 15,
|
||||
"hordeSelectionMode": "sequential",
|
||||
"listOfPossibleHordes": [
|
||||
1
|
||||
],
|
||||
"bossHordeEnabled": false,
|
||||
"bossHordeId": 1
|
||||
},
|
||||
"difficultySettingsLureEffect": {
|
||||
"enableLureHordeEffect": true,
|
||||
"nonHordeZombiesCanCauseLureHordeEffect": true,
|
||||
"chanceForLureHordeEffect": 0.07,
|
||||
"durationForLureHordeEffect": 60,
|
||||
"lureHordeEffectSpawnsHorde": true,
|
||||
"chanceForLureEffectToSpawnHorde": 0.2,
|
||||
"strongLureHordeEffectSpawnsHorde": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"internalConfigVersion": 1
|
||||
}
|
||||
19
config/undeadnights_horde_mobs_config.json
Normal file
19
config/undeadnights_horde_mobs_config.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"configVariant": 1,
|
||||
"maxWaveSize": 15,
|
||||
"defaultMobId": "undeadnights:horde_zombie",
|
||||
"extraSpawnInfo": "none",
|
||||
"hordeMobs": [
|
||||
{
|
||||
"mobId": "undeadnights:elite_zombie",
|
||||
"spawnChance": "8",
|
||||
"extraSpawnInfo": "none"
|
||||
},
|
||||
{
|
||||
"mobId": "undeadnights:demolition_zombie",
|
||||
"spawnChance": "4",
|
||||
"extraSpawnInfo": "tnt:5"
|
||||
}
|
||||
],
|
||||
"internalConfigVersion": 1
|
||||
}
|
||||
27
config/veinmining-common.toml
Normal file
27
config/veinmining-common.toml
Normal file
@ -0,0 +1,27 @@
|
||||
#The rarity of the enchantment.
|
||||
#Allowed Values: COMMON, UNCOMMON, RARE, VERY_RARE
|
||||
rarity = "RARE"
|
||||
#The number of levels of the enchantment.
|
||||
#Range: 1 ~ 5
|
||||
levels = 1
|
||||
#If enabled, the enchantment is considered a treasure enchantment.
|
||||
isTreasure = false
|
||||
#If enabled, the enchantment can be offered by villagers for trade.
|
||||
isVillagerTrade = true
|
||||
#If enabled, the enchantment can generate in loot.
|
||||
isLootable = true
|
||||
#If enabled, the enchantment can be applied at the enchantment table.
|
||||
canApplyAtEnchantingTable = true
|
||||
#If enabled, the enchantment can be applied on books.
|
||||
canApplyOnBooks = true
|
||||
#The minimum enchantability required for the first enchantment level.
|
||||
#Range: 1 ~ 100
|
||||
minEnchantabilityBase = 15
|
||||
#The additional enchantability required for each enchantment level after the first.
|
||||
#Range: 1 ~ 100
|
||||
minEnchantabilityPerLevel = 5
|
||||
#Enchantments that cannot be applied together with the enchantment.
|
||||
incompatibleEnchantments = []
|
||||
#Items that the enchantment can be applied on.
|
||||
itemsList = ["is:tool", "quark:pickarang", "quark:flamerang"]
|
||||
|
||||
40
config/veinmining-server.toml
Normal file
40
config/veinmining-server.toml
Normal file
@ -0,0 +1,40 @@
|
||||
#The minimum destroy speed the used tool needs on the block to vein mine.
|
||||
#Range: 0.0 ~ 100.0
|
||||
requiredDestroySpeed = 1.0
|
||||
#If enabled, vein mining will not activate if the used tool cannot harvest drops from the source block.
|
||||
requireCorrectTool = false
|
||||
#The maximum number of blocks to vein mine without the enchantment.
|
||||
#Range: 0 ~ 1000
|
||||
maxBlocksBase = 0
|
||||
#The maximum number of blocks to vein mine per level of the enchantment.
|
||||
#Range: 1 ~ 1000
|
||||
maxBlocksPerLevel = 50
|
||||
#If enabled, vein mining can mine diagonally.
|
||||
diagonalMining = true
|
||||
#If enabled, vein mining will stop when the tool can no longer be used.
|
||||
limitedByDurability = true
|
||||
#If enabled, vein mining will move drops from blocks to the source location.
|
||||
relocateDrops = true
|
||||
#If enabled, vein mining will never break tools.
|
||||
preventToolDestruction = true
|
||||
#If enabled, vein mining will damage the tool for each block mined.
|
||||
addToolDamage = true
|
||||
#The multiplier to tool damage from blocks that are vein mined.
|
||||
#Range: 0 ~ 1000
|
||||
toolDamageMultiplier = 1
|
||||
#If enabled, vein mining will cause player exhaustion for each block mined.
|
||||
addExhaustion = true
|
||||
#The multiplier to player exhaustion from blocks that are vein mined.
|
||||
#Range: 0.0 ~ 1000.0
|
||||
exhaustionMultiplier = 1.0
|
||||
#Determines the vein mineable blocks based on a preset option or a configured list.
|
||||
#Allowed Values: CONFIG_LIST, ALL, ORES, ORES_LOGS, ORES_STONE, ORES_STONE_LOGS, NO_BLOCK_ENTITIES
|
||||
blocks = "CONFIG_LIST"
|
||||
#The blocks or block tags for vein mining if blocks is set to "CONFIG_LIST".
|
||||
blocksList = ["#c:ores", "#forge:ores", "#minecraft:logs"]
|
||||
#Determines if blocksList contains allowed blocks or denied blocks.
|
||||
#Allowed Values: ALLOW, DENY
|
||||
blocksListType = "ALLOW"
|
||||
#The groups of blocks or block tags that are vein mined together.
|
||||
groupsList = ["#forge:obsidian", "#forge:ores/coal", "#forge:ores/diamond", "#forge:ores/emerald", "#forge:ores/gold", "#forge:ores/iron", "#forge:ores/lapis", "#forge:ores/redstone", "#forge:ores/quartz", "#forge:ores/netherite_scrap", "#forge:ores/copper", "#forge:ores/tin", "#forge:ores/osmium", "#forge:ores/uranium", "#forge:ores/fluorite", "#forge:ores/lead", "#forge:ores/zinc", "#forge:ores/aluminum", "#forge:ores/nickel", "#forge:ores/silver", "#forge:ores/apatite", "#forge:ores/cinnabar", "#forge:ores/niter", "#forge:ores/ruby", "#forge:ores/sapphire", "#forge:ores/sulfur"]
|
||||
|
||||
81
config/vinery.toml
Normal file
81
config/vinery.toml
Normal file
@ -0,0 +1,81 @@
|
||||
|
||||
[Blocks]
|
||||
#Total fermentation time in ticks
|
||||
#Range: > 1
|
||||
totalFermentationTime = 6000
|
||||
#Maximum fluid level in the Fermentation Barrel
|
||||
#Range: 10 ~ 1000
|
||||
maxFluidLevel = 100
|
||||
#How much Fluid a Grapejuice Bottle fills
|
||||
#Range: 1 ~ 1000
|
||||
maxFluidPerJuice = 25
|
||||
#Apple Press mashing time in ticks
|
||||
#Range: 1 ~ 1000
|
||||
applePressMaxMashingProgress = 600
|
||||
#Apple Press fermenting time in ticks
|
||||
#Range: 1 ~ 1000
|
||||
applePressMaxFermentingProgress = 800
|
||||
#Chance for cherries to grow
|
||||
#Range: 0.0 ~ 1.0
|
||||
cherryGrowthChance = 0.4
|
||||
#Chance for apples to grow
|
||||
#Range: 0.0 ~ 1.0
|
||||
appleGrowthChance = 0.4
|
||||
#Chance for grapes to grow
|
||||
#Range: 0.0 ~ 1.0
|
||||
grapeGrowthChance = 0.5
|
||||
|
||||
[Items]
|
||||
|
||||
[Items.Wine]
|
||||
#Maximum level for wine
|
||||
#Range: 1 ~ 10
|
||||
maxLevel = 5
|
||||
#Start duration for wine in seconds
|
||||
#Range: 1 ~ 100000
|
||||
startDuration = 1800
|
||||
#Duration per year in seconds
|
||||
#Range: 1 ~ 10000
|
||||
durationPerYear = 200
|
||||
#Days per year
|
||||
#Range: 1 ~ 100
|
||||
daysPerYear = 24
|
||||
#Years per effect level
|
||||
#Range: 1 ~ 100
|
||||
yearsPerEffectLevel = 6
|
||||
#Maximum duration in seconds
|
||||
#Range: 1 ~ 100000
|
||||
maxDuration = 15000
|
||||
|
||||
[Items.Banner]
|
||||
#Set to false to disable the banner's effect.
|
||||
giveEffect = true
|
||||
#Set to false to hide the banner's tooltip. If giveEffect is false, showTooltip is automatically false.
|
||||
showTooltip = true
|
||||
|
||||
[Items.Basket]
|
||||
#List of item IDs that are blacklisted from being placed in the picnic basket. Format: 'modid:itemname'
|
||||
basketBlacklist = ["vinery:basket"]
|
||||
|
||||
[Items.WanderingTrader]
|
||||
#Chance for the custom trader to spawn. Range: 0.0 to 1.0
|
||||
#Range: 0.0 ~ 1.0
|
||||
spawnChance = 0.5
|
||||
#If true, the trader will spawn with mules.
|
||||
spawnWithMules = true
|
||||
#Spawn delay for the trader in ticks.
|
||||
#Range: > 1
|
||||
spawnDelay = 48000
|
||||
|
||||
[Items.VillagerTrades]
|
||||
#List of trades for Level 1. Format: item|price|quantity|maxUses|isSelling
|
||||
level1Trades = ["vinery:red_grape|5|4|5|false", "vinery:white_grape|5|4|5|false", "vinery:red_grape_seeds|2|1|1|true", "vinery:white_grape_seeds|2|1|1|true"]
|
||||
#List of trades for Level 2. Format: item|price|quantity|maxUses|isSelling
|
||||
level2Trades = ["vinery:wine_bottle|1|2|7|true"]
|
||||
#List of trades for Level 3. Format: item|price|quantity|maxUses|isSelling
|
||||
level3Trades = ["vinery:flower_box|3|1|10|true", "vinery:white_grape_bag|7|1|10|true", "vinery:red_grape_bag|7|1|10|true"]
|
||||
#List of trades for Level 4. Format: item|price|quantity|maxUses|isSelling
|
||||
level4Trades = ["vinery:basket|4|1|10|true", "vinery:flower_pot_big|5|1|10|true", "vinery:window|12|1|10|true", "vinery:dark_cherry_beam|6|1|10|true", "vinery:taiga_red_grape_seeds|2|1|5|true", "vinery:taiga_white_grape_seeds|2|1|5|true"]
|
||||
#List of trades for Level 5. Format: item|price|quantity|maxUses|isSelling
|
||||
level5Trades = ["vinery:wine_box|10|1|10|true", "vinery:lilitu_wine|4|1|10|true", "vinery:calendar|12|1|15|true"]
|
||||
|
||||
5
config/xaero/lib/common.cfg
Normal file
5
config/xaero/lib/common.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
default_enforced_profile = default
|
||||
enforced_profile_permission_node = xaero.lib.enforced_server_profile
|
||||
allow_internet_access = true
|
||||
everyone_tracks_everyone = false
|
||||
edit_server_profiles_permission_node = xaero.lib.edit_server_profiles
|
||||
5
config/xaero/lib/server_profiles/default.cfg
Normal file
5
config/xaero/lib/server_profiles/default.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
############
|
||||
## Server Config Profile "default"
|
||||
##
|
||||
|
||||
profile_name = Default
|
||||
3
config/xaero/minimap/common.cfg
Normal file
3
config/xaero/minimap/common.cfg
Normal file
@ -0,0 +1,3 @@
|
||||
default_enforced_profile = default
|
||||
enforced_profile_permission_node = xaero.minimap.enforced_server_profile
|
||||
register_minimap_status_effects = true
|
||||
5
config/xaero/minimap/server_profiles/default.cfg
Normal file
5
config/xaero/minimap/server_profiles/default.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
############
|
||||
## Server Config Profile "default"
|
||||
##
|
||||
|
||||
profile_name = Default
|
||||
0
crash-reports/.gitkeep
Normal file
0
crash-reports/.gitkeep
Normal file
191
discord_bot.py
Normal file
191
discord_bot.py
Normal file
@ -0,0 +1,191 @@
|
||||
import asyncio
|
||||
import sys
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from mcstatus import JavaServer
|
||||
from secrets import TOKEN
|
||||
|
||||
|
||||
BOT_STATUS_CHANNEL = "bot-status"
|
||||
SCRIPTS_DIR = Path(__file__).parent
|
||||
|
||||
|
||||
class GPackBot(discord.Client):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.tree = app_commands.CommandTree(self)
|
||||
self._serve_active = False
|
||||
|
||||
async def _wait_for_tcp_listen(self, host: str, port: int, timeout_s: float) -> bool:
|
||||
"""
|
||||
Returns True when `host:port` accepts TCP connections.
|
||||
Used to confirm `simple_serve.py` successfully bound before reporting success to Discord.
|
||||
"""
|
||||
deadline = asyncio.get_running_loop().time() + timeout_s
|
||||
last_err: Exception | None = None
|
||||
while asyncio.get_running_loop().time() < deadline:
|
||||
try:
|
||||
reader, writer = await asyncio.open_connection(host=host, port=port)
|
||||
writer.close()
|
||||
await writer.wait_closed()
|
||||
return True
|
||||
except Exception as e:
|
||||
last_err = e
|
||||
await asyncio.sleep(0.2)
|
||||
# Avoid leaking potentially sensitive details; just return False.
|
||||
_ = last_err
|
||||
return False
|
||||
|
||||
async def setup_hook(self):
|
||||
self.tree.command(name="start", description="Start the server")(self.cmd_start)
|
||||
self.tree.command(name="stop", description="Stop the server")(self.cmd_stop)
|
||||
self.tree.command(name="status", description="Check server status")(self.cmd_status)
|
||||
self.tree.command(name="serve", description="Serve ModPack webpage")(self.cmd_serve)
|
||||
|
||||
async def on_ready(self):
|
||||
print(f"GPack Bot {self.user} (ID: {self.user.id}) @{datetime.now().strftime('%I:%M%p')}")
|
||||
for guild in self.guilds:
|
||||
self.tree.copy_global_to(guild=guild)
|
||||
await self.tree.sync(guild=guild)
|
||||
self.tree.clear_commands(guild=None)
|
||||
await self.tree.sync()
|
||||
timestamp = datetime.now().strftime("%H:%M")
|
||||
channel = discord.utils.get(self.get_all_channels(), name=BOT_STATUS_CHANNEL)
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
await channel.send(f"Server in Standby! - {timestamp}")
|
||||
|
||||
async def close(self):
|
||||
timestamp = datetime.now().strftime("%H:%M")
|
||||
channel = discord.utils.get(self.get_all_channels(), name=BOT_STATUS_CHANNEL)
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
await channel.send(f"Server Disabled - {timestamp}")
|
||||
await super().close()
|
||||
|
||||
async def run_script(self, script: str) -> tuple[int, str, str]:
|
||||
proc = await asyncio.create_subprocess_exec(
|
||||
SCRIPTS_DIR / script,
|
||||
stdout=asyncio.subprocess.PIPE,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
)
|
||||
stdout, stderr = await proc.communicate()
|
||||
return proc.returncode or 0, stdout.decode(), stderr.decode()
|
||||
|
||||
async def cmd_start(self, interaction: discord.Interaction):
|
||||
await interaction.response.defer()
|
||||
proc = await asyncio.create_subprocess_shell(
|
||||
"ss -tuln | grep 443",
|
||||
stdout=asyncio.subprocess.PIPE,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
)
|
||||
stdout, _ = await proc.communicate()
|
||||
status = "Online" if stdout.strip() else "Offline"
|
||||
if status == "Offline":
|
||||
code, stdout, stderr = await self.run_script("start.sh")
|
||||
if code == 0:
|
||||
await interaction.followup.send("Server started.")
|
||||
else:
|
||||
await interaction.followup.send(f"Start failed (exit {code}): {stderr or stdout}")
|
||||
else:
|
||||
await interaction.followup.send("Barryslab is running, can't turn on rn")
|
||||
|
||||
async def cmd_stop(self, interaction: discord.Interaction):
|
||||
await interaction.response.defer()
|
||||
code, stdout, stderr = await self.run_script("stop.sh")
|
||||
if code == 0:
|
||||
await interaction.followup.send("Server stopped.")
|
||||
else:
|
||||
await interaction.followup.send(f"Stop failed (exit {code}): {stderr or stdout}")
|
||||
|
||||
async def cmd_status(self, interaction: discord.Interaction):
|
||||
proc = await asyncio.create_subprocess_shell(
|
||||
"ss -tuln | grep 25565",
|
||||
stdout=asyncio.subprocess.PIPE,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
)
|
||||
stdout, _ = await proc.communicate()
|
||||
status = "Online" if stdout.strip() else "Offline"
|
||||
if status == "Offline":
|
||||
await interaction.response.send_message(f"Server is {status}.")
|
||||
else:
|
||||
server = JavaServer.lookup("barrys.cloud")
|
||||
status = server.status()
|
||||
await interaction.response.send_message(f"Server has {status.players.online} player(s) online and replied in {status.latency} ms")
|
||||
|
||||
async def cmd_serve(self, interaction: discord.Interaction):
|
||||
if self._serve_active:
|
||||
await interaction.response.send_message("Serve is already running.", ephemeral=True)
|
||||
return
|
||||
await interaction.response.defer()
|
||||
self._serve_active = True
|
||||
proc = None
|
||||
try:
|
||||
proc = await asyncio.create_subprocess_exec(
|
||||
sys.executable,
|
||||
str(SCRIPTS_DIR / "simple_serve.py"),
|
||||
str(SCRIPTS_DIR),
|
||||
stdout=asyncio.subprocess.DEVNULL,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
)
|
||||
|
||||
# Confirm the HTTP server actually bound successfully on port 80.
|
||||
# If binding fails (e.g. permissions), the process will exit and no port will listen.
|
||||
bound = await self._wait_for_tcp_listen("127.0.0.1", 80, timeout_s=5)
|
||||
if not bound:
|
||||
# Stop the child process and return the stderr so we can see the real reason.
|
||||
try:
|
||||
proc.terminate()
|
||||
await asyncio.wait_for(proc.wait(), timeout=5)
|
||||
except Exception:
|
||||
try:
|
||||
proc.kill()
|
||||
await proc.wait()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
_, stderr = await proc.communicate()
|
||||
err_text = (stderr.decode(errors="replace").strip() if stderr else "").splitlines()
|
||||
err_text = err_text[0] if err_text else "unknown error"
|
||||
await interaction.followup.send(
|
||||
f"Serve failed to start (port 80 not listening): {err_text}",
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
await interaction.followup.send(
|
||||
"HTTP server started for 4 minutes. Go to http://barrys.cloud to download the modpack."
|
||||
)
|
||||
await asyncio.sleep(240)
|
||||
if proc.returncode is None:
|
||||
proc.terminate()
|
||||
try:
|
||||
await asyncio.wait_for(proc.wait(), timeout=15)
|
||||
except asyncio.TimeoutError:
|
||||
proc.kill()
|
||||
await proc.wait()
|
||||
await interaction.followup.send("Serve window ended.")
|
||||
except Exception as e:
|
||||
await interaction.followup.send(f"Serve failed: {e}")
|
||||
finally:
|
||||
self._serve_active = False
|
||||
if proc is not None and proc.returncode is None:
|
||||
proc.terminate()
|
||||
try:
|
||||
await asyncio.wait_for(proc.wait(), timeout=15)
|
||||
except asyncio.TimeoutError:
|
||||
proc.kill()
|
||||
await proc.wait()
|
||||
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
print("Hello from gpackbot!")
|
||||
bot = GPackBot(intents=discord.Intents.default())
|
||||
bot.run(TOKEN)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
3
eula.txt
Normal file
3
eula.txt
Normal file
@ -0,0 +1,3 @@
|
||||
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
|
||||
#Sun Mar 08 14:27:36 CET 2026
|
||||
eula=true
|
||||
Binary file not shown.
Binary file not shown.
BIN
libraries/com/github/jponge/lzma-java/1.3/lzma-java-1.3.jar
Normal file
BIN
libraries/com/github/jponge/lzma-java/1.3/lzma-java-1.3.jar
Normal file
Binary file not shown.
BIN
libraries/com/github/oshi/oshi-core/6.2.2/oshi-core-6.2.2.jar
Normal file
BIN
libraries/com/github/oshi/oshi-core/6.2.2/oshi-core-6.2.2.jar
Normal file
Binary file not shown.
BIN
libraries/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
Normal file
BIN
libraries/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
Normal file
Binary file not shown.
BIN
libraries/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar
Normal file
BIN
libraries/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar
Normal file
Binary file not shown.
BIN
libraries/com/google/code/gson/gson/2.10/gson-2.10.jar
Normal file
BIN
libraries/com/google/code/gson/gson/2.10/gson-2.10.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
libraries/com/google/guava/guava/25.1-jre/guava-25.1-jre.jar
Normal file
BIN
libraries/com/google/guava/guava/25.1-jre/guava-25.1-jre.jar
Normal file
Binary file not shown.
BIN
libraries/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar
Normal file
BIN
libraries/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
libraries/com/mojang/authlib/4.0.43/authlib-4.0.43.jar
Normal file
BIN
libraries/com/mojang/authlib/4.0.43/authlib-4.0.43.jar
Normal file
Binary file not shown.
BIN
libraries/com/mojang/brigadier/1.1.8/brigadier-1.1.8.jar
Normal file
BIN
libraries/com/mojang/brigadier/1.1.8/brigadier-1.1.8.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
libraries/com/mojang/logging/1.1.1/logging-1.1.1.jar
Normal file
BIN
libraries/com/mojang/logging/1.1.1/logging-1.1.1.jar
Normal file
Binary file not shown.
BIN
libraries/com/nothome/javaxdelta/2.0.1/javaxdelta-2.0.1.jar
Normal file
BIN
libraries/com/nothome/javaxdelta/2.0.1/javaxdelta-2.0.1.jar
Normal file
Binary file not shown.
BIN
libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar
Normal file
BIN
libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar
Normal file
Binary file not shown.
BIN
libraries/commons-io/commons-io/2.4/commons-io-2.4.jar
Normal file
BIN
libraries/commons-io/commons-io/2.4/commons-io-2.4.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
libraries/cpw/mods/modlauncher/10.0.9/modlauncher-10.0.9.jar
Normal file
BIN
libraries/cpw/mods/modlauncher/10.0.9/modlauncher-10.0.9.jar
Normal file
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
libraries/de/siegmar/fastcsv/2.2.2/fastcsv-2.2.2.jar
Normal file
BIN
libraries/de/siegmar/fastcsv/2.2.2/fastcsv-2.2.2.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
libraries/it/unimi/dsi/fastutil/8.5.9/fastutil-8.5.9.jar
Normal file
BIN
libraries/it/unimi/dsi/fastutil/8.5.9/fastutil-8.5.9.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
libraries/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
Normal file
BIN
libraries/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
Normal file
Binary file not shown.
BIN
libraries/net/jodah/typetools/0.6.3/typetools-0.6.3.jar
Normal file
BIN
libraries/net/jodah/typetools/0.6.3/typetools-0.6.3.jar
Normal file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
Input: 9afed7fc4927dd453c68f77c98176a9473ae6942
|
||||
Srg: 67dc0f086ea40e91fd4ae15124fa888e6803844f
|
||||
Output: 13522e3278befd103064d91a199451df4cd2633f
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
Input: 9afed7fc4927dd453c68f77c98176a9473ae6942
|
||||
Srg: 67dc0f086ea40e91fd4ae15124fa888e6803844f
|
||||
Output: 9e06bdd77ca6d95b2cced0bf372245f753eeb16a
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user