Compare commits

..

11 Commits

Author SHA1 Message Date
Matt 77d1cef1d0 fuel: tier lava equivalent to crude oil (8000 ticks/bucket)
Without this entry, lava buckets get the vanilla bucket-burn fallback
of 20000 ticks each — which made lava more powerful than refined
TFMG kerosene/naphtha despite being free and trivially obtainable.

Setting lava to 8000 ticks matches crude_oil exactly: both are the
raw entry-tier fuels you can scoop without any infrastructure, and
the player has to commit to a refining setup to unlock the higher
tiers.

Solid fuels (coal, charcoal, blaze rods, etc.) continue to work via
realisticTrains' chest/barrel pathway -- no datapack entry needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:46:35 +00:00
Matt 19705118d3 Merge pull request 'cbc: restore mod-default failure chances' (#49) from config/cbc-restore-defaults into main 2026-05-28 20:44:07 +00:00
Matt cfc1a21d25 cbc: restore mod-default failure chances
Revert the custom tier-strict + user-error-forgiveness tuning shipped
in v0.29.0 and use the mod's shipped defaults instead:

  squibChance              0.0  -> 0.25
  barrelChargeBurstChance  0.0  -> 0.2
  interruptedIgnitionChance 0.0 -> 0.33
  overloadBurstChance      1.0  -> 0.5
  failureExplosionPower    0.0  -> 2.0

disableAllCannonFailure stays false. Tier balance is still preserved
(material maxSafePropellantStress is what gates overload). The
difference is failures are now probabilistic per the mod author's
intended balance, and the explosion has its default power.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:43:54 +00:00
Matt 4cbc8c42af Merge pull request 'pack: v0.29.0 — train fuel + CBC tier-preserving safety' (#48) from feature/v0.29.0-train-fuel-and-cbc-tier into main 2026-05-28 20:42:38 +00:00
Matt e84de6c190 pack: v0.29.0 — train fuel requirement + CBC tier-preserving safety
Two related gameplay tweaks:

1. Train fuel requirement (Steam 'n' Rails)
   - Set realisticTrains = true in railways-server.toml.
     Trains now consume fuel from a Fuel Tank (liquid) or solid fuels
     in chests/barrels on the contraption. realisticFuelTanks stays
     true so tanks won't accept water/junk.
   - Ship a datapack bns-fuel/ that defines TFMG fluids as proper
     liquid fuels at tiered burn rates:
       crude_oil    8000 ticks/bucket   (raw, abundant -- entry)
       furnace_gas 12000 ticks/bucket   (cheap by-product)
       naphtha     24000 ticks/bucket   (mid refined)
       kerosene    24000 ticks/bucket   (mid refined)
       gasoline    36000 ticks/bucket   (top refined)
       diesel      48000 ticks/bucket   (top refined, longest)
     Vanilla lava bucket still works via bucket-burn fallback
     (20000 ticks). Tier curve incentivises building a real refinery.

2. CBC tier-preserving cannon safety
   - Revert the nuclear disableAllCannonFailure=true switch shipped
     in v0.28 hotfix -- it killed the bronze/steel/nethersteel tier
     balance because overloaded cannons fired without consequence.
   - Per-lever config that protects against random RNG losses while
     keeping the tier mechanic intact:
       disableAllCannonFailure = false
       squibChance = 0.0              (no random projectile-stuck)
       barrelChargeBurstChance = 0.0  (forgive misplaced charges)
       interruptedIgnitionChance = 0.0 (forgive gapped loads)
       overloadBurstChance = 1.0      (TIER STRICT -- exceed your
                                       cannon's rated propellant
                                       stress = lose the cannon)
       failureExplosionPower = 0.0    (no collateral blast when it
                                       does die from overload)
   - Effect: a cannon built to spec and used within its
     maxSafePropellantStress is immortal. Overloading dies cleanly
     per the material's failureMode, no fortress damage. User error
     (squib/misplace/gap) doesn't destroy expensive builds.

Stress units NOT supported for trains: verified by inspecting Rails
and Create bytecode, nothing consumes SU for train movement. Liquid
fuel is the supported mechanism.

Verified live: server boots clean, port 25565 binds, KubeJS loads
0 errors, Minecraft auto-enables the bns-fuel datapack, Rails
initializes the LiquidFuelManager reload listener.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:42:38 +00:00
Matt 92306823cb Merge pull request 'cbc: disable cannon self-failure (RNG self-destruct)' (#47) from config/cbc-disable-self-failure into main 2026-05-28 19:39:44 +00:00
Matt c723a42628 cbc: disable all cannon self-failure
Cannons are expensive to build; users were losing them to RNG
self-destruction (squib, barrel charge burst, overload, interrupted
ignition, catastrophic failure). Per-cannon failure is configurable
via a single master switch in createbigcannons-server.toml:

  [failure]
  disableAllCannonFailure = true

This zeroes out all six failure paths in one go. Applied to the live
server and tracked here under defaultconfigs/ so future server resets
preserve it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 19:39:44 +00:00
Matt 83abbc90d3 Merge pull request 'pack: v0.28.0 - Steam n Rails + Copycats+/Aero weight' (#46) from feature/v0.28.0-rails-and-aero-bridge into main 2026-05-28 19:30:04 +00:00
Matt 5a24801f48 pack: v0.28.0 — Steam 'n' Rails (port) + Copycats+/Aero weight bridge
Adds two mods on top of v0.27.0:

  - Create: Steam 'n' Rails 0.2.0+neoforge-mc1.21.1 (stable). The
    official Steam 'n' Rails team skipped 1.21.1, so this is the
    "Porters of Railways" community port — actively maintained,
    310k downloads on the beta line and 0.2.0 just hit stable.
    Brings train QoL: track tools, semaphores, conductor cap,
    smokestacks, narrow-gauge tracks, etc.

  - Copycats+ aeronautics weight 1.1.1. Small interop mod so
    copycat blocks contribute weight to Create: Aeronautics
    contraptions instead of being treated as massless. ~15KB.

All deps satisfied by mods already in the pack (Create, Copycats+,
Sable, Create: Aeronautics).

Tested live: server boots, port 25565 binds, KubeJS loads 0/0 errors,
aerocopycats logs HELLO FROM COMMON SETUP, Railways registers
55+53+238 entries across its three creative tabs. No new crashes.

Known noise: Steam 'n' Rails ships optional loot tables for tracks
of wood types from many other mods (TwilightForest, BYG, TFC, Blue
Skies, Hex Casting, BoP, etc.). Mods absent from this pack produce
~276 'Unknown registry key' ERROR lines once at boot. Harmless —
loot tables for items that don't exist just fail to parse and get
skipped. Standard behavior for Rails on lean packs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 19:29:43 +00:00
Matt 5e816e1a7a Merge pull request 'kubejs: use kubejs-create builder API for flax press recipe' (#45) from refactor/supplementaries-bridges-kubejs-create-api into main 2026-05-28 19:08:42 +00:00
Matt d2cc179ebd kubejs: use kubejs-create builder API for flax press recipe
Now that v0.27.0 ships kubejs_create, the high-level
event.recipes.create.pressing(out, in) builder works, replacing the
raw event.custom({type: 'create:pressing', ...}) JSON shim we needed
before.

Verified live on the server -- recipe loads cleanly:
[bns/supplementaries_bridges] added flax -> string press recipe

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 18:55:43 +00:00
12 changed files with 474 additions and 11 deletions
@@ -0,0 +1,342 @@
#.
#These values affect the extent of cannon failure.
[failure]
#.
#.
#If true, cannons cannot fail whatsoever. Equivalent to setting all the chances below to zero.
disableAllCannonFailure = false
#.
#Chance that a fired projectile will get stuck in a barrel after exceeding the squib ratio. 0 is 0%, 1 is 100%.
# Default: 0.25
# Range: 0.0 ~ 1.0
squibChance = 0.25
#.
#Chance that a cannon will fail if a Powder Charge is ignited in a "barrel"-type cannon block. 0 is 0%, 1 is 100%.
#This chance can be affected by stronger and weaker charge blocks.
# Default: 0.20000000298023224
# Range: 0.0 ~ 1.0
barrelChargeBurstChance = 0.20000000298023224
#.
#How strong the explosion of a catastrophic failure is. Scaled by the amount of charges used in the shot.
# Default: 2.0
# Range: 0.0 ~ 3.4028234663852886E38
failureExplosionPower = 2.0
#.
#Chance that a cannon loaded with more Powder Charges that it can handle will fail. 0 is 0%, 1 is 100%.
# Default: 0.5
# Range: 0.0 ~ 1.0
overloadBurstChance = 0.5
#.
#Chance that a load with gaps between the loaded Powder Charges will not completely combust. 0 is 0%, 1 is 100%.
# Default: 0.33000001311302185
# Range: 0.0 ~ 1.0
interruptedIgnitionChance = 0.33000001311302185
#.
#These values affect the characteristics of cannon munitions.
[munitions]
#.
#.
#If projectiles can bounce, ricochet, and be deflected.
projectilesCanBounce = true
#.
# Default: 0.33000001311302185
# Range: 0.0 ~ 1.0
baseProjectileBounceChance = 0.33000001311302185
#.
# Default: 0.8999999761581421
# Range: 0.0 ~ 1.0
baseProjectileFluidBounceChance = 0.8999999761581421
#.
#[in Meters per Tick]
#The minimum velocity necessary to activate the penetration bonus.
# Default: 1.0
# Range: 0.0 ~ 3.4028234663852886E38
minimumVelocityForPenetrationBonus = 1.0
#.
# Default: 0.10000000149011612
# Range: 0.0 ~ 3.4028234663852886E38
penetrationBonusScale = 0.10000000149011612
#.
#The extent to which cannon projectiles can damage surrounding blocks.
#All Damage - projectiles will destroy anything they hit, if applicable. Explosive projectiles will destroy blocks on detonation.
#No Explosive Damage - projectiles will destroy anything they hit, if applicable. Explosive projectiles will only harm entities on detonation.
#No Damage - projectiles will not destroy anything they hit, and will only deal entity damage. Explosive projectiles will only harm entities on detonation.
#Allowed Values: ALL_DAMAGE, NO_EXPLOSIVE_DAMAGE, NO_DAMAGE
damageRestriction = "ALL_DAMAGE"
#.
projectilesChangeSurroundings = true
#.
munitionBlocksCanExplode = true
#.
#Damp Big Cannon Propellant
[munitions.dampBigCannonPropellant]
#.
dampPropellantBlocksStartingIgnition = true
#.
dampPropellantWeakensPropellant = true
#.
#Chunkloading
[munitions.chunkloading]
#.
projectilesCanChunkload = true
#.
smokeCloudsCanChunkload = true
#.
#Big Cannon Munitions
[munitions.bigCannonMunitions]
#.
#Allowed Values: NONE, LONG, SHORT
trailType = "SHORT"
#.
#Makes all shot big cannon projectiles tracers regardless if the item had a tracer tip applied.
allBigCannonProjectilesAreTracers = false
#.
#[in Ticks]
# Default: 20
# Range: 0 ~ 100
quickFiringBreechItemPickupDelay = 20
#.
quickFiringBreechItemGoesToInventory = false
#.
#Projectile Fuzes
[munitions.fuzes]
#.
#Chance that the Impact Fuze/Delayed Impact Fuze will detonate on hitting something. 0 is 0% (never), 1 is 100% (always).
# Default: 0.6700000166893005
# Range: 0.0 ~ 1.0
impactFuzeDetonationChance = 0.6700000166893005
#.
#How many blocks the Impact Fuze/Delayed Impact Fuze can hit before breaking. Set to -1 to never break.
# Default: 3
# Range: > -1
impactFuzeDurability = 3
#.
#Chance that the Inertia Fuze/Delayed Inertia Fuze will detonate on hitting something. 0 is 0% (never), 1 is 100% (always).
# Default: 0.8999999761581421
# Range: 0.0 ~ 1.0
inertiaFuzeDetonationChance = 0.8999999761581421
#.
#How many blocks the Inertia Fuze/Delayed Inertia Fuze can hit before breaking. Set to -1 to never break.
# Default: 3
# Range: > -1
inertiaFuzeDurability = 3
#.
#[in Ticks]
#Time it takes for a proximity fuze to arm itself.
#After the fuze has been in the air for the specified arming time, it will detonate when it gets close enough to a block or entity.
# Default: 5
# Range: > 0
proximityFuzeArmingTime = 5
#.
#Scale of the area covered by the Proximity Fuze. Larger number means wider area covered
# Default: 5
# Range: 1 ~ 10
proximityFuzeScale = 5
#.
#[in Blocks]
#Spacing of the detection points of the Proximity Fuze.
# Default: 1.5
# Range: 0.5 ~ 2.0
proximityFuzeSpacing = 1.5
#.
#Grouped Munitions
[munitions.groupedMunitions]
#.
#The chance of a fluid blob affecting a block in its area of effect (AOE). 0 is 0% (never), 1 is 100% (always).
# Default: 0.5
# Range: 0.0 ~ 1.0
fluidBlobBlockEffectChance = 0.5
#.
#Autocannon Munitions
[munitions.autocannonMunitions]
#.
#Allowed Values: NONE, LONG, SHORT
trailType = "SHORT"
#.
#Makes all shot autocannon projectiles tracers regardless if the item had a tracer tip applied. Emulates legacy behavior.
allAutocannonProjectilesAreTracers = false
#.
#How many autocannon rounds the Autocannon Ammo Container can store.
# Default: 16
# Range: 1 ~ 128
autocannonAmmoContainerAutocannonRoundCapacity = 16
#.
#How many machine gun rounds the Autocannon Ammo Container can store.
# Default: 64
# Range: 1 ~ 128
autocannonAmmoContainerMachineGunRoundCapacity = 64
#.
#These values affect the characteristics of cannon materials and cannon structures
[cannons]
#.
#.
#Maximum length of cannons that can be built.
# Default: 64
# Range: > 3
maxCannonLength = 64
#.
#Time when the Quickfiring Breech cannot be loaded by Mechanical Arms.
# Default: 40
# Range: > 0
quickfiringBreechLoadingCooldown = 40
#.
#Time it takes for the Quickfiring Breech to fully open/close, during which it cannot be loaded.
# Default: 5
# Range: > 0
quickfiringBreechOpeningCooldown = 5
#.
# Default: 4.0
# Range: 0.0 ~ 3.4028234663852886E38
bigCannonRecoilScale = 4.0
#.
# Default: 0.5
# Range: 0.0 ~ 3.4028234663852886E38
autocannonRecoilScale = 0.5
#.
#Drop Mortar
[cannons.dropMortar]
#.
#Time in ticks between inserting a munition into a drop mortar and the drop mortar firing it. There are 20 ticks in 1 second.
# Default: 5
# Range: > 0
dropMortarDelay = 5
#.
#Length in ticks that the player has to wait for before inserting the same munition type into a drop mortar again. There are 20 ticks in 1 second.
# Default: 40
# Range: > 0
dropMortarItemCooldown = 40
#.
#Loading Tools
[cannons.loadingTools]
#.
#If deployers can use loading tools.
deployersCanUseLoadingTools = false
#.
#How many blocks inside a cannon a Ram Rod can reach.
# Default: 5
# Range: > 1
ramRodReach = 5
#.
#Maximum amount of munition blocks a Ram Rod can push.
# Default: 3
# Range: > 1
ramRodStrength = 3
#.
#How many blocks inside a cannon a Worm can reach.
# Default: 5
# Range: > 1
wormReach = 5
#.
#How many hunger/saturation points it takes to move one munition block a distance of one block using loading tools.
# Default: 2.5
# Range: 0.0 ~ 3.4028234663852886E38
loadingToolHungerConsumption = 2.5
#.
#How many ticks before a player can use a manual loading tool again. There are 20 ticks in 1 second.
# Default: 20
# Range: > 0
loadingToolCooldown = 20
#.
#Cannon Carriages
[cannons.carriage]
#.
#How fast the carriage is, in blocks per tick.
# Default: 0.03999999910593033
# Range: 0.03999999910593033 ~ 1.0
carriageSpeed = 0.03999999910593033
#.
#How fast the carriage turns, in degrees per tick.
# Default: 1.0
# Range: 0.10000000149011612 ~ 10.0
carriageTurnRate = 1.0
#.
cannonWeightAffectsCarriageSpeed = true
#.
#Display Link Info
[cannons.displayLink]
#.
shouldDisplayCannonRotation = true
#.
shouldDisplayContainedMunitions = true
#.
#Big Cannon Screen Shake
[cannons.bigCannonScreenShake]
#.
# Default: 8.0
# Range: 0.0 ~ 3.4028234663852886E38
blastDistanceMultiplier = 8.0
#.
#These values affect various miscellaneous contraptions.
[kinetics]
#.
#.
#Maximum length of cannon loaders that can be built.
# Default: 64
# Range: > 3
maxLoaderLength = 64
#.
#When enabled, Cannon Loaders will not break if another contraption is placed on them. Enables legacy behavior.
enableIntersectionLoading = false
#.
#These values affect the stress of Create Big Cannons' mechanical blocks.
[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]
steel_sliding_breech = 32.0
cannon_drill = 8.0
nethersteel_screw_breech = 40.0
steel_screw_breech = 16.0
bronze_sliding_breech = 12.0
cannon_loader = 4.0
cannon_builder = 8.0
cast_iron_sliding_breech = 16.0
#.
#These values affect cannon crafting properties.
[crafting]
#.
#.
#Maximum height of a single cannon cast that can be built.
# Default: 32
# Range: > 1
maxCannonCastHeight = 32
#.
#Maximum length of a Cannon Drill that can be built.
# Default: 32
# Range: > 1
maxCannonDrillLength = 32
#.
#Maximum length of a Cannon Builder that can be built.
# Default: 32
# Range: > 1
maxCannonBuilderLength = 32
#.
#Maximum reach of a Cannon Builder.
# Default: 32
# Range: > 2
maxCannonBuilderRange = 32
#.
#[in Ticks]
#Time a built-up cannon block needs to be heated for until it transforms into its finished form.
# Default: 6000
# Range: > 0
builtUpCannonHeatingTime = 6000
@@ -0,0 +1,67 @@
#.
#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
# Default: 64
# 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.
# Default: 0.009999999776482582
# Range: 0.0 ~ 1.0
handcarHungerMultiplier = 0.009999999776482582
#.
#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
# Default: 64
# Range: > 1
maxConductorVentLength = 64
#.
#How often a conductor whistle updates the train of the bound conductor
# Default: 10
# Range: 1 ~ 600
whistleRebindRate = 10
#.
#Maximum distance (in blocks) at which a conductor can be activated by looking at them
# Default: 16
# Range: 1 ~ 64
activationDistance = 16
#.
#Realism Settings
[realism]
#.
#.
#Make trains require fuel to run (either from fuel tanks or solid fuels in chests/barrels)
realisticTrains = true
#.
#Make fuel tanks only accept proper liquid fuels (so water etc can't go into them)
realisticFuelTanks = true
@@ -20,14 +20,12 @@ ServerEvents.recipes(event => {
// 2 flax pressed -> 1 string. Cheaper than wool->4 string but // 2 flax pressed -> 1 string. Cheaper than wool->4 string but
// requires a Press (kinetic infrastructure) -- balanced. // requires a Press (kinetic infrastructure) -- balanced.
// //
// KubeJS's event.recipes.create.pressing(out, in) signature // Uses the kubejs_create mod's builder API (added in pack v0.27.0).
// doesn't match Create 6.x's two-arg form, so build the recipe // Before that, the bare event.recipes.create.pressing() signature
// via custom() with the raw JSON schema. // didn't match Create 6.x's recipe shape and we had to use a raw
event.custom({ // event.custom({type: 'create:pressing', ...}) call.
type: 'create:pressing', event.recipes.create.pressing('2x minecraft:string', 'supplementaries:flax')
ingredients: [{ item: 'supplementaries:flax' }], .id('bns:press_flax_to_string');
results: [{ id: 'minecraft:string', count: 2 }],
}).id('bns:press_flax_to_string');
console.info('[bns/supplementaries_bridges] added flax -> string press recipe'); console.info('[bns/supplementaries_bridges] added flax -> string press recipe');
}); });
@@ -0,0 +1,4 @@
{
"fluids": ["minecraft:lava"],
"fuel_ticks": 8000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:crude_oil"],
"fuel_ticks": 8000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:diesel"],
"fuel_ticks": 48000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:furnace_gas"],
"fuel_ticks": 12000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:gasoline"],
"fuel_ticks": 36000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:kerosene"],
"fuel_ticks": 24000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:naphtha"],
"fuel_ticks": 24000
}
@@ -0,0 +1,6 @@
{
"pack": {
"pack_format": 48,
"description": "Brass and Sigil — Steam'n'Rails liquid fuel definitions"
}
}
+25 -3
View File
@@ -1,13 +1,13 @@
{ {
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing", "$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
"name": "Brass and Sigil", "name": "Brass and Sigil",
"version": "0.27.0", "version": "0.29.0",
"minecraft": "1.21.1", "minecraft": "1.21.1",
"loader": { "loader": {
"type": "neoforge", "type": "neoforge",
"version": "21.1.228" "version": "21.1.228"
}, },
"lockedAt": "2026-05-04T13:22:58.7131203+00:00", "lockedAt": "2026-05-28T20:40:32Z",
"mods": [ "mods": [
{ {
"source": "modrinth", "source": "modrinth",
@@ -976,6 +976,28 @@
"sha1": "a865d9a00a595038d35b908c42565930189be68a", "sha1": "a865d9a00a595038d35b908c42565930189be68a",
"size": 1578765, "size": 1578765,
"side": "both" "side": "both"
},
{
"source": "modrinth",
"slug": "create-steam-n-rails-1.21.1",
"versionId": "oQKsMKfj",
"version": "0.2.0+neoforge-mc1.21.1",
"path": "mods/railways-0.2.0+neoforge-mc1.21.1.jar",
"url": "https://cdn.modrinth.com/data/L3Jv0QZI/versions/oQKsMKfj/railways-0.2.0%2Bneoforge-mc1.21.1.jar",
"sha1": "9d52eef0772b81de397271b98c0201a59733f9c6",
"size": 12106875,
"side": "both"
},
{
"source": "modrinth",
"slug": "copycats+-aeronautics-weight",
"versionId": "wsXjRa7l",
"version": "1.1.1",
"path": "mods/aerocopycats-1.1.1.jar",
"url": "https://cdn.modrinth.com/data/wjpmYU1u/versions/wsXjRa7l/aerocopycats-1.1.1.jar",
"sha1": "3a93862421d0a8cdae1e3a3d7f0d4bd01e049007",
"size": 14702,
"side": "both"
} }
], ],
"defaultServer": { "defaultServer": {
@@ -984,4 +1006,4 @@
}, },
"defaultShader": "ComplementaryReimagined_r5.7.1.zip", "defaultShader": "ComplementaryReimagined_r5.7.1.zip",
"panelUrl": "https://bns-admin.sijbers.uk" "panelUrl": "https://bns-admin.sijbers.uk"
} }