Compare commits

..

127 commits

Author SHA1 Message Date
Tristan Daniël Maat d56fad518b
git: Blame-ignore nixfmt commit 2024-08-18 20:41:58 +02:00
Tristan Daniël Maat 04f7a7ef1d
treewide: Use nixfmt for formatting 2024-08-18 20:41:20 +02:00
Tristan Daniël Maat 3a591863b0
flake.nix: Add default package to allow easily creating gc root 2024-08-18 18:53:33 +02:00
Tristan Daniël Maat 0ad265f6aa
pkgs/sources: Update package sources 2024-08-18 18:51:54 +02:00
Tristan Daniël Maat 521190297b
flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/0257e44f4ad472b54f19a6dd1615aee7fa48ed49' (2024-08-05)
  → 'github:nix-community/disko/276a0d055a720691912c6a34abb724e395c8e38a' (2024-08-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0ab9c4c1e0cab782fcde00ec2b32436abfd2a6d4' (2024-08-05)
  → 'github:nixos/nixpkgs/1cbd3d585263dc620c483e138d352a39b9f0e3ec' (2024-08-17)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/41d21a82c38e226e234e16f4ff213b3fcf85e6e9' (2024-08-05)
  → 'github:nixos/nixpkgs/abcef4da4ebb72240bddc370a27263627e64877f' (2024-08-18)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/eb34eb588132d653e4c4925d862f1e5a227cc2ab' (2024-07-27)
  → 'github:Mic92/sops-nix/be0eec2d27563590194a9206f551a6f73d52fa34' (2024-08-12)
2024-08-18 17:24:45 +02:00
Tristan Daniël Maat e1bd183cdd
pkgs: Update sources 2024-08-05 19:42:55 +02:00
Tristan Daniël Maat 0047b585a3
flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d185770ea261fb5cf81aa5ad1791b93a7834d12c' (2024-06-30)
  → 'github:nix-community/disko/0257e44f4ad472b54f19a6dd1615aee7fa48ed49' (2024-08-05)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/1176cc325e5e1d46c7a018663a8e02e699e838ec' (2024-06-28)
  → 'github:reckenrode/nix-foundryvtt/699a175398410688214615a9d977354e9ef98d2d' (2024-08-03)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/10c832d0548e9e3a6df7eb51e68c2783212a303e' (2024-07-01)
  → 'github:nixos/nixpkgs/0ab9c4c1e0cab782fcde00ec2b32436abfd2a6d4' (2024-08-05)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/7f993cdf26ccef564eabf31fdb40d140821e12bc' (2024-07-01)
  → 'github:nixos/nixpkgs/41d21a82c38e226e234e16f4ff213b3fcf85e6e9' (2024-08-05)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b5974d4331fb6c893e808977a2e1a6d34b3162d6' (2024-06-30)
  → 'github:Mic92/sops-nix/eb34eb588132d653e4c4925d862f1e5a227cc2ab' (2024-07-27)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/4a1e673523344f6ccc84b37f4413ad74ea19a119' (2024-06-29)
  → 'github:NixOS/nixpkgs/556533a23879fc7e5f98dd2e0b31a6911a213171' (2024-07-21)
2024-08-05 19:38:04 +02:00
Tristan Daniël Maat d426e783cd
grafana: Properly proxy websocket connections
Fixes #115
2024-07-03 02:56:23 +02:00
Tristan Daniël Maat 306b69f6b5
nextcloud: Use the system postgres version 2024-07-03 01:28:23 +02:00
Tristan Daniël Maat 21b9112f76
fail2ban-exporter: Bump generated source json/nix 2024-07-01 19:24:04 +02:00
Tristan Daniël Maat d568436d83
conduit: Use new upstream delegation support 2024-07-01 19:24:03 +02:00
Tristan Daniël Maat 222829d82a
starbound: Don't build service for now
This includes the really huge steam-run closure, which is just a PITA
to keep up with if we're never using it.
2024-07-01 19:24:03 +02:00
Tristan Daniël Maat 32f4cabfa3
nextcloud: Update to 28 since 27 is EOL
We were waiting for nextcloud news to update, but we can't wait any
longer.
2024-07-01 19:24:02 +02:00
Tristan Daniël Maat 21cb4eab9c
foundryvtt: Set foundry version explicitly 2024-07-01 18:37:43 +02:00
Tristan Daniël Maat 9654d599e9
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/88b3059b020da69cbe16526b8d639bd5e0b51c8b' (2024-04-01)
  → 'github:serokell/deploy-rs/3867348fa92bc892eba5d9ddb2d7a97b9e127a8a' (2024-06-12)
• Updated input 'disko':
    'github:nix-community/disko/285e26465a0bae510897ca04da26ce6307c652b4' (2024-04-26)
  → 'github:nix-community/disko/115311bc395f24c1b553338fec4b3aa28cbf5ae2' (2024-06-28)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/6025615b431170558c3c13f16b549fc0126425e1' (2024-04-09)
  → 'github:reckenrode/nix-foundryvtt/1176cc325e5e1d46c7a018663a8e02e699e838ec' (2024-06-28)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/cc54fb41d13736e92229c21627ea4f22199fee6b' (2024-06-12)
  → 'github:nixos/nixpkgs/89c49874fb15f4124bf71ca5f42a04f2ee5825fd' (2024-06-26)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/58a1abdbae3217ca6b702f03d3b35125d88a2994' (2024-04-27)
  → 'github:nixos/nixpkgs/2893f56de08021cffd9b6b6dfc70fd9ccd51eb60' (2024-06-24)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/2a824322dc6a755ffda83a13b948d42304521e4d' (2024-04-17)
  → 'github:berberman/nvfetcher/fa7609950023462c6f91c425de7610c0bb6b86ba' (2024-06-13)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f1b0adc27265274e3b0c9b872a8f476a098679bd' (2024-04-23)
  → 'github:Mic92/sops-nix/c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3' (2024-06-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/74574c38577914733b4f7a775dd77d24245081dd' (2024-04-20)
  → 'github:NixOS/nixpkgs/5e8e3b89adbd0be63192f6e645e0a54080004924' (2024-06-22)
2024-07-01 18:37:42 +02:00
Tristan Daniël Maat 038a797427
git: Blame-ignore nixpkgs-fmt commit 2024-06-28 20:19:42 +02:00
Tristan Daniël Maat fd138d45e6
treewide: Start using nixpkgs-fmt formatting 2024-06-28 20:12:55 +02:00
Tristan Daniël Maat 501c3466bc
Update to NixOS 24.05 2024-06-14 00:49:12 +02:00
Tristan Daniël Maat 0312fbad3a
afvalcalendar: Add proper error handling 2024-04-30 06:09:04 +02:00
Tristan Daniël Maat d8f1b9941e
nextcloud: Update apps 2024-04-29 09:46:11 +02:00
Tristan Daniël Maat 5ddd9914e4
flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/0a17298c0d96190ef3be729d594ba202b9c53beb' (2024-04-05)
  → 'github:nix-community/disko/285e26465a0bae510897ca04da26ce6307c652b4' (2024-04-26)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/0e61d84370fd051d873216553d09e596b7ad3a34' (2024-03-17)
  → 'github:reckenrode/nix-foundryvtt/6025615b431170558c3c13f16b549fc0126425e1' (2024-04-09)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06)
  → 'github:nixos/nixpkgs/12430e43bd9b81a6b4e79e64f87c624ade701eaf' (2024-04-28)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/ff0dbd94265ac470dda06a657d5fe49de93b4599' (2024-04-06)
  → 'github:nixos/nixpkgs/58a1abdbae3217ca6b702f03d3b35125d88a2994' (2024-04-27)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/1463db224a54cbc9499860ef5a51a9b6bf7c3180' (2024-04-08)
  → 'github:berberman/nvfetcher/2a824322dc6a755ffda83a13b948d42304521e4d' (2024-04-17)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/39191e8e6265b106c9a2ba0cfd3a4dafe98a31c6' (2024-04-07)
  → 'github:Mic92/sops-nix/f1b0adc27265274e3b0c9b872a8f476a098679bd' (2024-04-23)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06)
  → 'github:NixOS/nixpkgs/74574c38577914733b4f7a775dd77d24245081dd' (2024-04-20)
2024-04-29 09:20:14 +02:00
Tristan Daniël Maat e16f3be326
acme: Switch to a wildcard certificate 2024-04-16 01:25:59 +02:00
Tristan Daniël Maat 8f178f776e
afvalcalendar: Host enschede afvalcalendar 2024-04-15 03:14:46 +02:00
Tristan Daniël Maat 0d43b5177d
treewide: Refactor nginx config 2024-04-13 04:46:22 +02:00
Tristan Daniël Maat 7bb27d9bee
conduit: Switch to stable package since that has updated 2024-04-08 20:49:44 +02:00
Tristan Daniël Maat a6091b4133
pkgs: Update nextcloud extensions 2024-04-08 20:44:09 +02:00
Tristan Daniël Maat a243613e6a
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/0a0187794ac7f7a1e62cda3dabf8dc041f868790' (2024-02-16)
  → 'github:serokell/deploy-rs/88b3059b020da69cbe16526b8d639bd5e0b51c8b' (2024-04-01)
• Updated input 'disko':
    'github:nix-community/disko/5d2d3e421ade554b19b4dbb0d11a04023378a330' (2024-03-24)
  → 'github:nix-community/disko/0a17298c0d96190ef3be729d594ba202b9c53beb' (2024-04-05)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/56528ee42526794d413d6f244648aaee4a7b56c0' (2024-03-22)
  → 'github:nixos/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/44d0940ea560dee511026a53f0e2e2cde489b4d4' (2024-03-23)
  → 'github:nixos/nixpkgs/ff0dbd94265ac470dda06a657d5fe49de93b4599' (2024-04-06)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/c774baef4285ce5c72784f58dc565d48f41fd22d' (2024-03-24)
  → 'github:berberman/nvfetcher/1463db224a54cbc9499860ef5a51a9b6bf7c3180' (2024-04-08)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24)
  → 'github:Mic92/sops-nix/39191e8e6265b106c9a2ba0cfd3a4dafe98a31c6' (2024-04-07)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23)
  → 'github:NixOS/nixpkgs/e38d7cb66ea4f7a0eb6681920615dfcc30fc2920' (2024-04-06)
2024-04-08 20:14:41 +02:00
Tristan Daniël Maat 119db5e1d3
sonnenshift: Init 2024-04-08 20:02:53 +02:00
Tristan Daniël Maat 14785afa14
vm: Set up proper bridge networking 2024-03-27 01:51:15 +01:00
Tristan Daniël Maat d28979c61f
nvfetcher: Update package inputs 2024-03-25 01:18:45 +01:00
Tristan Daniël Maat e7d6879063
flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d389901567d9ceda5a1a833fbf8e8e254e18eb0a' (2024-03-11)
  → 'github:nix-community/disko/5d2d3e421ade554b19b4dbb0d11a04023378a330' (2024-03-24)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/5cf4e6d9ed7b662dbea7a61d785b67a878598986' (2024-03-03)
  → 'github:reckenrode/nix-foundryvtt/0e61d84370fd051d873216553d09e596b7ad3a34' (2024-03-17)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b94a96839afcc56de3551aa7472b8d9a3e77e05d' (2024-03-09)
  → 'github:nixos/nixpkgs/56528ee42526794d413d6f244648aaee4a7b56c0' (2024-03-22)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/3030f185ba6a4bf4f18b87f345f104e6a6961f34' (2024-03-09)
  → 'github:nixos/nixpkgs/44d0940ea560dee511026a53f0e2e2cde489b4d4' (2024-03-23)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/367e2eaa92d8f5133c2c5ac03a80c0cf25f301b8' (2024-02-25)
  → 'github:berberman/nvfetcher/c774baef4285ce5c72784f58dc565d48f41fd22d' (2024-03-24)
• Updated input 'nvfetcher/flake-utils':
    'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/6c32d3b9c7593f4b466ec5404e59fc09a803a090' (2024-03-14)
  → 'github:Mic92/sops-nix/405987a66cce9a4a82f321f11b205982a7127c88' (2024-03-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10)
  → 'github:NixOS/nixpkgs/ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68' (2024-03-23)
2024-03-25 01:10:31 +01:00
Tristan Daniël Maat c161eeb056
backups: Switch to hetzner storage box 2024-03-18 07:30:54 +01:00
Tristan Daniël Maat f43f8742d9
sops: Fix encryption 2024-03-18 05:05:43 +01:00
Tristan Daniël Maat cf02da0d00
acme: Back up SSL certificates 2024-03-12 06:07:26 +01:00
Tristan Daniël Maat fa73574dba
nginx: Factor nginx configuration into a separate module 2024-03-12 06:07:24 +01:00
Tristan Daniël Maat 329a6c4cf1
foundryvtt: Enable backups 2024-03-12 05:40:49 +01:00
Tristan Daniël Maat f8789ee4d0
foundryvtt: Mark as running behind a reverse proxy 2024-03-12 05:35:18 +01:00
Tristan Daniël Maat 07f819cc58
coturn: Fix outdated IP address 2024-03-11 21:56:41 +01:00
Tristan Daniël Maat 980122563e
nextcloud: Downgrade cookbook 2024-03-11 05:04:17 +01:00
Tristan Daniël Maat 7affed34f1
nextcloud: Remove unused variable 2024-03-11 04:51:25 +01:00
Tristan Daniël Maat aec7c5c7d8
vm: Change domain 2024-03-11 04:50:59 +01:00
Tristan Daniël Maat aaa9a164f7
flake: Fix vm run command path 2024-03-11 04:50:48 +01:00
Tristan Daniël Maat c44c9fd8e8
nextcloud: Update apps 2024-03-11 04:50:40 +01:00
Tristan Daniël Maat 1b66bf4910
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/b709d63debafce9f5645a5ba550c9e0983b3d1f7' (2023-12-20)
  → 'github:serokell/deploy-rs/0a0187794ac7f7a1e62cda3dabf8dc041f868790' (2024-02-16)
• Updated input 'disko':
    'github:nix-community/disko/bde7dd352c07d43bd5b8245e6c39074a391fdd46' (2024-03-01)
  → 'github:nix-community/disko/d389901567d9ceda5a1a833fbf8e8e254e18eb0a' (2024-03-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d02d818f22c777aa4e854efc3242ec451e5d462a' (2023-12-25)
  → 'github:nixos/nixpkgs/b94a96839afcc56de3551aa7472b8d9a3e77e05d' (2024-03-09)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/cfc3698c31b1fb9cdcf10f36c9643460264d0ca8' (2023-12-27)
  → 'github:nixos/nixpkgs/3030f185ba6a4bf4f18b87f345f104e6a6961f34' (2024-03-09)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/2bcf73dea96497ac9c36ed320b457caa705f9485' (2023-09-01)
  → 'github:berberman/nvfetcher/367e2eaa92d8f5133c2c5ac03a80c0cf25f301b8' (2024-02-25)
• Updated input 'nvfetcher/flake-compat':
    'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
  → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04)
• Updated input 'nvfetcher/flake-utils':
    'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
  → 'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/e523e89763ff45f0a6cf15bcb1092636b1da9ed3' (2023-12-24)
  → 'github:Mic92/sops-nix/f8d5c8baa83fe620a28c0db633be9db3e34474b4' (2024-03-10)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/7790e078f8979a9fcd543f9a47427eeaba38f268' (2023-12-23)
  → 'github:NixOS/nixpkgs/b17375d3bb7c79ffc52f3538028b2ec06eb79ef8' (2024-03-10)
2024-03-11 03:48:57 +01:00
Tristan Daniël Maat ae18832cb0
linode: Remove old server 2024-03-11 03:42:30 +01:00
Tristan Daniël Maat 1c6e7ec106
acme: Don't attempt to get certs if the domain is wrong 2024-03-11 03:42:29 +01:00
Tristan Daniël Maat ddda6f534b
hetzner: Add new server config 2024-03-11 03:42:28 +01:00
Tristan Daniël Maat 54e0826860
gitea: Migrate to forgejo 2024-03-11 00:33:41 +01:00
Tristan Daniël Maat ebc45a9af1
treewide: Upgrade to NixOS 23.11 2023-12-30 19:41:06 +01:00
Tristan Daniël Maat 4a966412b8
staging: Use a static ssh host key 2023-12-29 16:48:23 +01:00
Tristan Daniël Maat 95b5d4b3bd
nginx: Reduce number of rotated logs kept around 2023-12-15 17:04:42 +01:00
Tristan Daniël Maat eb3bd485c4
metrics: Add size limit to victoriametrics 2023-12-15 17:04:39 +01:00
Tristan Daniël Maat 759a9c7c0c
conduit: Fix acme issue
letsencrypt will prod on port 80 to verify the domain. `listen`
overrides `addSSL`, so none of the NixOS modules' setup will actually
work.

This means the conduit virtualhost never listened on port 80, and
couldn't verify letsencrypt requests.

How this *ever* worked is beyond me, but this commit resolves the
problems (don't worry, `forceSSL` does what it says on the tin and
overrides the `listen` again).
2023-10-13 06:08:26 +02:00
Tristan Daniël Maat 55a4aaf48b
metrics: Add metrics with victoriametrics + grafana 2023-10-12 20:41:04 +02:00
Tristan Daniël Maat 78a9eac9bb
sops: Sort secrets alphabetically 2023-10-12 20:27:43 +02:00
Tristan Daniël Maat 87dd9daa4f
backups: Add atomic backups with restic 2023-10-12 20:27:34 +02:00
Tristan Daniël Maat ab5e088016
conduit: Add Element X support 2023-09-18 04:17:16 +02:00
Tristan Daniël Maat 355ae4b70b
nextcloud: Update apps 2023-09-18 04:17:07 +02:00
Tristan Daniël Maat 01b0327ca0
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/724463b5a94daa810abfc64a4f87faef4e00f984' (2023-06-14)
  → 'github:serokell/deploy-rs/31c32fb2959103a796e07bbe47e0a5e287c343a8' (2023-09-12)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/440d3502d17c45d8dfeee5c1833d1ff03525a07b' (2023-07-06)
  → 'github:reckenrode/nix-foundryvtt/3358ccef0ea3e06faabe8c54761fb8a0862b80d4' (2023-08-10)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f3fbbc36b4e179a5985b9ab12624e9dfe7989341' (2023-07-26)
  → 'github:nixos/nixpkgs/5d017a8822e0907fb96f7700a319f9fe2434de02' (2023-09-17)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/ef99fa5c5ed624460217c31ac4271cfb5cb2502c' (2023-07-25)
  → 'github:nixos/nixpkgs/ace5093e36ab1e95cb9463863491bee90d5a4183' (2023-09-15)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/44196458acc2c28c32e456c50277d6148e71e708' (2023-06-22)
  → 'github:berberman/nvfetcher/2bcf73dea96497ac9c36ed320b457caa705f9485' (2023-09-01)
• Updated input 'nvfetcher/flake-utils':
    'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19)
  → 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/c36df4fe4bf4bb87759b1891cab21e7a05219500' (2023-07-24)
  → 'github:Mic92/sops-nix/ea208e55f8742fdcc0986b256bdfa8986f5e4415' (2023-09-12)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ce45b591975d070044ca24e3003c830d26fea1c8' (2023-07-22)
  → 'github:NixOS/nixpkgs/5601118d39ca9105f8e7b39d4c221d3388c0419d' (2023-09-02)
2023-09-17 21:25:14 +02:00
Tristan Daniël Maat bb3ffbbd90
nextcloud: Configure redis caching 2023-07-29 18:17:39 +02:00
Tristan Daniël Maat 0c5755d2f0
nextcloud: Upgrade to version 27 2023-07-29 18:17:24 +02:00
Tristan Daniël Maat 88d96f198b
nextcloud: Apply recommended PHP setting 2023-07-28 12:19:00 +02:00
Tristan Daniël Maat 6b1e5dee56
deploy: Allow substituters 2023-07-28 12:05:59 +02:00
Tristan Daniël Maat 5aa7686ab5
nextcloud: Update apps 2023-07-28 11:24:15 +02:00
Tristan Daniël Maat 828d3f3878
services: Update outdated options 2023-07-28 11:23:56 +02:00
Tristan Daniël Maat ecbf382d43
Update to NixOS 23.05 2023-07-28 11:23:35 +02:00
Tristan Daniël Maat 1e1f8f1e36
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/8c9ea9605eed20528bf60fae35a2b613b901fd77' (2023-01-19)
  → 'github:serokell/deploy-rs/724463b5a94daa810abfc64a4f87faef4e00f984' (2023-06-14)
• Updated input 'foundryvtt':
    'github:reckenrode/nix-foundryvtt/6c52bfc6824a3dba673df4894a71193ec32aa399' (2023-02-22)
  → 'github:reckenrode/nix-foundryvtt/440d3502d17c45d8dfeee5c1833d1ff03525a07b' (2023-07-06)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/f294325aed382b66c7a188482101b0f336d1d7db' (2023-04-16)
  → 'github:nixos/nixpkgs/ef99fa5c5ed624460217c31ac4271cfb5cb2502c' (2023-07-25)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/0a9ac5fd07b52467d81163b1f8c94c12e5c9aff9' (2023-01-06)
  → 'github:berberman/nvfetcher/44196458acc2c28c32e456c50277d6148e71e708' (2023-06-22)
• Updated input 'nvfetcher/flake-compat':
    'github:edolstra/flake-compat/009399224d5e398d03b22badca40a37ac85412a1' (2022-11-17)
  → 'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
• Updated input 'nvfetcher/flake-utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
  → 'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19)
• Added input 'nvfetcher/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/de6514f8fe1b3c2b57307569a0898bc4be9ae1c5' (2023-04-17)
  → 'github:Mic92/sops-nix/c36df4fe4bf4bb87759b1891cab21e7a05219500' (2023-07-24)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/1040ce5f652b586da95dfd80d48a745e107b9eac' (2023-04-16)
  → 'github:NixOS/nixpkgs/ce45b591975d070044ca24e3003c830d26fea1c8' (2023-07-22)
• Updated input 'tlaternet-webserver':
    'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=2ca66c4fe1b8cfdd5d873cadb2735cef555dacca' (2023-04-17)
  → 'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=c573a6f81827594ceeffbfa058659e2fc20e4a1e' (2023-06-13)
• Updated input 'tlaternet-webserver/dream2nix':
    'github:nix-community/dream2nix/34a80ab215f1f24068ea9c76f3a7e5bc19478653' (2023-04-04)
  → 'github:nix-community/dream2nix/0c064fa9dd025069cc215b0a8b4eb5ea734aceb0' (2023-06-06)
• Updated input 'tlaternet-webserver/dream2nix/crane':
    'github:ipetkov/crane/59b31b41a589c0a65e4a1f86b0e5eac68081468b' (2022-12-13)
  → 'github:ipetkov/crane/445a3d222947632b5593112bb817850e8a9cf737' (2023-04-11)
• Updated input 'tlaternet-webserver/dream2nix/drv-parts':
    'github:davhau/drv-parts/ced8a52f62b0a94244713df2225c05c85b416110' (2023-03-30)
  → 'github:davhau/drv-parts/e8c2ec1157dc1edb002989669a0dbd935f430201' (2023-04-05)
• Updated input 'tlaternet-webserver/fenix':
    'github:nix-community/fenix/0d8c0d08db5fe6e5d995f4584f991ad60bbb1673' (2023-04-17)
  → 'github:nix-community/fenix/6fbeedcd2fc1fba77152e13fd7492824d77a4060' (2023-06-13)
• Updated input 'tlaternet-webserver/fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/bab80dae445fd576cb4cc22ba208e9fbc39dc18d' (2023-04-16)
  → 'github:rust-lang/rust-analyzer/1f1fe81f0db301124b3026bd2940294526cdd852' (2023-06-12)
2023-07-28 11:03:25 +02:00
Tristan Daniël Maat a3e2d2931c
services: Add FoundryVTT service 2023-05-11 22:22:30 +01:00
Tristan Daniël Maat 14d29fa49d
services: Add wireguard service 2023-05-11 22:09:39 +01:00
Tristan Daniël Maat acd7cc802b
networking: Set up static IP address 2023-05-11 22:09:32 +01:00
Tristan Daniël Maat 317cdf0039
nextcloud: Update nextcloud apps 2023-04-17 23:35:28 +01:00
Tristan Daniël Maat 663054c293
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/8bd260eb578e3fea6bce158b24c93ab158d031e7' (2023-02-26)
  → 'github:nixos/nixpkgs/de66115c552acc4e0c0f92c5a5efb32e37dfa216' (2023-04-17)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/7f5639fa3b68054ca0b062866dc62b22c3f11505' (2023-02-26)
  → 'github:nixos/nixpkgs/f294325aed382b66c7a188482101b0f336d1d7db' (2023-04-16)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/83fe25c8019db8216f5c6ffc65b394707784b4f3' (2023-02-26)
  → 'github:Mic92/sops-nix/de6514f8fe1b3c2b57307569a0898bc4be9ae1c5' (2023-04-17)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/ea736343e4d4a052e023d54b23334cf685de479c' (2023-02-25)
  → 'github:NixOS/nixpkgs/1040ce5f652b586da95dfd80d48a745e107b9eac' (2023-04-16)
• Updated input 'tlaternet-webserver':
    'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=d142e98788c2476b7df0a5c1e621f3f5c65c130f' (2023-01-21)
  → 'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=2ca66c4fe1b8cfdd5d873cadb2735cef555dacca' (2023-04-17)
• Updated input 'tlaternet-webserver/dream2nix':
    'github:nix-community/dream2nix/9f6911c78dcb0832f7fcc955e847db1a5a9ce29a' (2023-01-02)
  → 'github:nix-community/dream2nix/34a80ab215f1f24068ea9c76f3a7e5bc19478653' (2023-04-04)
• Removed input 'tlaternet-webserver/dream2nix/alejandra'
• Removed input 'tlaternet-webserver/dream2nix/alejandra/fenix'
• Removed input 'tlaternet-webserver/dream2nix/alejandra/fenix/nixpkgs'
• Removed input 'tlaternet-webserver/dream2nix/alejandra/fenix/rust-analyzer-src'
• Removed input 'tlaternet-webserver/dream2nix/alejandra/flakeCompat'
• Removed input 'tlaternet-webserver/dream2nix/alejandra/nixpkgs'
• Added input 'tlaternet-webserver/dream2nix/drv-parts':
    'github:davhau/drv-parts/ced8a52f62b0a94244713df2225c05c85b416110' (2023-03-30)
• Added input 'tlaternet-webserver/dream2nix/drv-parts/flake-compat':
    follows 'tlaternet-webserver/dream2nix/flake-compat'
• Added input 'tlaternet-webserver/dream2nix/drv-parts/flake-parts':
    follows 'tlaternet-webserver/dream2nix/flake-parts'
• Added input 'tlaternet-webserver/dream2nix/drv-parts/nixpkgs':
    follows 'tlaternet-webserver/dream2nix/nixpkgs'
• Added input 'tlaternet-webserver/dream2nix/flake-compat':
    'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
• Updated input 'tlaternet-webserver/dream2nix/flake-parts':
    'github:hercules-ci/flake-parts/d591857e9d7dd9ddbfba0ea02b43b927c3c0f1fa' (2022-11-14)
  → 'github:hercules-ci/flake-parts/47478a4a003e745402acf63be7f9a092d51b83d7' (2023-02-09)
• Updated input 'tlaternet-webserver/dream2nix/flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/34c5293a71ffdb2fe054eb5288adc1882c1eb0b1?dir=lib' (2022-10-09)
  → follows 'tlaternet-webserver/dream2nix/nixpkgs'
• Added input 'tlaternet-webserver/dream2nix/nixpkgsV1':
    'github:NixOS/nixpkgs/5eb98948b66de29f899c7fe27ae112a47964baf8' (2023-03-11)
• Added input 'tlaternet-webserver/dream2nix/pruned-racket-catalog':
    'github:nix-community/pruned-racket-catalog/c8b89557fb53b36efa2ee48a769c7364df0f6262' (2023-01-01)
• Updated input 'tlaternet-webserver/fenix':
    'github:nix-community/fenix/eb6583fcd626051c4d284f2fb51cd2659a43e7f6' (2023-01-04)
  → 'github:nix-community/fenix/0d8c0d08db5fe6e5d995f4584f991ad60bbb1673' (2023-04-17)
• Updated input 'tlaternet-webserver/fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/a97c71f92d574cb5104e3e1246eb9038d1a214a2' (2023-01-03)
  → 'github:rust-lang/rust-analyzer/bab80dae445fd576cb4cc22ba208e9fbc39dc18d' (2023-04-16)
2023-04-17 21:07:31 +01:00
Tristan Daniël Maat 8f4399c1dd
nextcloud: Update apps 2023-02-28 04:53:27 +00:00
Tristan Daniël Maat 8ac5fa9357
flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/a5619f5660a00f58c2b7c16d89058e92327ac9b8' (2022-12-29)
  → 'github:serokell/deploy-rs/8c9ea9605eed20528bf60fae35a2b613b901fd77' (2023-01-19)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/54644f409ab471e87014bb305eac8c50190bcf48' (2023-01-10)
  → 'github:nixos/nixpkgs/8bd260eb578e3fea6bce158b24c93ab158d031e7' (2023-02-26)
• Updated input 'nixpkgs-unstable':
    'github:nixos/nixpkgs/b1f87ca164a9684404c8829b851c3586c4d9f089' (2023-02-25)
  → 'github:nixos/nixpkgs/7f5639fa3b68054ca0b062866dc62b22c3f11505' (2023-02-26)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/2253120d2a6147e57bafb5c689e086221df8032f' (2023-01-08)
  → 'github:Mic92/sops-nix/83fe25c8019db8216f5c6ffc65b394707784b4f3' (2023-02-26)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/9f11a2df77cb945c115ae2a65f53f38121597d73' (2023-01-07)
  → 'github:NixOS/nixpkgs/ea736343e4d4a052e023d54b23334cf685de479c' (2023-02-25)
• Updated input 'tlaternet-webserver':
    'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=b2894e4fefbdc1c9964ab47c931497a417562d8a' (2023-01-05)
  → 'git+https://gitea.tlater.net/tlaternet/tlaternet.git?ref=refs%2fheads%2fmaster&rev=d142e98788c2476b7df0a5c1e621f3f5c65c130f' (2023-01-21)
2023-02-28 04:38:41 +00:00
Tristan Daniël Maat 74f38614a0
matrix: Add heisenbridge 2023-02-28 04:26:55 +00:00
Tristan Daniël Maat 33ec32a8da
conduit: Update to 0.5.0 2023-02-26 05:59:54 +00:00
Tristan Daniël Maat bb397841ee
refactoring: Use flake-inputs instead of awkwardly passing through 2023-02-26 05:59:09 +00:00
Tristan Daniël Maat b7feffc52f
hardware-configuration: Update to new auto-generated settings 2023-01-11 02:38:58 +00:00
Tristan Daniël Maat b7726af1c4
config: Make changes suggested post 22.11 update 2023-01-11 02:38:56 +00:00
Tristan Daniël Maat 957ab110c5
firewall: Open Minecraft ports for port forwarding 2023-01-11 02:38:53 +00:00
Tristan Daniël Maat f6e39e09a5
gitea: Update configuration for 22.11 2023-01-11 02:38:50 +00:00
Tristan Daniël Maat 77ddb15f22
flake.nix: Build the VM using nix build 2023-01-11 02:38:47 +00:00
Tristan Daniël Maat 544bd0a721
keys/staging: Add a few missing keys that made the vm break 2023-01-11 02:38:45 +00:00
Tristan Daniël Maat b798efb2c0
nextcloud: Update the service and apps for 22.11 2023-01-11 02:38:42 +00:00
Tristan Daniël Maat 411e075ef1
flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a9eedea7232f5d00f0aca7267efb69a54da1b8a1' (2023-01-03)
  → 'github:nixos/nixpkgs/54644f409ab471e87014bb305eac8c50190bcf48' (2023-01-10)
• Updated input 'nvfetcher':
    'github:berberman/nvfetcher/294826951113dcd3aa9abbcacfb1aa5b95a19116' (2022-11-05)
  → 'github:berberman/nvfetcher/0a9ac5fd07b52467d81163b1f8c94c12e5c9aff9' (2023-01-06)
• Updated input 'nvfetcher/flake-compat':
    'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19)
  → 'github:edolstra/flake-compat/009399224d5e398d03b22badca40a37ac85412a1' (2022-11-17)
• Updated input 'nvfetcher/flake-utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/b35586cc5abacd4eba9ead138b53e2a60920f781' (2023-01-01)
  → 'github:Mic92/sops-nix/2253120d2a6147e57bafb5c689e086221df8032f' (2023-01-08)
• Updated input 'sops-nix/nixpkgs-stable':
    'github:NixOS/nixpkgs/feda52be1d59f13b9aa02f064b4f14784b9a06c8' (2022-12-31)
  → 'github:NixOS/nixpkgs/9f11a2df77cb945c115ae2a65f53f38121597d73' (2023-01-07)
2023-01-11 02:38:39 +00:00
Tristan Daniël Maat 19576ffb1e
matrix-conduit: Stop using the version from unstable 2023-01-11 02:21:39 +00:00
Tristan Daniël Maat 7a2b862235
keys: Remove obsolete key file 2022-11-05 22:27:31 +00:00
Tristan Daniël Maat a28d385b17
conduit: Enable TURNS with a ZeroSSL-provided certificate 2022-11-05 22:26:52 +00:00
Tristan Daniël Maat 997707021b
config: Enable authorization through ssh agent
This enables sudo-via-yubikey and therefore makes `-t` obsolete, in
turn fixing a whole sleuth of issues with deploy-rs.

*And* seems more secure and convenient at the same time.
2022-11-05 18:01:07 +00:00
Tristan Daniël Maat 0528f73187
nginx: Remove mitigation for openssl CVE
This has been fixed, instead we just update to the latest openssl.
2022-11-05 17:33:28 +00:00
Tristan Daniël Maat 4d5eaf34be
Update inputs 2022-11-05 17:31:58 +00:00
Tristan Daniël Maat 85a989d3c8
nvfetcher: Don't allow fetching rc versions of nextcloud cookbook 2022-11-05 17:31:24 +00:00
Tristan Daniël Maat 598c439002
conduit: Disable turns, remove the user limits and add all relay IPs 2022-11-05 17:10:39 +00:00
Tristan Daniël Maat ea06138a9b
flake.nix: Add packages for utility scripts to enable nix build 2022-11-05 16:00:50 +00:00
Tristan Daniël Maat 2304711359
config: Mitigate upcoming SSL CVE
See
https://mta.openssl.org/pipermail/openssl-announce/2022-October/000238.html

As 1.1 is unaffected, this override should be sufficient to evade this
problem.
2022-10-31 16:07:41 +00:00
Tristan Daniël Maat 73023b817d
conduit: Use dependencies from stable
Partially to circumvent the upcoming openssl CVE, partially to reduce
the number of dependencies.
2022-10-31 16:06:31 +00:00
Tristan Daniël Maat b3e8b0e85c
default.nix: Turn on minimal profile 2022-10-30 18:26:45 +00:00
Tristan Daniël Maat 5c89aa5b83
Update 2022-10-30 17:13:15 +00:00
Tristan Daniël Maat c72953e1ef
matrix: Add coturn support for calls 2022-10-29 01:39:09 +01:00
Tristan Daniël Maat 7fb5aac33e
nextcloud: Fix nextcloud app download links 2022-10-23 23:45:44 +01:00
Tristan Daniël Maat c56de6cf7e
conduit: Add new conduit service 2022-10-22 21:22:55 +01:00
Tristan Daniël Maat 3e13b575b0
flake.nix: Clean up devshell 2022-10-22 20:01:56 +01:00
Tristan Daniël Maat bec05bafb1
README.md: Update to new and improved flake mechanisms 2022-10-17 14:29:56 +01:00
Tristan Daniël Maat 59a44261b8
flake.nix: Move vm out of nixosConfigurations so that checks work 2022-10-17 14:23:52 +01:00
Tristan Daniël Maat 61d3008bc3
nextcloud: Fetch apps using nvfetcher 2022-10-17 11:00:02 +01:00
Tristan Daniël Maat c4fa991b62
treewide: Add fail2ban 2022-10-14 06:27:11 +01:00
Tristan Daniël Maat 325e8a0ea1
flake.nix: Add deploy-rs for deployment management 2022-10-14 05:59:59 +01:00
Tristan Daniël Maat 1ddf23bd01
nextcloud: Update nextcloud version 2022-10-14 05:58:18 +01:00
Tristan Daniël Maat 78ecfd63a1
starbound: Fix post-update issues 2022-10-14 05:58:15 +01:00
Tristan Daniël Maat e8b16459d9
treewide: Refactor in order to clean up flake.nix 2022-10-14 05:58:13 +01:00
Tristan Daniël Maat 068e6d5d77
webserver: Use a hardened systemd unit instead of a container 2022-10-14 05:58:11 +01:00
Tristan Daniël Maat b6594cea54
gitea: Use a hardened systemd unit instead of a container 2022-10-14 05:58:08 +01:00
Tristan Daniël Maat 3cedb9f978
nextcloud: Use a hardened systemd unit instead of a container 2022-10-14 05:58:05 +01:00
Tristan Daniël Maat 6a81ce4c1d
sops: Improve secrets provisioning to split out staging 2022-10-12 23:22:50 +01:00
Tristan Daniël Maat ab3aa19481
treewide: Perform another nitpicking sweep 2022-10-12 23:22:42 +01:00
Tristan Daniël Maat dea9032530
flake.nix: Add app to start VM through nix run 2022-10-12 13:16:46 +01:00
Tristan Daniël Maat e512e73b5e
flake.nix: Clean up and refactor 2022-10-12 13:12:28 +01:00
Tristan Daniël Maat 7095ab2631
treewide: Remove minecraft server
This has fallen into disuse since the big Java vulnerability, and I
have ideas for better ways of doing this. Meanwhile it's making
maintenance and refactoring more difficult.

Hence I'll remove the server completely for the time being.
2022-10-12 13:12:04 +01:00
Tristan Daniël Maat 046a88905d
treewide: Reformat project with alejandra 2022-10-10 13:03:18 +01:00
Tristan Daniël Maat 58e52dd119
ssh: Allow proxy connections with gatewayPorts 2022-10-10 13:01:26 +01:00
Tristan Daniël Maat ed74cfa576
starbound: Fix permissions for a syscall steamcmd needs 2022-04-23 09:31:21 +01:00
Tristan Daniël Maat cd92ec64c2
Add starbound server 2022-04-23 08:47:13 +01:00
Tristan Daniël Maat e7102adec1
Add sops-nix 2022-04-23 08:47:07 +01:00
Tristan Daniël Maat 73988df2a6
flake.lock: Update
Flake lock file changes:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/3cecb5b042f7f209c56ffd8371b2711a290ec797' (2022-02-07)
  → 'github:numtide/flake-utils/a4b154ebbdc88c8498a5c7b01589addc9e9cb678' (2022-04-11)
• Updated input 'nixos-hardware':
    'github:nixos/nixos-hardware/9886a06e4745edb31587d0e9481ad82d35f0d593' (2022-02-04)
  → 'github:nixos/nixos-hardware/6b4ebea9093c997c5f275c820e679108de4871ab' (2022-04-21)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/521e4d7d13b09bc0a21976b9d19abd197d4e3b1e' (2022-02-07)
  → 'github:nixos/nixpkgs/9887f024766aa27704d1f89f623efd1d063da92a' (2022-04-21)
2022-04-21 18:21:53 +01:00
Tristan Daniël Maat 34235a2041
flake: Fix python language server version 2022-04-21 18:20:06 +01:00
Tristan Daniël Maat 1721785d1c
Update forge server sha 2022-02-10 22:54:30 +00:00
Tristan Daniël Maat 4ef17ed1a2
flake.lock: Update
Flake lock file changes:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/74f7e4319258e287b0f9cb95426c9853b282730b' (2021-11-28)
  → 'github:numtide/flake-utils/3cecb5b042f7f209c56ffd8371b2711a290ec797' (2022-02-07)
• Updated input 'nixos-hardware':
    'github:nixos/nixos-hardware/2a7063461c3751d83869a2a0a8ebc59e34bec5b2' (2021-12-11)
  → 'github:nixos/nixos-hardware/9886a06e4745edb31587d0e9481ad82d35f0d593' (2022-02-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/573095944e7c1d58d30fc679c81af63668b54056' (2021-12-10)
  → 'github:nixos/nixpkgs/521e4d7d13b09bc0a21976b9d19abd197d4e3b1e' (2022-02-07)
2022-02-10 22:17:37 +00:00
268 changed files with 5065 additions and 18773 deletions

11
.git-blame-ignore-revs Normal file
View file

@ -0,0 +1,11 @@
# Run this command to always ignore formatting commits in `git blame`
# git config blame.ignoreRevsFile .git-blame-ignore-revs
# Switch to nixfmt formatting
04f7a7ef1d38906163afc9cddfa8ce2b0ebf3b45
# Switch to nixpkgs-fmt formatting
fd138d45e6a2cad89fead6e9f246ba282070d6b7
# Switch to alejandra formatting
046a88905ddfa7f9edc3291c310dbb985dee34f9

2
.gitignore vendored
View file

@ -1,2 +1,2 @@
/result /result
/tlaternet.qcow2 *.qcow2

View file

@ -1,7 +1,18 @@
keys: keys:
- &tlater 535B61015823443941C744DD12264F6BBDFABA89 - &tlater 535B61015823443941C744DD12264F6BBDFABA89
- &server_tlaternet 8a3737d48f1035fe6c3a0a8fd6a1976ca74c7f3b
- &server_hetzner1 0af7641adb8aa843136cf6d047f71da3e5ad79f9
- &server_staging 2f5caa73e7ceea4fcc8d2881fde587e6737d2dbc
creation_rules: creation_rules:
- key_groups: - path_regex: keys/production.yaml
key_groups:
- pgp: - pgp:
- *tlater - *tlater
- *server_tlaternet
- *server_hetzner1
- path_regex: keys/staging.yaml
key_groups:
- pgp:
- *tlater
- *server_staging

View file

@ -4,21 +4,16 @@ This is the NixOS configuration for [tlater.net](https://tlater.net/).
## Testing ## Testing
### Building Run a test VM with:
Build the VM with:
``` ```
nixos-rebuild build-vm --flake '.#vm' nix run
``` ```
### Running ### Running
*Note: M-2 will bring up a console for poweroff and such* *Note: M-2 will bring up a console for poweroff and such*
Running should *mostly* be as simple as running the command the build
script echos.
One caveat: create a larger disk image first. This can be done by One caveat: create a larger disk image first. This can be done by
running the following in the repository root: running the following in the repository root:
@ -26,31 +21,11 @@ running the following in the repository root:
qemu-img create -f qcow2 ./tlaternet.qcow2 20G qemu-img create -f qcow2 ./tlaternet.qcow2 20G
``` ```
Everything else should be handled by the devShell.
### New services
Whenever a new service is added, append an appropriate
`,hostfwd=::3<port>:<port>` to the `QEMU_NET_OPTS` specified in
`flake.nix` to bind the service to a host port.
There is no way to test this without binding to the host port, sadly.
## Deploying ## Deploying
Currently the deployment process is fully manual because there is no Deployment is handled using
CI system. [deploy-rs](https://github.com/serokell/deploy-rs):
Nix makes this fairly painless, though, it's simply:
```bash
nixos-rebuild switch --use-remote-sudo --target-host tlater.net --build-host localhost --flake .#tlaternet
``` ```
deploy .#
This has the added benefit of running the build on the dev machine, ```
which is 99% of the time much faster at building than the target
(though artifact upload may take some time on slow connections).
Note that this also requires the current local user to also be present
on the target host, as well as for this user to be in the target
host's wheel group. See `nix.trustedUsers`.

View file

@ -1,118 +1,147 @@
{ config, pkgs, lib, ... }: {
config,
let inherit (lib.attrsets) mapAttrs; pkgs,
lib,
in { modulesPath,
flake-inputs,
...
}:
{
imports = [ imports = [
flake-inputs.disko.nixosModules.disko
flake-inputs.sops-nix.nixosModules.sops
flake-inputs.tlaternet-webserver.nixosModules.default
"${modulesPath}/profiles/minimal.nix"
(import ../modules)
./services/afvalcalendar.nix
./services/backups.nix
./services/battery-manager.nix
./services/conduit.nix
./services/fail2ban.nix
./services/foundryvtt.nix
./services/gitea.nix ./services/gitea.nix
./services/minecraft.nix ./services/metrics
./services/monitoring.nix
./services/nextcloud.nix ./services/nextcloud.nix
./services/webserver.nix ./services/webserver.nix
./ids.nix ./services/wireguard.nix
# ./services/starbound.nix -- Not currently used
./services/postgres.nix
./nginx.nix
./sops.nix
];
nixpkgs.overlays = [
(final: prev: {
local = import ../pkgs {
pkgs = prev;
lib = prev.lib;
};
})
]; ];
nix = { nix = {
# Enable flakes
package = pkgs.nixFlakes; package = pkgs.nixFlakes;
extraOptions = '' extraOptions = ''
experimental-features = nix-command flakes experimental-features = nix-command flakes
''; '';
# Enable remote builds from tlater # Enable remote builds from tlater
trustedUsers = [ "@wheel" ]; settings.trusted-users = [ "@wheel" ];
}; };
boot.kernelParams = [ "highres=off" "nohz=off" ]; # Optimization for minecraft servers, see:
# https://bugs.mojang.com/browse/MC-183518
boot.kernelParams = [
"highres=off"
"nohz=off"
];
networking = { networking = {
hostName = "tlaternet";
usePredictableInterfaceNames = false; usePredictableInterfaceNames = false;
useDHCP = false; useDHCP = false;
interfaces.eth0.useDHCP = true;
firewall.allowedTCPPorts = [ 80 443 2222 2221 25565 ]; firewall = {
allowedTCPPorts = [
# http
80
443
# ssh
2222
# matrix
8448
# starbound
21025
# Minecraft
25565
config.services.coturn.listening-port
config.services.coturn.tls-listening-port
config.services.coturn.alt-listening-port
config.services.coturn.alt-tls-listening-port
];
allowedUDPPorts = [
# More minecraft
25565
config.services.coturn.listening-port
config.services.coturn.tls-listening-port
config.services.coturn.alt-listening-port
config.services.coturn.alt-tls-listening-port
];
allowedUDPPortRanges = [
{
from = config.services.coturn.min-port;
to = config.services.coturn.max-port;
}
];
};
}; };
systemd.network.enable = true;
time.timeZone = "Europe/London"; time.timeZone = "Europe/London";
sops = {
gnupg = {
home = "/var/lib/sops";
sshKeyPaths = [ ];
};
defaultSopsFile = "/etc/sops/secrets.yaml";
validateSopsFiles = false;
};
users.users.tlater = { users.users.tlater = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; extraGroups = [ "wheel" ];
openssh.authorizedKeys.keyFiles = [ ../keys/tlater.pub ]; openssh.authorizedKeys.keyFiles = [ ../keys/tlater.pub ];
}; };
services.openssh = { services = {
enable = true; openssh = {
allowSFTP = false; enable = true;
passwordAuthentication = false; allowSFTP = false;
permitRootLogin = "no"; ports = [ 2222 ];
ports = [ 2222 ]; startWhenNeeded = true;
startWhenNeeded = true;
settings = {
GatewayPorts = "yes";
PermitRootLogin = "no";
PasswordAuthentication = false;
};
};
logrotate.enable = true;
}; };
services.nginx = { security = {
enable = true; sudo.execWheelOnly = true;
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
clientMaxBodySize = "10G";
domain = "tlater.net";
commonHttpConfig = ''
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referrer" "$http_user_agent" '
'$upstream_response_time $request_length $request_time';
access_log /var/log/nginx/access.log custom;
'';
virtualHosts = let pam = {
host = port: extra: sshAgentAuth = {
lib.recursiveUpdate { enable = true;
forceSSL = true; authorizedKeysFiles = [ "/etc/ssh/authorized_keys.d/%u" ];
enableACME = true; };
locations."/".proxyPass = "http://127.0.0.1:${toString port}"; services.sudo.sshAgentAuth = true;
extraConfig = ''
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
'';
} extra;
domain = config.services.nginx.domain;
in {
"${domain}" = host 3002 { serverAliases = [ "www.${domain}" ]; };
"gitea.${domain}" = host 3000 { };
"nextcloud.${domain}" = host 3001 { };
"grafana.${domain}" = host 3003 { };
}; };
}; };
# Allow nginxlog group users to read the nginx log # Remove some unneeded packages
users.groups.nginxlog.gid = null; environment.defaultPackages = [ ];
systemd.services.nginx.serviceConfig = {
SupplementaryGroups = [ "nginxlog" ];
LogsDirectoryMode = lib.mkOverride 99 "0751";
ExecStartPost = [
"+${pkgs.coreutils}/bin/chown nginx:nginxlog \${LOGS_DIRECTORY}/access.log \${LOGS_DIRECTORY}/error.log"
];
};
security.acme = {
email = "tm@tlater.net";
acceptTerms = true;
};
virtualisation.oci-containers.backend = "podman";
system.stateVersion = "20.09"; system.stateVersion = "20.09";
} }

View file

@ -1,31 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "virtio_pci" "ahci" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e541bdc3-79d6-459f-9169-92b13b0a8959";
fsType = "ext4";
};
fileSystems."/var" =
{ device = "/dev/disk/by-uuid/79f8fbbd-476d-4e1a-9675-a8474d98f42f";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/45c8ad29-3861-4e68-a566-47e6d9269dca"; }
];
nix.maxJobs = lib.mkDefault 2;
}

View file

@ -0,0 +1,45 @@
{
imports = [
./hardware-configuration.nix
./disko.nix
];
# Intel's special encrypted memory<->CPU feature. Hetzner's BIOS
# disables it by default.
#
# TODO(tlater): See if would be useful for anything?
boot.kernelParams = [ "nosgx" ];
networking.hostName = "hetzner-1";
services.nginx.domain = "tlater.net";
systemd.network.networks."eth0" = {
matchConfig.MACAddress = "90:1b:0e:c1:8c:62";
addresses = [
# IPv4
{
addressConfig = {
Address = "116.202.158.55/32";
Peer = "116.202.158.1/32"; # Gateway
};
}
# IPv6
{ addressConfig.Address = "2a01:4f8:10b:3c85::2/64"; }
];
networkConfig = {
Gateway = [
"116.202.158.1"
"fe80::1"
];
DNS = [
"185.12.64.1"
"185.12.64.2"
"2a01:4ff:ff00::add:1"
"2a01:4ff:ff00::add:2"
];
};
};
}

View file

@ -0,0 +1,95 @@
{
disko.devices.disk =
let
bootPartition = {
size = "1M";
type = "EF02";
};
swapPartition = {
# 8G is apparently recommended for this much RAM, but we set up
# 4G on both disks for mirroring purposes.
#
# That'll still be 8G during normal operation, and it's probably
# not too bad to have slightly less swap if a disk dies.
size = "4G";
content = {
type = "swap";
randomEncryption = true;
};
};
mountOptions = [
"compress=zstd"
"noatime"
];
in
{
sda = {
type = "disk";
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
boot = bootPartition;
swap = swapPartition;
disk1 = {
size = "100%";
# Empty partition to combine in RAID0 with the other disk
};
};
};
};
sdb = {
type = "disk";
device = "/dev/sdb";
content = {
type = "gpt";
partitions = {
boot = bootPartition;
swap = swapPartition;
disk2 = {
size = "100%";
content = {
type = "btrfs";
# Hack to get multi-device btrfs going
# See https://github.com/nix-community/disko/issues/99
extraArgs = [
"-d"
"raid1"
"-m"
"raid1"
"--runtime-features"
"quota"
"/dev/sda3"
];
subvolumes = {
"/volume" = { };
"/volume/root" = {
inherit mountOptions;
mountpoint = "/";
};
"/volume/home" = {
inherit mountOptions;
mountpoint = "/home";
};
"/volume/var" = {
inherit mountOptions;
mountpoint = "/var";
};
"/volume/nix-store" = {
inherit mountOptions;
mountpoint = "/nix";
};
"/snapshots" = { };
};
};
};
};
};
};
};
}

View file

@ -0,0 +1,25 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,53 @@
{ lib, ... }:
{
users.users.tlater.password = "insecure";
# Disable graphical tty so -curses works
boot.kernelParams = [ "nomodeset" ];
networking.hostName = "testvm";
# Sets the base domain for nginx to a local domain so that we can
# easily test locally with the VM.
services.nginx.domain = "dev.local";
# Use the staging secrets
sops.defaultSopsFile = lib.mkOverride 99 ../../keys/staging.yaml;
systemd.network.networks."10-eth0" = {
matchConfig.Name = "eth0";
networkConfig = {
Address = "192.168.9.2/24";
};
};
# Both so we have a predictable key for the staging env, as well as
# to have a static key for decrypting the sops secrets for the
# staging env.
environment.etc."staging.key" = {
mode = "0400";
source = ../../keys/hosts/staging.key;
};
services.openssh.hostKeys = lib.mkForce [
{
type = "rsa";
bits = 4096;
path = "/etc/staging.key";
}
];
virtualisation.vmVariant = {
virtualisation = {
memorySize = 3941;
cores = 2;
graphics = false;
};
virtualisation.qemu = {
networkingOptions = lib.mkForce [
"-device virtio-net,netdev=n1"
"-netdev bridge,id=n1,br=br0,helper=$(which qemu-bridge-helper)"
];
};
};
}

View file

@ -1,15 +0,0 @@
{ ... }:
{
ids.uids = {
# System user ids start at 400 (see nixos/modules/programs/shadow.nix)
webserver = 400;
minecraft = 401;
# The limit is 999
};
ids.gids = {
webserver = 400;
minecraft = 401;
};
}

View file

@ -1,20 +0,0 @@
{ config, lib, pkgs, ... }:
{
# Required for the lish console
boot.kernelParams = [ "console=ttyS0,19200n8" ];
boot.loader = {
# Timeout to allow lish to connect
timeout = 10;
grub = {
device = "nodev";
extraConfig = ''
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
terminal_input serial;
terminal_output serial;
'';
};
};
}

63
configuration/nginx.nix Normal file
View file

@ -0,0 +1,63 @@
{ config, lib, ... }:
{
services.nginx = {
enable = true;
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
clientMaxBodySize = "10G";
statusPage = true; # For metrics, should be accessible only from localhost
commonHttpConfig = ''
log_format upstream_time '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'rt=$request_time uct="$upstream_connect_time" '
'uht="$upstream_header_time" urt="$upstream_response_time"';
'';
};
services.logrotate.settings =
{
# Override the default, just keep fewer logs
nginx.rotate = 6;
}
// lib.mapAttrs' (
virtualHost: _:
lib.nameValuePair "/var/log/nginx/${virtualHost}/access.log" {
frequency = "daily";
rotate = 2;
compress = true;
delaycompress = true;
su = "${config.services.nginx.user} ${config.services.nginx.group}";
postrotate = "[ ! -f /var/run/nginx/nginx.pid ] || kill -USR1 `cat /var/run/nginx/nginx.pid`";
}
) config.services.nginx.virtualHosts;
systemd.tmpfiles.rules = lib.mapAttrsToList (
virtualHost: _:
#
"d /var/log/nginx/${virtualHost} 0750 ${config.services.nginx.user} ${config.services.nginx.group}"
) config.services.nginx.virtualHosts;
security.acme = {
defaults.email = "tm@tlater.net";
acceptTerms = true;
certs."tlater.net" = {
extraDomainNames = [ "*.tlater.net" ];
dnsProvider = "hetzner";
group = "nginx";
credentialFiles."HETZNER_API_KEY_FILE" = config.sops.secrets."hetzner-api".path;
};
};
services.backups.acme = {
user = "acme";
paths = lib.mapAttrsToList (
virtualHost: _: "/var/lib/acme/${virtualHost}"
) config.services.nginx.virtualHosts;
};
}

View file

@ -0,0 +1,71 @@
{ pkgs, config, ... }:
{
systemd.services.afvalcalendar = {
description = "Enschede afvalcalendar -> ical converter";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
script = ''
${pkgs.local.afvalcalendar}/bin/afvalcalendar > /srv/afvalcalendar/afvalcalendar.ical
'';
startAt = "daily";
serviceConfig = {
DynamicUser = true;
ProtectHome = true; # Override the default (read-only)
PrivateDevices = true;
PrivateIPC = true;
PrivateUsers = true;
ProtectHostname = true;
ProtectClock = true;
ProtectKernelTunables = true;
ProtectKernelModules = true;
ProtectKernelLogs = true;
ProtectControlGroups = true;
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@privileged @resources @setuid @keyring"
];
Umask = 2;
SupplementaryGroups = "afvalcalendar-hosting";
ReadWritePaths = "/srv/afvalcalendar";
};
};
services.nginx.virtualHosts."afvalcalendar.${config.services.nginx.domain}" = {
forceSSL = true;
useACMEHost = "tlater.net";
enableHSTS = true;
root = "/srv/afvalcalendar";
};
users.groups.afvalcalendar-hosting = { };
systemd.tmpfiles.settings."10-afvalcalendar" = {
"/srv/afvalcalendar".d = {
user = "nginx";
group = "afvalcalendar-hosting";
mode = "0775";
};
"/srv/afvalcalendar/afvalcalendar.ical".f = {
user = "nginx";
group = "afvalcalendar-hosting";
mode = "0775";
};
};
}

View file

@ -0,0 +1,271 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (lib) types optional singleton;
mkShutdownScript =
service:
pkgs.writeShellScript "backup-${service}-shutdown" ''
if systemctl is-active --quiet '${service}'; then
touch '/tmp/${service}-was-active'
systemctl stop '${service}'
fi
'';
mkRestartScript =
service:
pkgs.writeShellScript "backup-${service}-restart" ''
if [ -f '/tmp/${service}-was-active' ]; then
rm '/tmp/${service}-was-active'
systemctl start '${service}'
fi
'';
writeScript =
name: packages: text:
lib.getExe (
pkgs.writeShellApplication {
inherit name text;
runtimeInputs = packages;
}
);
# *NOT* a TOML file, for some reason quotes are interpreted
# *literally
rcloneConfig = pkgs.writeText "rclone.conf" ''
[storagebox]
type = sftp
user = u395933
host = u395933.your-storagebox.de
port = 23
key_file = ${config.sops.secrets."restic/storagebox-ssh-key".path}
shell_type = unix
'';
resticEnv = {
RESTIC_PASSWORD_FILE = config.sops.secrets."restic/storagebox-backups".path;
RESTIC_REPOSITORY = "rclone:storagebox:backups";
RCLONE_CONFIG = rcloneConfig;
};
in
{
options = {
services.backups = lib.mkOption {
description = lib.mdDoc ''
Configure restic backups with a specific tag.
'';
type = types.attrsOf (
types.submodule (
{ config, name, ... }:
{
options = {
user = lib.mkOption {
type = types.str;
description = ''
The user as which to run the backup.
'';
};
paths = lib.mkOption {
type = types.listOf types.str;
description = ''
The paths to back up.
'';
};
tag = lib.mkOption {
type = types.str;
description = ''
The restic tag to mark the backup with.
'';
default = name;
};
preparation = {
packages = lib.mkOption {
type = types.listOf types.package;
default = [ ];
description = ''
The list of packages to make available in the
preparation script.
'';
};
text = lib.mkOption {
type = types.nullOr types.str;
default = null;
description = ''
The preparation script to run before the backup.
This should include things like database dumps and
enabling maintenance modes. If a service needs to be
shut down for backups, use `pauseServices` instead.
'';
};
};
cleanup = {
packages = lib.mkOption {
type = types.listOf types.package;
default = [ ];
description = ''
The list of packages to make available in the
cleanup script.
'';
};
text = lib.mkOption {
type = types.nullOr types.str;
default = null;
description = ''
The cleanup script to run after the backup.
This should do things like cleaning up database dumps
and disabling maintenance modes.
'';
};
};
pauseServices = lib.mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
The systemd services that need to be shut down before
the backup can run. Services will be restarted after the
backup is complete.
This is intended to be used for services that do not
support hot backups.
'';
};
};
}
)
);
};
};
config = lib.mkIf (config.services.backups != { }) {
systemd.services =
{
restic-prune = {
# Doesn't hurt to finish the ongoing prune
restartIfChanged = false;
environment = resticEnv;
path = with pkgs; [
openssh
rclone
restic
];
script = ''
# TODO(tlater): In an append-only setup, we should be
# careful with this; an attacker could delete backups by
# simply appending ad infinitum:
# https://restic.readthedocs.io/en/stable/060_forget.html#security-considerations-in-append-only-mode
restic forget --keep-last 3 --prune
restic check
'';
serviceConfig = {
DynamicUser = true;
Group = "backup";
CacheDirectory = "restic-prune";
CacheDirectoryMode = "0700";
};
};
}
// lib.mapAttrs' (
name: backup:
lib.nameValuePair "backup-${name}" {
# Don't want to restart mid-backup
restartIfChanged = false;
environment = resticEnv // {
RESTIC_CACHE_DIR = "%C/backup-${name}";
};
path = with pkgs; [
coreutils
openssh
rclone
restic
];
# TODO(tlater): If I ever add more than one repo, service
# shutdown/restarting will potentially break if multiple
# backups for the same service overlap. A more clever
# sentinel file with reference counts would probably solve
# this.
serviceConfig = {
User = backup.user;
Group = "backup";
RuntimeDirectory = "backup-${name}";
CacheDirectory = "backup-${name}";
CacheDirectoryMode = "0700";
PrivateTmp = true;
ExecStart = [
(lib.concatStringsSep " " (
[
"${pkgs.restic}/bin/restic"
"backup"
"--tag"
name
]
++ backup.paths
))
];
ExecStartPre =
map (service: "+${mkShutdownScript service}") backup.pauseServices
++ singleton (
writeScript "backup-${name}-repo-init" [ ] ''
restic snapshots || restic init
''
)
++ optional (backup.preparation.text != null) (
writeScript "backup-${name}-prepare" backup.preparation.packages backup.preparation.text
);
# TODO(tlater): Add repo pruning/checking
ExecStopPost =
map (service: "+${mkRestartScript service}") backup.pauseServices
++ optional (backup.cleanup.text != null) (
writeScript "backup-${name}-cleanup" backup.cleanup.packages backup.cleanup.text
);
};
}
) config.services.backups;
systemd.timers =
{
restic-prune = {
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "Thursday 03:00:00 UTC";
# Don't make this persistent, in case the server was offline
# for a while. This job cannot run at the same time as any
# of the backup jobs.
};
}
// lib.mapAttrs' (
name: backup:
lib.nameValuePair "backup-${name}" {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "Wednesday 02:30:00 UTC";
RandomizedDelaySec = "1h";
FixedRandomDelay = true;
Persistent = true;
};
}
) config.services.backups;
users = {
# This user is only used to own the ssh key, because apparently
# the ssh client checks file permissions and is stuck in 1980.
users.backup = {
group = "backup";
isSystemUser = true;
};
groups.backup = { };
};
};
}

View file

@ -0,0 +1,12 @@
{ config, flake-inputs, ... }:
{
imports = [ flake-inputs.sonnenshift.nixosModules.default ];
services.batteryManager = {
enable = true;
battery = "3ca39300-c523-4315-b9a3-d030f85a9373";
emailFile = "${config.sops.secrets."battery-manager/email".path}";
passwordFile = "${config.sops.secrets."battery-manager/password".path}";
};
}

View file

@ -0,0 +1,254 @@
{
pkgs,
config,
lib,
...
}:
let
inherit (lib.strings) concatMapStringsSep;
cfg = config.services.matrix-conduit;
domain = "matrix.${config.services.nginx.domain}";
turn-realm = "turn.${config.services.nginx.domain}";
in
{
services.matrix-conduit = {
enable = true;
settings.global = {
address = "127.0.0.1";
server_name = domain;
database_backend = "rocksdb";
# Set up delegation: https://docs.conduit.rs/delegation.html#automatic-recommended
# This is primarily to make sliding sync work
well_known = {
client = "https://${domain}";
server = "${domain}:443";
};
turn_uris =
let
address = "${config.services.coturn.realm}:${toString config.services.coturn.listening-port}";
tls-address = "${config.services.coturn.realm}:${toString config.services.coturn.tls-listening-port}";
in
[
"turn:${address}?transport=udp"
"turn:${address}?transport=tcp"
"turns:${tls-address}?transport=udp"
"turns:${tls-address}?transport=tcp"
];
};
};
systemd.services.heisenbridge =
let
replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
registrationFile = builtins.toFile "heisenbridge-registration.yaml" (
builtins.toJSON {
id = "heisenbridge";
url = "http://127.0.0.1:9898";
as_token = "@AS_TOKEN@";
hs_token = "@HS_TOKEN@";
rate_limited = false;
sender_localpart = "heisenbridge";
namespaces = {
users = [
{
regex = "@irc_.*";
exclusive = true;
}
{
regex = "@heisenbridge:.*";
exclusive = true;
}
];
aliases = [ ];
rooms = [ ];
};
}
);
# TODO(tlater): Starting with systemd 253 it will become possible
# to do the credential setup as part of ExecStartPre/preStart
# instead.
#
# This will also make it possible to actually set caps on the
# heisenbridge process using systemd, so that we can run the
# identd process.
execScript = pkgs.writeShellScript "heisenbridge" ''
cp ${registrationFile} "$RUNTIME_DIRECTORY/heisenbridge-registration.yaml"
chmod 600 $RUNTIME_DIRECTORY/heisenbridge-registration.yaml
${replaceSecretBin} '@AS_TOKEN@' "$CREDENTIALS_DIRECTORY/heisenbridge_as-token" "$RUNTIME_DIRECTORY/heisenbridge-registration.yaml"
${replaceSecretBin} '@HS_TOKEN@' "$CREDENTIALS_DIRECTORY/heisenbridge_hs-token" "$RUNTIME_DIRECTORY/heisenbridge-registration.yaml"
chmod 400 $RUNTIME_DIRECTORY/heisenbridge-registration.yaml
${pkgs.heisenbridge}/bin/heisenbridge \
--config $RUNTIME_DIRECTORY/heisenbridge-registration.yaml \
--owner @tlater:matrix.tlater.net \
'http://localhost:${toString cfg.settings.global.port}'
'';
in
{
description = "Matrix<->IRC bridge";
wantedBy = [ "multi-user.target" ];
after = [ "conduit.service" ];
serviceConfig = {
Type = "simple";
LoadCredential = "heisenbridge:/run/secrets/heisenbridge";
ExecStart = execScript;
DynamicUser = true;
RuntimeDirectory = "heisenbridge";
RuntimeDirectoryMode = "0700";
RestrictNamespaces = true;
PrivateUsers = true;
ProtectHostname = true;
ProtectClock = true;
ProtectKernelTunables = true;
ProtectKernelModules = true;
ProtectKernelLogs = true;
ProtectControlGroups = true;
RestrictAddressFamilies = [ "AF_INET AF_INET6" ];
LockPersonality = true;
RestrictRealtime = true;
ProtectProc = "invisible";
ProcSubset = "pid";
UMask = 77;
# For the identd port
# CapabilityBoundingSet = ["CAP_NET_BIND_SERVICE"];
# AmbientCapabilities = ["CAP_NET_BIND_SERVICE"];
};
};
# Pass in the TURN secret via EnvironmentFile, not supported by
# upstream module currently.
#
# See also https://gitlab.com/famedly/conduit/-/issues/314
systemd.services.conduit.serviceConfig.EnvironmentFile = config.sops.secrets."turn/env".path;
services.coturn = {
enable = true;
no-cli = true;
use-auth-secret = true;
static-auth-secret-file = config.sops.secrets."turn/secret".path;
realm = turn-realm;
relay-ips = [ "116.202.158.55" ];
# SSL config
#
# TODO(tlater): Switch to letsencrypt once google fix:
# https://github.com/vector-im/element-android/issues/1533
pkey = config.sops.secrets."turn/ssl-key".path;
cert = config.sops.secrets."turn/ssl-cert".path;
# Based on suggestions from
# https://github.com/matrix-org/synapse/blob/develop/docs/turn-howto.md
# and
# https://www.foxypossibilities.com/2018/05/19/setting-up-a-turn-sever-for-matrix-on-nixos/
no-tcp-relay = true;
secure-stun = true;
extraConfig = ''
# Deny various local IP ranges, see
# https://www.rtcsec.com/article/cve-2020-26262-bypass-of-coturns-access-control-protection/
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255 denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# *Allow* any IP addresses that we explicitly set as relay IPs
${concatMapStringsSep "\n" (ip: "allowed-peer-ip=${ip}") config.services.coturn.relay-ips}
# Various other security settings
no-tlsv1
no-tlsv1_1
# Monitoring
prometheus
'';
};
services.nginx.virtualHosts."${domain}" = {
useACMEHost = "tlater.net";
listen = [
{
addr = "0.0.0.0";
port = 80;
}
{
addr = "[::0]";
port = 80;
}
{
addr = "0.0.0.0";
port = 443;
ssl = true;
}
{
addr = "[::0]";
port = 443;
ssl = true;
}
{
addr = "0.0.0.0";
port = 8448;
ssl = true;
}
{
addr = "[::0]";
port = 8448;
ssl = true;
}
];
forceSSL = true;
enableHSTS = true;
extraConfig = ''
merge_slashes off;
'';
locations = {
"/_matrix" = {
proxyPass = "http://${cfg.settings.global.address}:${toString cfg.settings.global.port}";
# Recommended by conduit
extraConfig = ''
proxy_buffering off;
'';
};
"/.well-known/matrix" = {
proxyPass = "http://${cfg.settings.global.address}:${toString cfg.settings.global.port}";
};
};
};
services.backups.conduit = {
user = "root";
paths = [ "/var/lib/private/matrix-conduit/" ];
# Other services store their data in conduit, so no other services
# need to be shut down currently.
pauseServices = [ "conduit.service" ];
};
}

View file

@ -1,14 +0,0 @@
# The RegistryName for the Item to lock EnderChests and Tanks.
S:"personalItem"="minecraft:diamond"
# Causes chests to lose personal settings and drop the diamond on break.
B:"anarchyMode"=false
# The size of each inventory of EnderStorage, 0 = 3x3, 1 = 3x9, 2 = 6x9, default = 1
I:"item_storage_size"=1
# Disables the tank on top of creators heads.
B:"disableCreatorVisuals"=false
# Enable this to make EnderStorage use vanilla's EnderChest sounds instead of the standard chest.
B:"useVanillaEnderChestsSounds"=false

View file

@ -1,12 +0,0 @@
#Server configuration settings
[server]
#The number of hours the player will be offline before deactivating (default 2 days)
#Range: 1 ~ 8760
hoursBeforeDeactivation = 48
#Disables Chunk loading, use if there is a crash happening in a chunk loaded area
emergencymode = false
#Width/length of chunks to be loaded, it is recommend this is an odd number (max 25)
#Range: 1 ~ 25
chunkLoaderWidth = 3

View file

@ -1,13 +0,0 @@
#Limits for chunk loading
[chunkLoadingLimits]
#The number of tickets a player can be assigned instead of a mod. This is shared across all mods.
#Range: > 0
maximumPlayerTickets = 500
#No comment
#Range: 0 ~ 225
maximumChunksPerTicket = 25
#Maximum ticket count for the mod. Zero disables chunkloading capabilities.
#Range: > 0
maximumModTickets = 200

View file

@ -1,40 +0,0 @@
#Entity Settings
[entity]
#General
[entity.general]
#Allows repeat remove calls to bubble to the top of the list to improve performance of repeat mob spawning.
enable_call_bubbling = true
#Allow AI tasks to be removed from entities at runtime. If this is disable no per mob or per mob type removes will run.
allow_remove_calls = true
#Entity Mob
[entity.mob]
#Remove the look at goal (player or attack target) AI task. This will cause AIs to not face targets or walking directions.
remove_look_goal = false
#Replaces the default look controller with a version featuring cached tan math improving performance. Only works on vanilla style mobs, if a mod overrides the look controller it will skip.
replace_look_controller = true
#Remove the look at random position AI task. This will cause AIs to feel a little lifeless as they do not animate head movement while idle.
remove_look_random = false
#Entity Fish
[entity.fish]
#Remove the fish's AI task to follow a leader fish to act as a group of fish.
remove_follow_leader = false
#Remove the fish's random swimming pathfinder. This will cause fish to stay in position more often.
remove_swim = false
#Remove the fish's panic pathfinder. This will cause fish to not run away.
remove_panic = false
#Remove the fish's AI task to avoid players.
remove_avoid_player = false
#Remove the fish's AI task to puff up when entities are nearby
remove_puff = false
#Squid Fish
[entity.squid]
#Remove the squid's flee pathfinder. This will cause squid to not run away.
remove_flee = false
#Remove the squid's random movement pathfinder. This will cause squid to swim around randomly.
remove_random_move = false

View file

@ -1,415 +0,0 @@
[general]
#Whether polar bears should target seal mobs.
polarBearsAttackSeals = true
#Whether bone serpents are neutral or hostile.
neutralBoneSerpents = false
#Makes eagles teleport back to their owner if they get stuck during controlled flight. Useful for when playing with the Optifine mod, since this mod is the fault of many issues with the falconry system.
falconryTeleportsBack = false
#List of dimensions in which spawning void worms via mysterious worm items is allowed.
voidWormSpawnDimensions = ["minecraft:the_end"]
#True if straddleboard enchants are enabled.
straddleboardEnchants = true
#Whether Crimson Mosquitoes can transform into Warped Moscos if attacking a Mungus or any listed creature.
warpedMoscoTransformation = true
#Whether wild raccoons steal food from chests.
raccoonStealFromChests = true
#Whether mimicream can be used to duplicate items.
mimicreamRepair = true
#Whether acacia blossoms should drop from blocks tagged with #alexsmobs:drops_acacia_blossoms
acaciaBlossomsDropFromLeaves = true
#Whether lava can be bottled with a right click of a glass bottle.
lavaBottleEnabled = true
#Maximum world y-level that blobfish can spawn at
#Range: 0 ~ 256
blobfishSpawnHeight = 38
#Whether guster spawns are limited to when it is raining/thundering.
limitGusterSpawnsToWeather = true
#Whether all players should get an Animal Dictionary when joining the world for the first time.
giveBookOnStartup = true
#Maximum world y-level that cave centipedes can spawn at
#Range: 0 ~ 256
caveCentipedeSpawnHeight = 30
#Blacklist for items that mimicream cannot make a copy of. Ex: "minecraft:stone_sword", "alexsmobs:blood_sprayer"
mimicreamBlacklist = ["alexsmobs:blood_sprayer", "alexsmobs:hemolymph_blaster"]
#0 = no mungus biome transformation. 1 = mungus changes blocks, but not chunk's biome. 2 = mungus transforms blocks and biome of chunk.
#Range: 0 ~ 2
mungusBiomeTransformationType = 2
#Max Health of the void worm boss.
#Range: 0.0 ~ 1000000.0
voidWormMaxHealth = 160.0
#All void worm damage is scaled to this.
#Range: 0.0 ~ 100.0
voidWormDamageModifier = 1.0
#Whether the void worm boss is summonable or not, via the mysterious worm item.
voidWormSummonable = true
#List of all mungus mushrooms, biome transformations and surface blocks. Each is seperated by a |. Add an entry with a block registry name, biome registry name, and block registry name(for the ground).
mungusBiomeMatches = ["minecraft:red_mushroom|minecraft:mushroom_fields|minecraft:mycelium", "minecraft:brown_mushroom|minecraft:mushroom_fields|minecraft:mycelium", "minecraft:crimson_fungus|minecraft:crimson_forest|minecraft:crimson_nylium", "minecraft:warped_fungus|minecraft:warped_forest|minecraft:warped_nylium"]
#Percent chance for leafcutter ants to break leaves blocks when harvesting. Set to zero so that they can not break any blocks.
#Range: 0.0 ~ 1.0
leafcutterAntBreakLeavesChance = 0.2
#Whether to disable certain aspects of the Lava Vision Potion. Enable if issues with shaders persist.
shadersCompat = false
#List of extra(non mungus) mobs that will trigger a crimson mosquito to become a warped mosquito. Ex: "minecraft:mooshroom", "alexsmobs:warped_toad"
warpedMoscoMobTriggers = [""]
#1 out of this number chance for leaves to drop a banana when broken. Fortune is automatically factored in
#Range: > 0
bananaChance = 200
#Max number of ant entities allowed inside a leafcutter anthill.
#Range: 2 ~ 100000
leafcutterAntColonySize = 20
#Whether soul vulture spawns should be restricted solely to the nether fossil structure or to whatever biome is specified in their respective biome config.
soulVultureSpawnOnFossil = true
#Makes Tarantula Hawks fireproof, perfect if you also want these guys to spawn in the nether.
fireproofTarantulaHawk = false
#Percent chance for fungus to grow per each leaf a leafcutter ant returns to the colony.
#Range: 0.0 ~ 1.0
leafcutterAntFungusGrowChance = 0.3
#Whether fish oil gives players a special levitation effect.
fishOilMeme = true
#Whether mimicubes spawns should be restricted solely to the end city structure or to whatever biome is specified in their respective biome config.
mimicubeSpawnInEndCity = true
#Whether bananas should drop from blocks tagged with #alexsmobs:drops_bananas
bananasDropFromLeaves = true
#Relative volume of cachalot whales compared to other animals. Note that irl they are the loudest animal. Turn this down if you find their clicks annoying.
#Range: 0.0 ~ 10.0
cachalotVolume = 3.0
#Whether emu should target skeletons.
emuTargetSkeletons = true
#Lava Opacity for the Lava Vision Potion.
#Range: 0.01 ~ 1.0
lavaVisionOpacity = 0.65
#Whether spiders should target fly mobs.
spidersAttackFlies = true
#Whether wolves should target moose mobs.
wolvesAttackMoose = true
#Percent chance for emu leggings to dodge projectile attacks.
#Range: 0.0 ~ 1.0
emuPantsDodgeChance = 0.45
#How many feedings of leaves does a leafcutter colony need in order to regain a worker ant, if below half the max members.
#Range: 2 ~ 100000
leafcutterAntRepopulateFeedings = 25
#Whether wandering traders offer items like acacia blossoms, mosquito larva, crocodile egg, etc.
wanderingTraderOffers = true
[general.spawning]
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
boneSerpentSpawnWeight = 8
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
alligatorSnappingTurtleSpawnRolls = 1
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
frilledSharkSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
stradpoleSpawnRolls = 3
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
mantisShrimpSpawnWeight = 15
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
lobsterSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
spectreSpawnWeight = 10
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
endergradeSpawnWeight = 10
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
sealSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
sunbirdSpawnRolls = 15
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
shoebillSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
sunbirdSpawnWeight = 2
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
raccoonSpawnWeight = 10
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
mungusSpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
mimicubeSpawnWeight = 40
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
blobfishSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
crowSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
tasmanianDevilSpawnWeight = 10
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
grizzlyBearSpawnWeight = 8
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
elephantSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
caveCentipedeSpawnWeight = 8
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
shoebillSpawnWeight = 10
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
sealSpawnWeight = 30
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
baldEagleSpawnWeight = 15
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
kangarooSpawnWeight = 25
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
rattlesnakeSpawnWeight = 12
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
soulVultureSpawnWeight = 30
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
enderiophageSpawnRolls = 2
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
mooseSpawnWeight = 15
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
warpedMoscoSpawnRolls = 1000
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
platypusSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
tarantulaHawkSpawnRolls = 1
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
soulVultureSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
orcaSpawnRolls = 6
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
capuchinMonkeySpawnWeight = 55
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
alligatorSnappingTurtleSpawnWeight = 20
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
boneSeprentSpawnRolls = 40
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
mimicubeSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn. NOTE: By default the warped mosco doesn't spawn in any biomes.
#Range: 0 ~ 1000
warpedMoscoSpawnWeight = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
cockroachSpawnWeight = 4
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
gazelleSpawnWeight = 40
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
gorillaSpawnWeight = 50
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
flySpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
platypusSpawnWeight = 30
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
warpedToadSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
gorillaSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
snowLeopardSpawnWeight = 20
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
orcaSpawnWeight = 2
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
mimicOctopusSpawnWeight = 9
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
tigerSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
dropbearSpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
crimsonMosquitoSpawnWeight = 15
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
straddlerSpawnWeight = 85
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
hummingbirdSpawnWeight = 39
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
roadrunnerSpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
gusterSpawnWeight = 35
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
endergradeSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
elephantSpawnWeight = 30
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
tasmanianDevilSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
hammerheadSharkSpawnWeight = 8
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
straddlerSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
voidWormSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
gazelleSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
mantisShrimpSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
mungusSpawnWeight = 4
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
voidWormSpawnWeight = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
crocSpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
stradpoleSpawnWeight = 10
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
mooseSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
spectreSpawnRolls = 5
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
caveCentipedeSpawnRolls = 1
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
blobfishSpawnWeight = 30
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
baldEagleSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
tigerSpawnWeight = 100
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
raccoonSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
warpedToadSpawnWeight = 80
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
frilledSharkSpawnWeight = 11
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
emuSpawnWeight = 20
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
kangarooSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
crowSpawnWeight = 10
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
mimicOctopusSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
komodoDragonSpawnWeight = 4
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
flySpawnWeight = 3
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
snowLeopardSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
cachalotWhaleSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
cachalotWhaleSpawnWeight = 2
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
komodoDragonSpawnRolls = 1
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
emuSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
tarantulaHawkSpawnWeight = 6
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
crocodileSpawnWeight = 40
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
gusterSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
cockroachSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
rattlesnakeSpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
roadrunnerSpawnWeight = 15
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
lobsterSpawnWeight = 7
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
capuchinMonkeySpawnRolls = 0
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
dropbearSpawnWeight = 19
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
#Range: 0 ~ 1000
enderiophageSpawnWeight = 4
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
hummingbirdSpawnRolls = 1
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
grizzlyBearSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
crimsonMosquitoSpawnRolls = 0
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
#Range: > 0
hammerheadSharkSpawnRolls = 1
[general.spawning.uniqueSpawning]
#Delay (in ticks) between attempts to spawn beached cachalot whales. Default is a single day. Works like wandering traders.
#Range: > 0
beachedCachalotWhaleSpawnDelay = 24000
#Percent chance for leafcutter anthills to spawn as world gen in each chunk. Set to zero to disable spawning.
#Range: 0.0 ~ 1.0
leafcutterAnthillSpawnChance = 0.004999999888241291
#Whether to enable beached cachalot whales to spawn on beaches during thunder storms.
beachedCachalotWhales = true
#Percent chance increase for each failed attempt to spawn a beached cachalot whale. Higher value = more spawns.
#Range: 0 ~ 100
beachedCachalotWhaleSpawnChance = 5

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "swamp"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mountain"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
}
]
]
}

View file

@ -1,32 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_lukewarm_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_cold_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_frozen_ocean"
}
]
]
}

View file

@ -1,11 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "nether"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "beach"
}
]
]
}

View file

@ -1,42 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "cold"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:lukewarm_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_lukewarm_ocean"
}
]
]
}

View file

@ -1,26 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle_hills"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "mushroom"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "mushroom"
}
]
]
}

View file

@ -1,25 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:crimson_forest"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "byg:crimson_garden"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "biomesoplenty:visceral_heap"
}
]
]
}

View file

@ -1,33 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "swamp"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "river"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "cold"
}
]
]
}

View file

@ -1,38 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "savanna"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "savanna"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "plains"
}
]
]
}

View file

@ -1,18 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:nether_wastes"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "biomesoplenty:crystalline_chasm"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "savanna"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "savanna"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mesa"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "savanna"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "end"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:the_end"
}
]
]
}

View file

@ -1,31 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "end"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:the_end"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:end_barrens"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:end_highlands"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:small_end_islands"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": true,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "ocean"
}
]
]
}

View file

@ -1,32 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_lukewarm_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_cold_ocean"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:deep_frozen_ocean"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "savanna"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "savanna"
}
]
]
}

View file

@ -1,26 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle_hills"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "forest"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "desert"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "hot"
}
]
]
}

View file

@ -1,30 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:flower_forest"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:sunflower_plains"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "jungle"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mesa"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "savanna"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mesa"
}
]
]
}

View file

@ -1,26 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:bamboo_jungle_hills"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "beach"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "hot"
}
]
]
}

View file

@ -1,26 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "hot"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:deep_warm_ocean"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "end"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:the_end"
}
]
]
}

View file

@ -1,38 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "snowy"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "wasteland"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "snowy"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mushroom"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "rare"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "cold"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "river"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "cold"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "biomesoplenty:tundra_bog"
}
]
]
}

View file

@ -1,38 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "savanna"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "savanna"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "plains"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mesa"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "desert"
}
]
]
}

View file

@ -1,28 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mesa"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "desert"
}
]
]
}

View file

@ -1,33 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "beach"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "ocean"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "snowy"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "swamp"
}
]
]
}

View file

@ -1,21 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mountain"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "snowy"
}
]
]
}

View file

@ -1,18 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:soul_sand_valley"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "byg:warped_desert"
}
]
]
}

View file

@ -1,11 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:small_end_islands"
}
]
]
}

View file

@ -1,11 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:basalt_deltas"
}
]
]
}

View file

@ -1,11 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:basalt_deltas"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "mountain"
}
]
]
}

View file

@ -1,16 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_CATEGORY",
"negate": false,
"value": "desert"
}
]
]
}

View file

@ -1,36 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "savanna"
},
{
"type": "BIOME_DICT",
"negate": false,
"value": "forest"
},
{
"type": "BIOME_DICT",
"negate": true,
"value": "cold"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:jungle_egde"
},
{
"type": "REGISTRY_NAME",
"negate": true,
"value": "minecraft:modified_jungle_edge"
}
]
]
}

View file

@ -1,42 +0,0 @@
{
"biomes": [
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:bamboo_jungle"
}
],
[
{
"type": "BIOME_DICT",
"negate": false,
"value": "overworld"
},
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:bamboo_jungle_hills"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "biomesoplenty:bamboo_blossom_grove"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "biomesoplenty:cherry_blossom_grove"
}
]
]
}

View file

@ -1,18 +0,0 @@
{
"biomes": [
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "minecraft:warped_forest"
}
],
[
{
"type": "REGISTRY_NAME",
"negate": false,
"value": "byg:crimson_garden"
}
]
]
}

View file

@ -1,212 +0,0 @@
# Configuration file
armor {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
armor_toughness {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
arrow_catcher {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
attack_speed {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
cleave {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
cold_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
crit_chance {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
crit_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
current_hp_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
damage_chain {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
disengage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
draw_speed {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
eldritch_block {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
enchantability {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
execute {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
fire_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
life_steal {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
loot_pinata {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
magic_arrow {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
max_crit {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
max_health {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
movement_speed {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
omnitool {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
overheal {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 4]
I:Weight=4
}
piercing {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 0]
I:Weight=0
}
radius_mining {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
reach_distance {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
shield_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
shield_speed {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
I:Weight=5
}
snare_hit {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
I:Weight=1
}
snipe_damage {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
I:Weight=3
}
spectral_shot {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
spiked_shield {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
teleport_drops {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
I:Weight=2
}
torch_placement {
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 4]
I:Weight=4
}

View file

@ -1,23 +0,0 @@
# Configuration file
general {
# If the deadly module is loaded. [default: true]
B:"Enable Deadly Module"=true
# If the enchantment module is enabled. [default: true]
B:"Enable Enchantment Module"=true
# If the garden module is loaded. [default: true]
B:"Enable Garden Module"=true
# If the potion module is loaded. [default: true]
B:"Enable Potion Module"=true
# If the spawner module is enabled. [default: true]
B:"Enable Spawner Module"=true
# If the village module is loaded. [default: true]
B:"Enable Village Module"=true
}

View file

@ -1,222 +0,0 @@
# Configuration file
affixes {
# A list of type overrides for the affix loot system. Format is <itemname>|<type>. Types are SWORD, RANGED, PICKAXE, SHOVEL, AXE, SHIELD [default: [minecraft:stick|SWORD]]
S:"Equipment Type Overrides" <
minecraft:stick|SWORD
>
# The 1/n chance that a naturally spawned mob will be granted an affix item. 0 to disable. [range: 0 ~ 500000, default: 125]
I:"Random Affix Chance"=250
}
bosses {
S:"Blacklisted Potions" <
forbidden_arcanus:spectral_vision
>
S:"Boss Filler Block"=minecraft:red_sandstone
I:"Boss Rarity Offset"=475
S:"Boss Spawner Mobs" <
3@minecraft:zombie
3@minecraft:skeleton
2@minecraft:husk
2@minecraft:stray
1@minecraft:wither_skeleton
1@minecraft:pillager
>
S:"Fire Resistance"=1.0
S:"Max Damage Bonus"=4.5
S:"Max Health Multiplier"=8.0
S:"Max Knockback Resist"=1.0
I:"Max Regen Level"=2
I:"Max Resistance Level"=3
S:"Max Speed Multiplier"=1.4
S:"Min Damage Bonus"=2.0
S:"Min Health Multiplier"=4.0
S:"Min Knockback Resist"=0.65
I:"Min Regen Level"=0
I:"Min Resistance Level"=0
S:"Min Speed Multiplier"=1.1
S:"Random Enchantment Chance"=0.45
S:"Random Potion Chance"=0.65
# The 1/n chance that a naturally spawned mob that can see the sky is transformed into a boss. 0 to disable. [range: 0 ~ 500000, default: 85]
I:"Surface Boss Chance"=600
# If a lightning bolt strikes when a surface boss spawn occurs. [default: true]
B:"Surface Boss Lightning"=true
S:"Water Breathing"=1.0
}
"brutal spawners" {
S:"Brutal Potion Effects" <
minecraft:resistance@2
minecraft:fire_resistance@1
minecraft:regeneration@1
minecraft:speed@2
minecraft:water_breathing@1
minecraft:strength@1
>
S:"Brutal Spawner Mobs" <
3@minecraft:zombie
3@minecraft:skeleton
2@minecraft:husk
2@minecraft:stray
1@minecraft:spider
>
}
frequencies {
S:"Boss Chance"=0.07
S:"Brutal Spawner Chance"=0.18
S:"Swarm Spawner Chance"=0.2
}
frequency {
# The number of generation attempts (per chunk) for boss dungeons. [range: 0 ~ 50000, default: 8]
I:"Boss Dungeon"=8
# The number of generation attempts (per chunk) for boss dungeon variant 2. [range: 0 ~ 50000, default: 8]
I:"Boss Dungeon Variant 2"=8
# The number of generation attempts (per chunk) for ore troves. [range: 0 ~ 50000, default: 8]
I:"Ore Troves"=8
# The number of generation attempts (per chunk) for rogue spawners. [range: 0 ~ 50000, default: 4]
I:"Rogue Spawners"=4
# The 1/n chance (per chunk) that a tome tower may attempt generation. 0 = disabled, lower = more chances. [range: 0 ~ 50000, default: 125]
I:"Tome Tower"=125
}
general {
# The biomes that the deadly module will not generate in. [default: [minecraft:warm_ocean], [minecraft:lukewarm_ocean], [minecraft:cold_ocean], [minecraft:frozen_ocean], [minecraft:deep_warm_ocean], [minecraft:deep_frozen_ocean], [minecraft:deep_lukewarm_ocean], [minecraft:deep_cold_ocean], [minecraft:ocean], [minecraft:deep_ocean]]
S:"Generation Biome Blacklist" <
minecraft:warm_ocean
minecraft:lukewarm_ocean
minecraft:cold_ocean
minecraft:frozen_ocean
minecraft:deep_warm_ocean
minecraft:deep_frozen_ocean
minecraft:deep_lukewarm_ocean
minecraft:deep_cold_ocean
minecraft:ocean
minecraft:deep_ocean
>
# The dimensions that the deadly module will generate in. [default: [overworld]]
S:"Generation Dimension Whitelist" <
overworld
>
# The 1/n chance that a rogue spawner will generate with a CHEST_VALUABLE instead of it's default chest. 0 to disable. [range: 0 ~ 80000, default: 9]
I:"Spawner Rare Loot Chance"=9
}
"random spawners" {
I:"alexsmobs:bone_serpent"=1
I:"alexsmobs:bone_serpent_part"=1
I:"alexsmobs:guster"=1
I:"alexsmobs:mimicube"=1
I:"alexsmobs:soul_vulture"=1
I:"alexsmobs:straddler"=1
I:"alexsmobs:warped_mosco"=1
I:"artifacts:mimic"=1
I:"minecraft:blaze"=8
I:"minecraft:cave_spider"=8
I:"minecraft:creeper"=8
I:"minecraft:drowned"=8
I:"minecraft:elder_guardian"=8
I:"minecraft:ender_dragon"=8
I:"minecraft:enderman"=8
I:"minecraft:endermite"=8
I:"minecraft:evoker"=8
I:"minecraft:ghast"=8
I:"minecraft:giant"=8
I:"minecraft:guardian"=8
I:"minecraft:hoglin"=8
I:"minecraft:husk"=8
I:"minecraft:illusioner"=8
I:"minecraft:magma_cube"=8
I:"minecraft:phantom"=8
I:"minecraft:piglin"=8
I:"minecraft:piglin_brute"=8
I:"minecraft:pillager"=8
I:"minecraft:ravager"=8
I:"minecraft:shulker"=8
I:"minecraft:silverfish"=8
I:"minecraft:skeleton"=8
I:"minecraft:slime"=8
I:"minecraft:spider"=8
I:"minecraft:stray"=8
I:"minecraft:vex"=8
I:"minecraft:vindicator"=8
I:"minecraft:witch"=8
I:"minecraft:wither"=8
I:"minecraft:wither_skeleton"=8
I:"minecraft:zoglin"=8
I:"minecraft:zombie"=8
I:"minecraft:zombie_villager"=8
I:"minecraft:zombified_piglin"=8
I:"quark:forgotten"=1
I:"quark:wraith"=1
I:"quark:wrapped"=1
I:"undergarden:brute"=1
I:"undergarden:forgotten_guardian"=1
I:"undergarden:masticator"=1
I:"undergarden:muncher"=1
I:"undergarden:nargoyle"=1
I:"undergarden:rotbeast"=1
I:"undergarden:rotdweller"=1
I:"undergarden:rotling"=1
I:"undergarden:rotwalker"=1
I:"undergarden:sploogie"=1
I:"undergarden:stoneborn"=1
}
"spawner stats: brutal spawners" {
I:"Max Delay"=400
I:"Max Nearby Entities"=6
I:"Min Delay"=200
I:"Player Range"=16
I:"Spawn Count"=6
I:"Spawn Delay"=20
I:"Spawn Range"=4
}
"spawner stats: swarm spawners" {
I:"Max Delay"=300
I:"Max Nearby Entities"=32
I:"Min Delay"=75
I:"Player Range"=8
I:"Spawn Count"=8
I:"Spawn Delay"=20
I:"Spawn Range"=6
}
"swarm spawners" {
S:"Swarm Spawner Mobs" <
4@minecraft:zombie
2@minecraft:skeleton
5@minecraft:spider
8@minecraft:cave_spider
1@minecraft:creeper
>
}
wanderer {
# If the wandering trader may sell affix loot items as a rare trade. [default: true]
B:"Affix Trades"=true
}

View file

@ -1,14 +0,0 @@
# Configuration file
general {
# The max height a stack of bamboo may grow to. Vanilla is 16. [range: 1 ~ 255, default: 32]
I:"Bamboo Height"=16
# The max height a stack of cacti may grow to. Vanilla is 3. [range: 1 ~ 255, default: 5]
I:"Cactus Height"=5
# The max height a stack of reeds may grow to. Vanilla is 3. [range: 1 ~ 255, default: 255]
I:"Reed Height"=5
}

View file

@ -1,8 +0,0 @@
# Configuration file
general {
# The strength of Ancient Knowledge. This multiplier determines how much additional xp is granted. [range: 1 ~ 2147483647, default: 4]
I:"Knowledge XP Multiplier"=4
}

View file

@ -1,135 +0,0 @@
# Configuration file
general {
# When held in the off-hand, this item makes modifiers change stats in the opposite direction. [default: minecraft:quartz]
S:"Inverse Item"=minecraft:quartz
# The durability damage dealt to an item that silk touches a spawner. [range: 0 ~ 100000, default: 100]
I:"Spawner Silk Damage"=100
# The level of silk touch needed to harvest a spawner. Set to -1 to disable, 0 to always drop. The enchantment module can increase the max level of silk touch. [range: -1 ~ 127, default: 1]
I:"Spawner Silk Level"=-1
}
ignore_spawn_cap {
# The item that applies this modifier. [default: minecraft:chorus_fruit]
S:item=minecraft:chorus_fruit
}
ignore_spawn_conditions {
# The item that applies this modifier. [default: minecraft:dragon_egg]
S:item=minecraft:dragon_egg
}
max_delay {
# The item that applies this modifier. [default: minecraft:clock]
S:item=minecraft:clock
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 99999]
I:max_value=99999
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 10]
I:min_value=10
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: -10]
I:value=-10
}
max_nearby_entities {
# The item that applies this modifier. [default: minecraft:ghast_tear]
S:item=minecraft:ghast_tear
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 40]
I:max_value=40
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 0]
I:min_value=0
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: 2]
I:value=2
}
min_delay {
# The item that applies this modifier. [default: minecraft:sugar]
S:item=minecraft:sugar
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 99999]
I:max_value=99999
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 5]
I:min_value=5
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: -5]
I:value=-5
}
player_activation_range {
# The item that applies this modifier. [default: minecraft:prismarine_crystals]
S:item=minecraft:prismarine_crystals
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 50]
I:max_value=50
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 0]
I:min_value=0
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: 2]
I:value=2
}
redstone_control {
# The item that applies this modifier. [default: minecraft:comparator]
S:item=minecraft:comparator
}
require_players {
# The item that applies this modifier. [default: minecraft:nether_star]
S:item=minecraft:nether_star
}
spawn_count {
# The item that applies this modifier. [default: minecraft:fermented_spider_eye]
S:item=minecraft:fermented_spider_eye
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 20]
I:max_value=20
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 1]
I:min_value=1
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: 1]
I:value=1
}
spawn_eggs {
# A list of entity registry names that cannot be applied to spawners via egg. [default: ]
S:"Banned Mobs" <
>
}
spawn_range {
# The item that applies this modifier. [default: minecraft:blaze_rod]
S:item=minecraft:blaze_rod
# The max value of this stat. [range: -2147483648 ~ 2147483647, default: 32]
I:max_value=32
# The min value of this stat. [range: -2147483648 ~ 2147483647, default: 0]
I:min_value=0
# The amount each item changes this stat. [range: -2147483648 ~ 2147483647, default: 1]
I:value=1
}

View file

@ -1,12 +0,0 @@
# Configuration file
wanderer {
# If the generic trade list will be cleared before datapack loaded trades are added. [default: false]
B:"Clear Generic Trades"=false
# If the rare trade list will be cleared before datapack loaded trades are added. [default: false]
B:"Clear Rare Trades"=false
B:"Enable New Trades"=true
}

View file

@ -1,24 +0,0 @@
[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

View file

@ -1,36 +0,0 @@
#Affects how common artifacts are (does not affect mimics)
#When this is 1, the default artifact spawn rates will be used
#Values higher that 1 will decrease spawn rates while values lower than 1 will increase spawn rates
#Doubling this value will (roughly) halve the chance a container contains an artifact
#Setting this to 10000 will completely prevent artifacts from spawning
#When set to 0, every container that can contain artifacts will contain an artifact
#Range: 0.0 ~ 10000.0
artifact_rarity = 1.0
[campsite]
#The maximum y-level at which a campsite can generate
#Range: 1 ~ 255
max_y = 45
#Whether to use wooden chests from other mods when generating campsites
#(keeping this enabled may make it easier to distinguish them from mimics)
use_modded_chests = true
#List of biome IDs in which campsites are not allowed to generate
#End and nether biomes are excluded by default
#To blacklist all biomes from a single mod, use "modid:*"
biome_blacklist = ["minecraft:void", "undergarden:*", "the_bumblezone:*"]
#Probability for a container of a campsite to be replaced by a mimic
#Range: 0.0 ~ 1.0
mimic_chance = 0.3
#The minimum y-level at which a campsite can generate
#Range: 1 ~ 255
min_y = 1
#Probability for an ore vein to generate underneath a campsite
#Range: 0.0 ~ 1.0
ore_chance = 0.25
#Rarity of campsites generating in the world
#The chance a campsite generates in a specific chunk is 1/rarity
#A rarity of 1 will generate a campsite in every chunk, while 10000 will generate no campsites
#Not every attempt at generating a campsite succeeds, this also depends on the density and shape of caves
#Range: 1 ~ 10000
rarity = 12

View file

@ -1,144 +0,0 @@
#Values for the minecraft:generic.max_health attribute.
[minecraft_generic_max_health]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 1.0
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.follow_range attribute.
[minecraft_generic_follow_range]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.knockback_resistance attribute.
[minecraft_generic_knockback_resistance]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.movement_speed attribute.
[minecraft_generic_movement_speed]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.flying_speed attribute.
[minecraft_generic_flying_speed]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.attack_damage attribute.
[minecraft_generic_attack_damage]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.attack_knockback attribute.
[minecraft_generic_attack_knockback]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.attack_speed attribute.
[minecraft_generic_attack_speed]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.armor attribute.
[minecraft_generic_armor]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.armor_toughness attribute.
[minecraft_generic_armor_toughness]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:generic.luck attribute.
[minecraft_generic_luck]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:zombie.spawn_reinforcements attribute.
[minecraft_zombie_spawn_reinforcements]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true
#Values for the minecraft:horse.jump_strength attribute.
[minecraft_horse_jump_strength]
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
min = 4.9E-324
#The maximum value for the attribute.
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
max = 65536.0
#Whether or not this attribute should be modified.
enabled = true

View file

@ -1,35 +0,0 @@
#General settings for the mod.
[general]
#Should flint and steel deal fire damage when used as a weapon?
ShouldFlintAndSteelDoFireDamage = true
#Fixes some fire related damage sources not causing mobs to drop cooked items?
fireFromDamagesource = true
#How much fire damage should flint and steel do?
#Range: > 0
flintAndSteelFireDamage = 3
#What is the % chance skeletons will shoot flaming arrows while on fire?
#Range: 0.0 ~ 1.0
flameArrowSkeletonChance = 0.7
#How long should Soulfire burn players if they try to punch it out?
#Range: > 0
soulfireHitBurnTime = 2
#Can players put out fire with bottled water?
extinguishWithBottledWater = true
#Should the fire/burning HUD overlay be hidden if the player has fire immunity?
hideFireOverlayWhenImmune = true
#Should skeletons shoot flaming arrows while on fire?
flameArrowSkeletons = true
#Should players be able to put out fire blocks by punching them?
punchOutFlames = true
#How long should Fire burn players if they try to punch it out?
#Range: > 0
fireHitBurnTime = 1
#Should fire damage spread between mobs when they hurt eachother? Zombies already do this and won't be changed.
fireDamageSpreads = true
#What is the % chance that fire damage will spread between mobs?
#Range: 0.0 ~ 1.0
fireDamageSpreadChance = 0.3
#Should having fire resistance stop things from being on fire visually?
fireResistanceExtinguish = true

View file

@ -1,310 +0,0 @@
["Better Caves"]
# List of dimensions that will have Better Caves. Ignored if Global Whitelisting is enabled.
# List must be comma-separated values enclosed in square brackets.
# Entries must have the mod namespace included.
# For example: "[minecraft:overworld, minecraft:the_nether, rats:ratlantis]"
# Default: "[minecraft:overworld]"
"Whitelisted Dimensions" = "[minecraft:overworld]"
# Automatically enables Better Caves in every possible dimension.
# If this is enabled, the Whitelisted Dimension IDs option is ignored.
# Default: false
"Enable Global Whitelist" = false
###########################################################################################################
## Configure how bedrock generates.
###########################################################################################################
["Better Caves"."Bedrock Generation"]
# Replaces the usual bedrock generation pattern with flat layers.
# Activates in all whitelisted dimensions.
# Default: true
"Flatten Bedrock" = true
# The width of the bedrock layer. Only works if Flatten Bedrock is true.
#Range: 0 ~ 256
"Bedrock Layer Width" = 1
###########################################################################################################
## Configure settings related to caves, caverns, ravines and more.
###########################################################################################################
["Better Caves"."Underground Generation"]
###########################################################################################################
## Miscellaneous settings used in cave and cavern generation.
###########################################################################################################
["Better Caves"."Underground Generation".Miscellaneous]
# Set to true to enable flooded underground in ocean biomes.
# Default: true
"Enable Flooded Underground" = true
# Ignores surface detection for closing off caves and caverns, forcing them to spawn
# up until their max height. Useful for Nether-like dimensions with no real "surface".
# Default: false
"Override Surface Detection" = false
# Lava (or water in water regions) spawns at and below this y-coordinate.
# Default: 10
#Range: 0 ~ 255
"Liquid Altitude" = 10
# Replace naturally generated floating gravel on the ocean floor with andesite.
# Can prevent lag due to cascading gravel falling into caverns under the ocean.
# Default: true
"Prevent Cascading Gravel" = true
# The block used for lava generation at and below the Liquid Altitude.
# Defaults to regular lava if an invalid block is given.
# Default: minecraft:lava
"Lava Block" = "minecraft:lava"
# The block used for water generation in water caves/caverns at and below the Liquid Altitude.
# Defaults to regular water if an invalid block is given.
# Default: minecraft:water
"Water Block" = "minecraft:water"
###########################################################################################################
## Settings used in the generation of water regions.
###########################################################################################################
["Better Caves"."Underground Generation"."Water Regions"]
# Custom value for water region size. Smaller value = larger regions. This value is very sensitive to change.
# ONLY WORKS IF Water Region Size IS Custom.
# Provided values:
# Small: 0.008
# Medium: 0.004
# Large: 0.0028
# ExtraLarge: 0.001
# Default: 0.004
#Range: 0.0 ~ 0.05
"Water Region Size Custom Value" = 0.004
# Percent chance of a region having water instead of lava at low altitudes.
# Default: 40%
#Range: 0.0 ~ 100.0
"Water Region Spawn Chance" = 40.0
# Determines how large water regions are.
# Default: Medium (recommended).
"Water Region Size" = "Medium"
###########################################################################################################
## Settings used in the generation of caves.
###########################################################################################################
["Better Caves"."Underground Generation".Caves]
# Percent chance of caves spawning in a given region.
# Default: caves spawn in 100% of regions.
#Range: 0.0 ~ 100.0
"Cave Spawn Chance" = 100.0
# Determines how large cave regions are.
# Controls the average size of a cave system.
# Accepted values: Small, Medium, Large, ExtraLarge, Custom
# Default: Small (recommended).
"Cave Region Size" = "Small"
# Custom value for cave region size. Smaller value = larger regions. This value is very sensitive to change.
# ONLY WORKS IF Cave Region Size IS Custom.
# Provided values:
# Small: 0.008
# Medium: 0.005
# Large: 0.0032
# ExtraLarge: 0.001
# Default: 0.008
#Range: 0.0 ~ 0.05000000074505806
"Cave Region Size Custom Value" = 0.00800000037997961
###########################################################################################################
## Settings used in the generation of vanilla-like caves near the surface.
###########################################################################################################
["Better Caves"."Underground Generation".Caves."Surface Caves"]
# The minimum y-coordinate at which surface caves can generate.
# Default: 40
#Range: 0 ~ 255
"Surface Cave Minimum Altitude" = 40
# Set to true to enable vanilla-like caves which provide nice, natural-looking openings at the surface.
# Default: true
"Enable Surface Caves" = true
# The maximum y-coordinate at which surface caves can generate.
# Default: 128
#Range: 0 ~ 255
"Surface Cave Maximum Altitude" = 128
# The density of surface caves. Higher = more caves, closer together.
# Default: 17
#Range: 0 ~ 100
"Surface Cave Density" = 17
###########################################################################################################
## Settings used in the generation of type 1 caves, which are more worm-like.
###########################################################################################################
["Better Caves"."Underground Generation".Caves."Type 1 Caves"]
# The maximum y-coordinate at which type 1 caves can generate.
# Default: 80
#Range: 0 ~ 255
"Type 1 Cave Maximum Altitude" = 80
# Stretches caves horizontally. Lower value = wider caves.
# Default: 1.6 (recommended)
#Range: 0.0 ~ 100.0
"Compression - Horizontal" = 1.6
# The minimum y-coordinate at which type 1 caves can generate.
# Default: 1
#Range: 0 ~ 255
"Type 1 Cave Minimum Altitude" = 1
# The depth from a given point on the surface at which type 1 caves start to close off.
# Will use the Max Cave Altitude instead of surface height if it is lower.
# Will use the Max Cave Altitude no matter what if Override Surface Detection is enabled.
# Default: 15 (recommended)
#Range: 0 ~ 255
"Type 1 Cave Surface Cutoff Depth" = 15
# Stretches caves vertically. Lower value = taller caves with steeper drops.
# Default: 5.0 (recommended)
#Range: 0.0 ~ 100.0
"Compression - Vertical" = 5.0
# Determines how frequently Type 1 Caves spawn. 0 = will not spawn at all.
# Default: 10
#Range: 0 ~ 10
"Type 1 Cave Priority" = 10
###########################################################################################################
## Settings used in the generation of type 2 caves, which tend to be more open and spacious.
###########################################################################################################
["Better Caves"."Underground Generation".Caves."Type 2 Caves"]
# The minimum y-coordinate at which type 2 caves can generate.
# Default: 1
#Range: 0 ~ 255
"Type 2 Cave Minimum Altitude" = 1
# The maximum y-coordinate at which type 2 caves can generate.
# Default: 80
#Range: 0 ~ 255
"Type 2 Cave Maximum Altitude" = 80
# Stretches caves horizontally. Lower value = wider caves.
# Default: 0.9 (recommended)
#Range: 0.0 ~ 100.0
"Compression - Horizontal" = 0.9
# The depth from a given point on the surface at which type 2 caves start to close off.
# Will use the Max Cave Altitude instead of surface height if it is lower.
# Will use the Max Cave Altitude no matter what if Override Surface Detection is enabled.
# Default: 15 (recommended)
#Range: 0 ~ 255
"Type 2 Cave Surface Cutoff Depth" = 15
# Stretches caves vertically. Lower value = taller caves with steeper drops.
# Default: 2.2 (recommended)
#Range: 0.0 ~ 100.0
"Compression - Vertical" = 2.2
# Determines how frequently Type 2 Caves spawn. 0 = will not spawn at all.
# Default: 5
#Range: 0 ~ 10
"Type 2 Cave Priority" = 5
###########################################################################################################
## Settings controlling vanilla Minecraft cave generation.
###########################################################################################################
["Better Caves"."Underground Generation".Caves."Vanilla Caves"]
# The maximum y-coordinate at which vanilla caves can generate.
# Default: 128
#Range: 0 ~ 255
"Vanilla Cave Maximum Altitude" = 128
# The density of vanilla caves. Higher = more caves, closer together.
# Default: 14 (value used in vanilla)
#Range: 0 ~ 100
"Vanilla Cave Density" = 14
# Determines how frequently vanilla caves spawn. 0 = will not spawn at all.
# Default: 0
#Range: 0 ~ 10
"Vanilla Cave Priority" = 0
# The minimum y-coordinate at which vanilla caves can generate.
# Default: 8
#Range: 0 ~ 255
"Vanilla Cave Minimum Altitude" = 8
###########################################################################################################
## Settings used in the generation of caverns. Caverns are spacious caves at low altitudes.
###########################################################################################################
["Better Caves"."Underground Generation".Caverns]
# Custom value for cavern region size. Only works if Cavern Region Size is set to Custom. Smaller value = larger regions. This value is very sensitive to change.
# Provided values:
# Small: 0.01
# Medium: 0.007
# Large: 0.005
# ExtraLarge: 0.001
# Default: 0.01
#Range: 0.0 ~ 0.05
"Cavern Region Size Custom Value" = 0.01
# Percent chance of caverns spawning in a given region.
# Default: caverns spawn in 25% of regions.
#Range: 0.0 ~ 100.0
"Cavern Spawn Chance" = 25.0
# Determines how large cavern regions are. This controls the average size of caverns.
# Accepted values: Small, Medium, Large, ExtraLarge, Custom
# Default: Small (recommended).
"Cavern Region Size" = "Small"
###########################################################################################################
## Settings used in the generation of Floored Caverns found at low altitudes.
## These have much more ground to walk on than Liquid Caverns.
###########################################################################################################
["Better Caves"."Underground Generation".Caverns."Floored Caverns"]
# Stretches caverns horizontally. Lower value = more open caverns with larger features.
# Default: 0.7
#Range: 0.0 ~ 100.0
"Compression - Horizontal" = 0.7
# Determines how frequently Floored Caverns spawn. 0 = will not spawn at all.
# Default: 10
#Range: 0 ~ 10
"Floored Cavern Priority" = 10
# Stretches caverns vertically. Lower value = more open caverns with larger features.
# Default: 1.3
#Range: 0.0 ~ 100.0
"Compression - Vertical" = 1.3
# The minimum y-coordinate at which Floored Caverns can generate.
# Default: 1
#Range: 0 ~ 255
"Floored Cavern Minimum Altitude" = 1
# The maximum y-coordinate at which Floored Caverns can generate.
# Caverns will attempt to close off anyway if this value is greater than the surface's altitude.
# Default: 35
#Range: 0 ~ 255
"Floored Cavern Maximum Altitude" = 35
###########################################################################################################
## Settings used in the generation of Liquid Caverns found at low altitudes.
## These are caverns where the floor is predominantly water or lava.
###########################################################################################################
["Better Caves"."Underground Generation".Caverns."Liquid Caverns"]
# Stretches caverns horizontally. Lower value = more open caverns with larger features.
# Default: 0.7
#Range: 0.0 ~ 100.0
"Compression - Horizontal" = 0.7
# Determines how frequently Liquid Caverns spawn. 0 = will not spawn at all.
# Default: 10
#Range: 0 ~ 10
"Liquid Cavern Priority" = 10
# Stretches caverns vertically. Lower value = more open caverns with larger features.
# Default: 1.3
#Range: 0.0 ~ 100.0
"Compression - Vertical" = 1.3
# The minimum y-coordinate at which Liquid Caverns can generate.
# Default: 1
#Range: 0 ~ 255
"Liquid Cavern Minimum Altitude" = 1
# The maximum y-coordinate at which Liquid Caverns can generate.
# Caverns will attempt to close off anyway if this value is greater than the surface's altitude.
# Default: 35
#Range: 0 ~ 255
"Liquid Cavern Maximum Altitude" = 35
###########################################################################################################
## Settings used for ravine generation.
###########################################################################################################
["Better Caves"."Underground Generation".Ravines]
# Set to true to enable flooded ravines in ocean biomes.
# Default: true
"Enable Flooded Ravines" = true
# Set to true to enable ravine generation.
# Default: true
"Enable Ravines" = true
###########################################################################################################
## Don't mess with these settings for normal gameplay.
###########################################################################################################
["Better Caves"."DEBUG Settings"]
# The visualizer creates worlds where there are no blocks except those indicating where caves
# and caverns would be carved out in a regular world. This is useful for visualizing the kinds of
# caves and caverns your current config options will create.
# Type 1 Cave: Wooden Planks
# Type 2 Cave: Cobblestone
# Lava Cavern: Redstone Block
# Floored Cavern: Gold Block
# Surface Cave: Emerald Block
# Vanilla Cave: Bricks
# Default: false
"Enable DEBUG Visualizer" = false

View file

@ -1,12 +0,0 @@
This directory is for adding YUNG's Better Caves configurations specific to certain dimensions.
Starting with Minecraft 1.16, this directory serves as the base directory for all future versions.
For example, to add a dimension-specific config to the Nether in 1.16, you need to first create a
directory named 1_16 in this folder.
(This will be created for you the first time you run YUNG's Better Caves for 1.16).
Then, in the 1_16 folder, create a config file named DIM_minecraft-the_nether.toml.
NOTE -- YOU MUST HAVE THE DIMENSIONS YOU WANT TO USE WHITELISTED (OR HAVE GLOBAL WHITELISTING ENABLED)
IN THE BASE CONFIG FILE FOR THIS TO WORK.
FOR MORE INFORMATION, CHECK OUT THE WIKI -- https://github.com/yungnickyoung/YUNGs-Better-Caves/wiki

View file

@ -1,104 +0,0 @@
["YUNG's Better Mineshafts"]
# Default: .003
"Mineshaft Spawn Rate" = 0.003
# The lowest a mineshaft can spawn.
# Default: 17
"Minimum y-coordinate" = 17
# The highest the a mineshaft can spawn.
# Be careful, setting this too high may make mineshafts poke through ocean floors.
# Default: 37
"Maximum y-coordinate" = 37
###########################################################################################################
## Spawn rates for various mineshaft parts and decorations.
###########################################################################################################
["YUNG's Better Mineshafts"."Spawn Rates & More"]
# The spawn rate for minecarts holding TNT in the main shaft.
# Default: .0025
#Range: 0.0 ~ 1.0
"Main Shaft TNT Minecart Spawn Rate" = 0.0025
# The spawn rate for minecarts holding TNT in small shafts.
# Default: .0025
#Range: 0.0 ~ 1.0
"Small Shaft TNT Minecart Spawn Rate" = 0.0025
# Percent chance of an Abandoned Miners' Outpost to spawn at the end of a small mineshaft tunnel.
# Default: 2
#Range: 0 ~ 100
"Abandoned Miners' Outpost Spawn Chance" = 2
# The spawn rate for minecarts holding chests in small shafts.
# Default: .00125
#Range: 0.0 ~ 1.0
"Small Shaft Chest Minecart Spawn Rate" = 0.00125
# The spawn rate for minecarts holding chests in the main shaft.
# Default: .01
#Range: 0.0 ~ 1.0
"Main Shaft Chest Minecart Spawn Rate" = 0.01
# The spawn rate for workstation cellars below workstations along the main shaft.
# Default: .25
#Range: 0.0 ~ 1.0
"Workstation Cellar Spawn Rate" = 0.25
# The spawn rate for smaller tunnels that generate along the main shaft.
# Default: .07
#Range: 0.0 ~ 1.0
"Small Shaft Spawn Rate" = 0.07
# The spawn rate for workstation side rooms along the main shaft.
# Default: .025
#Range: 0.0 ~ 1.0
"Workstation Spawn Rate" = 0.025
# The spawn rate for cobwebs.
# Default: .15
#Range: 0.0 ~ 1.0
"Cobweb Spawn Rate" = 0.15
# The spawn rate for lanterns in the main shaft.
# Default: .0067
#Range: 0.0 ~ 1.0
"Lantern Spawn Rate" = 0.0067
# The spawn rate for torches in small shafts.
# Default: .02
#Range: 0.0 ~ 1.0
"Torch Spawn Rate" = 0.02
# The number of "pieces" (e.g. straight, turn, ladder, intersection, etc.) in a single small shaft.
# This determines the overall length of small shafts.
# Default: 9
#Range: 0 ~ 1000
"Small Shaft Piece Chain Length" = 9
###########################################################################################################
## Ore deposit settings.
###########################################################################################################
["YUNG's Better Mineshafts"."Ore Deposits"]
# Chance of an ore deposit containing emerald.
# Default: 3
#Range: 0 ~ 100
"Emerald Spawn Chance" = 3
# Chance of an ore deposit being cobblestone only.
# Default: 50
#Range: 0 ~ 100
"Cobble Spawn Chance (Empty Deposit)" = 50
# Chance of an ore deposit containing iron.
# Default: 9
#Range: 0 ~ 100
"Iron Spawn Chance" = 9
# Chance of an ore deposit containing gold.
# Default: 7
#Range: 0 ~ 100
"Gold Spawn Chance" = 7
# Chance of an ore deposit containing diamond.
# Default: 1
#Range: 0 ~ 100
"Diamond Spawn Chance" = 1
"Enable Ore Deposits" = true
# Chance of an ore deposit containing lapis lazuli.
# Default: 3
#Range: 0 ~ 100
"Lapis Spawn Chance" = 3
# Chance of an ore deposit containing coal.
# Default: 20
#Range: 0 ~ 100
"Coal Spawn Chance" = 20
# Chance of an ore deposit containing redstone.
# Default: 7
#Range: 0 ~ 100
"Redstone Spawn Chance" = 7

View file

@ -1,85 +0,0 @@
variants.json README
The variants.json file contains two properties:
- variants: a list of all the biome-dependent Variant Settings objects (see below)
* NOTE - order is important! The list will be searched in order, and searching will be stopped at the first match.
For example, if you have a rare mesa variant that uses the RARE and MESA biomeTags, as well as a normal mesa variant that only uses the MESA biomeTag,
you will have to put the rare mesa variant BEFORE the normal mesa variant, or else all mesa biomes will match the normal mesa variant before they can check for the rare mesa variant.
- defaultVariant: a Variant Settings object to use for biomes that don't match the biomeTags for any of the Variant Settings in the "variants" list.
This serves as the go-to/default mineshaft - think plain ol' oak planks mineshafts
Variant Settings: a single Variant Settings object is composed of the following properties.
ALL of these properties are required for ALL Variants Settings objects, with the exception of the biomeTags for the defaultVariant.
- biomeTags: a list of lists of BiomeDictionary tags required for this variant to spawn. Only one of the lists of tags must be matched.
For example, by default we want the Red Desert mineshaft variant to spawn in rare desert AND rare mesa biomes.
All desert biomes have the HOT, DRY, and SANDY tags; all mesa biomes have the MESA tag.
Therefore, the biomeTags list for our Red Desert mineshaft in this example will look like the following:
"biomeTags": [
[
"HOT",
"DRY",
"SANDY",
"RARE"
],
[
"MESA",
"RARE"
]
]
NOTE that the biomeTags property is IGNORED for the defaultVariant, since the defaultVariant simply acts as the variant for all
the biomes in the world that don't meet the criteria for any of the variants in the "variants" list.
* SEE THE biomeTags.txt FILE FOR A LIST OF ALL BIOME TAGS *
- mainSelector: the BlockSelector (see below) used for generating the mineshaft's walls and ceiling
- floorSelector: the BlockSelector (see below) used for generating the mineshaft's floor
- brickSelector: the BlockSelector (see below) used for generating areas of the mineshaft where brick-like blocks would be more appropriate.
This includes abandoned workstations, workstation cellars, and the doorway at the end of the main shaft for mineshafts containing surface openings.
- legSelector: the BlockSetSelector (see below) used for generating the 'legs' of the main mineshaft.
These are the supports that form underneath the main mineshaft tunnel when the mineshaft spawns over a big opening.
- mainBlock: The main thematic block for the mineshaft. You will almost certainly want this to be the same as the defaultBlock in the mainSelector and floorSelector properties (see above).
Used as the base and top of the small supports generated throughout the mineshaft.
Also used as the floor for bridging gaps the mineshaft might spawn over.
- supportBlock: Used as the middle section of the small supports generated throughout the mineshaft.
Also used as the supports in rooms with ladders found in the small shafts.
Also used in Type 1 Leg Variants (see below).
Usually this is a fence or wall block, but it's not required to be.
- slabBlock: The main slab block to use. Should be a block that matches your mainBlock well.
- gravelBlock: The block used for gravel deposits placed randomly throughout mineshafts.
Usually gravel, sand, or snow.
- stoneWallBlock: The block used to frame the left and right sides of the doorway in the main shaft leading to the surface entrance, if present.
This is a very minor piece and doesn't matter much. If you aren't sure, use your mainBlock or one of the blocks in your brickSelector.
- stoneSlabBlock: The block used to frame the top side of the doorway in the main shaft leading to the surface entrance, if present.
This is a very minor piece and doesn't matter much. If you aren't sure, use your mainBlock or one of the blocks in your brickSelector.
- trapdoorBlock: The block used for trapdoors leading to workstation cellars.
- vineChance: chance of vines spawning in the mineshaft
- snowChance: chance of snow spawning on the floor of the mineshaft
- cactusChance: chance of cactus spawning in the mineshaft. Can only spawn on top of valid floor blocks (e.g. sand)
- deadBushChance: chance of dead bushes spawning the mineshaft. Can only spawn on top of valid floor blocks (sand, terracotta, dirt)
- mushroomChance: chance of mushrooms spawning in the mineshaft. Can only spawn on top of valid floor blocks (mycelium, dirt)
- legVariant: The ID of the leg variant to use. ACCEPTABLE VALUES: 1, 2
1: The legs used for most mineshafts. Uses the legSelector and the supportBlock.
2: The legs used for ice and mushroom variants by default. Uses only the legSelector.
- flammableLegs: Boolean value for whether the legs of this mineshaft are made of flammable material.
If a mineshaft variant has this value set to true, it will use the brickSelector instead of the legSelector
to generate legs that will spawn in lava. This helps to prevent mineshafts from catching on fire right after generation.
- replacementRate: The percent of existing blocks the mainSelector and floorSelector should replace.
For example, if the replacementRate is .6, then 60% of the already existing stone, andesite, etc in the floors/walls/ceiling
will be replaced with blocks determined by the selectors.
Lowering this value preserves more of the regular worldgen blocks in the mineshaft's floors/walls/ceiling.
BlockSelector: Describes a set of blocks and the probability of each block being chosen.
- entries: An object where each entry's key is a block, and each value is that block's probability of being chosen.
The total sum of all probabilities SHOULD NOT exceed 1.0!
- defaultBlock: The block 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:stonebrick[variant=stonebrick]": 0.1
},
"defaultBlock": "minecraft:planks[variant=oak]"
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).

View file

@ -1,38 +0,0 @@
Helper file showing all available BiomeDictionary biome tags.
[
"BEACH",
"COLD",
"CONIFEROUS",
"DEAD",
"DENSE",
"DRY",
"END",
"FOREST",
"HILLS",
"HOT",
"JUNGLE",
"LUSH",
"MAGICAL",
"MESA",
"MODIFIED",
"MOUNTAIN",
"MUSHROOM",
"NETHER",
"OCEAN",
"OVERWORLD",
"PLAINS",
"PLATEAU",
"RARE",
"RIVER",
"SANDY",
"SAVANNA",
"SNOWY",
"SPARSE",
"SPOOKY",
"SWAMP",
"VOID",
"WASTELAND",
"WATER",
"WET"
]

View file

@ -1,577 +0,0 @@
{
"variants": [
{
"biomeTags": [
[
"HOT",
"DRY",
"SANDY",
"RARE"
],
[
"MESA",
"RARE"
]
],
"mainSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:cut_red_sandstone": 0.1,
"minecraft:smooth_red_sandstone": 0.1,
"minecraft:stone_bricks": 0.05,
"minecraft:chiseled_red_sandstone": 0.1,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:red_sandstone"
},
"floorSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:cut_red_sandstone": 0.1,
"minecraft:smooth_red_sandstone": 0.1,
"minecraft:stone_bricks": 0.05,
"minecraft:chiseled_red_sandstone": 0.1,
"minecraft:red_sand": 0.3
},
"defaultBlock": "minecraft:red_sandstone"
},
"brickSelector": {
"entries": {
"minecraft:cut_red_sandstone": 0.2,
"minecraft:smooth_red_sandstone": 0.2,
"minecraft:chiseled_red_sandstone": 0.1,
"minecraft:red_sandstone": 0.5
},
"defaultBlock": "minecraft:red_sandstone"
},
"legSelector": {
"entries": {
"minecraft:cut_red_sandstone": 0.2,
"minecraft:smooth_red_sandstone": 0.2,
"minecraft:chiseled_red_sandstone": 0.1,
"minecraft:red_sandstone": 0.5
},
"defaultBlock": "minecraft:red_sandstone"
},
"mainBlock": "minecraft:red_sandstone",
"supportBlock": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"slabBlock": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:red_sand",
"stoneWallBlock": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:red_sandstone_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.1,
"snowChance": 0.0,
"cactusChance": 0.1,
"deadBushChance": 0.1,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": false,
"replacementRate": 0.6
},
{
"biomeTags": [
[
"SNOWY",
"RARE"
]
],
"mainSelector": {
"entries": {
"minecraft:blue_ice": 0.4,
"minecraft:snow_block": 0.1,
"minecraft:cave_air": 0.1
},
"defaultBlock": "minecraft:blue_ice"
},
"floorSelector": {
"entries": {
"minecraft:blue_ice": 0.2,
"minecraft:snow_block": 0.1
},
"defaultBlock": "minecraft:blue_ice"
},
"brickSelector": {
"entries": {
"minecraft:blue_ice": 0.5
},
"defaultBlock": "minecraft:blue_ice"
},
"legSelector": {
"entries": {
"minecraft:blue_ice": 0.5
},
"defaultBlock": "minecraft:blue_ice"
},
"mainBlock": "minecraft:blue_ice",
"supportBlock": "minecraft:blue_ice",
"slabBlock": "minecraft:blue_ice",
"gravelBlock": "minecraft:snow_block",
"stoneWallBlock": "minecraft:blue_ice",
"stoneSlabBlock": "minecraft:blue_ice",
"trapdoorBlock": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.05,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 2,
"flammableLegs": false,
"replacementRate": 0.95
},
{
"biomeTags": [
[
"MESA"
]
],
"mainSelector": {
"entries": {
"minecraft:brown_terracotta": 0.05,
"minecraft:white_terracotta": 0.05,
"minecraft:orange_terracotta": 0.05,
"minecraft:yellow_terracotta": 0.05,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:dark_oak_planks"
},
"floorSelector": {
"entries": {
"minecraft:brown_terracotta": 0.1,
"minecraft:white_terracotta": 0.1,
"minecraft:orange_terracotta": 0.1,
"minecraft:mossy_stone_bricks": 0.05,
"minecraft:stone_bricks": 0.1,
"minecraft:chiseled_stone_bricks": 0.05,
"minecraft:yellow_terracotta": 0.1
},
"defaultBlock": "minecraft:dark_oak_planks"
},
"brickSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.33333,
"minecraft:mossy_stone_bricks": 0.33333,
"minecraft:stone_bricks": 0.33333
},
"defaultBlock": "minecraft:dark_oak_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_dark_oak_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:dark_oak_planks"
},
"mainBlock": "minecraft:dark_oak_planks",
"supportBlock": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:dark_oak_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:stone_brick_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.15,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.1,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.9
},
{
"biomeTags": [
[
"JUNGLE"
]
],
"mainSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:mossy_stone_bricks": 0.2,
"minecraft:stone_bricks": 0.05,
"minecraft:chiseled_stone_bricks": 0.05,
"minecraft:cave_air": 0.2,
"minecraft:mossy_cobblestone": 0.1
},
"defaultBlock": "minecraft:jungle_planks"
},
"floorSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:mossy_stone_bricks": 0.2,
"minecraft:stone_bricks": 0.05,
"minecraft:chiseled_stone_bricks": 0.05,
"minecraft:mossy_cobblestone": 0.1
},
"defaultBlock": "minecraft:jungle_planks"
},
"brickSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.25,
"minecraft:mossy_stone_bricks": 0.25,
"minecraft:stone_bricks": 0.25,
"minecraft:chiseled_stone_bricks": 0.25
},
"defaultBlock": "minecraft:jungle_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_jungle_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:jungle_planks"
},
"mainBlock": "minecraft:jungle_planks",
"supportBlock": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:jungle_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:stone_brick_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.6,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.6
},
{
"biomeTags": [
[
"SNOWY"
]
],
"mainSelector": {
"entries": {
"minecraft:blue_ice": 0.1,
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:cobblestone": 0.05,
"minecraft:packed_ice": 0.2,
"minecraft:snow_block": 0.25,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:spruce_planks"
},
"floorSelector": {
"entries": {
"minecraft:blue_ice": 0.1,
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:cobblestone": 0.05,
"minecraft:packed_ice": 0.2,
"minecraft:snow_block": 0.25
},
"defaultBlock": "minecraft:spruce_planks"
},
"brickSelector": {
"entries": {
"minecraft:blue_ice": 0.25,
"minecraft:packed_ice": 0.25,
"minecraft:snow_block": 0.5
},
"defaultBlock": "minecraft:spruce_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_spruce_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:spruce_planks"
},
"mainBlock": "minecraft:spruce_planks",
"supportBlock": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:spruce_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:snow_block",
"stoneWallBlock": "minecraft:snow_block",
"stoneSlabBlock": "minecraft:snow_block",
"trapdoorBlock": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.2,
"snowChance": 1.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.9
},
{
"biomeTags": [
[
"COLD",
"CONIFEROUS",
"FOREST"
]
],
"mainSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:spruce_planks"
},
"floorSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1
},
"defaultBlock": "minecraft:spruce_planks"
},
"brickSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.33333,
"minecraft:mossy_stone_bricks": 0.33333,
"minecraft:stone_bricks": 0.33333
},
"defaultBlock": "minecraft:spruce_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_spruce_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:spruce_planks"
},
"mainBlock": "minecraft:spruce_planks",
"supportBlock": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:spruce_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:stone_brick_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.25,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.6
},
{
"biomeTags": [
[
"HOT",
"DRY",
"SANDY"
]
],
"mainSelector": {
"entries": {
"minecraft:smooth_sandstone": 0.1,
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:chiseled_sandstone": 0.1,
"minecraft:cut_sandstone": 0.1,
"minecraft:stone_bricks": 0.05,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:sandstone"
},
"floorSelector": {
"entries": {
"minecraft:smooth_sandstone": 0.1,
"minecraft:cracked_stone_bricks": 0.05,
"minecraft:chiseled_sandstone": 0.1,
"minecraft:cut_sandstone": 0.1,
"minecraft:stone_bricks": 0.05,
"minecraft:cave_air": 0.2,
"minecraft:sand": 0.3
},
"defaultBlock": "minecraft:sandstone"
},
"brickSelector": {
"entries": {
"minecraft:smooth_sandstone": 0.2,
"minecraft:sandstone": 0.5,
"minecraft:cut_sandstone": 0.2,
"minecraft:chiseled_sandstone": 0.1
},
"defaultBlock": "minecraft:sandstone"
},
"legSelector": {
"entries": {
"minecraft:smooth_sandstone": 0.2,
"minecraft:sandstone": 0.5,
"minecraft:cut_sandstone": 0.2,
"minecraft:chiseled_sandstone": 0.1
},
"defaultBlock": "minecraft:sandstone"
},
"mainBlock": "minecraft:sandstone",
"supportBlock": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"slabBlock": "minecraft:sandstone_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:sand",
"stoneWallBlock": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:sandstone_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.1,
"snowChance": 0.0,
"cactusChance": 0.1,
"deadBushChance": 0.1,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": false,
"replacementRate": 0.6
},
{
"biomeTags": [
[
"SAVANNA"
]
],
"mainSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:acacia_planks"
},
"floorSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:acacia_planks"
},
"brickSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.33333,
"minecraft:mossy_stone_bricks": 0.33333,
"minecraft:stone_bricks": 0.33333
},
"defaultBlock": "minecraft:acacia_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_acacia_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:acacia_planks"
},
"mainBlock": "minecraft:acacia_planks",
"supportBlock": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:acacia_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:stone_brick_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.25,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.6
},
{
"biomeTags": [
[
"MUSHROOM"
]
],
"mainSelector": {
"entries": {
"minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333
},
"defaultBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]"
},
"floorSelector": {
"entries": {
"minecraft:mycelium[snowy=false]": 1.0
},
"defaultBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]"
},
"brickSelector": {
"entries": {
"minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333
},
"defaultBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]"
},
"legSelector": {
"entries": {
"minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333,
"minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]": 0.33333
},
"defaultBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]"
},
"mainBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"supportBlock": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]",
"slabBlock": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"stoneSlabBlock": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"trapdoorBlock": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.25,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.4,
"legVariant": 2,
"flammableLegs": true,
"replacementRate": 0.95
}
],
"defaultVariant": {
"biomeTags": [],
"mainSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1,
"minecraft:cave_air": 0.2
},
"defaultBlock": "minecraft:oak_planks"
},
"floorSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.1,
"minecraft:mossy_stone_bricks": 0.1,
"minecraft:cobblestone": 0.1,
"minecraft:stone_bricks": 0.1
},
"defaultBlock": "minecraft:oak_planks"
},
"brickSelector": {
"entries": {
"minecraft:cracked_stone_bricks": 0.33333,
"minecraft:mossy_stone_bricks": 0.33333,
"minecraft:stone_bricks": 0.33333
},
"defaultBlock": "minecraft:oak_planks"
},
"legSelector": {
"entries": {
"minecraft:stripped_oak_log[axis=y]": 1.0
},
"defaultBlock": "minecraft:oak_planks"
},
"mainBlock": "minecraft:oak_planks",
"supportBlock": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]",
"slabBlock": "minecraft:oak_slab[type=bottom,waterlogged=false]",
"gravelBlock": "minecraft:gravel",
"stoneWallBlock": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]",
"stoneSlabBlock": "minecraft:stone_brick_slab[type=top,waterlogged=false]",
"trapdoorBlock": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]",
"vineChance": 0.25,
"snowChance": 0.0,
"cactusChance": 0.0,
"deadBushChance": 0.0,
"mushroomChance": 0.0,
"legVariant": 1,
"flammableLegs": true,
"replacementRate": 0.6
}
}

View file

@ -1,5 +0,0 @@
This directory is for adding YUNG's Better Mineshafts advanced options.
Options provided may vary by version.
This directory contains subdirectories for supported versions. The first time you run Better Mineshafts, a version subdirectory will be created if that version supports advanced options.
For example, the first time you use Better Mineshafts v2.0+ for Minecraft 1.12.2, the '1_12_2' subdirectory will be created in this folder.
If no subdirectory for your version is created, then that version probably does not support advanced options.

View file

@ -1,11 +0,0 @@
["Better Portals"]
# The maximum height at which a Dimensional Plasma Bucket may be used to place Dimensional Plasma.
# This option exists to force users to go underground in order to get to the Nether (or other dimension, if configured).
# Default: 15
#Range: 1 ~ 255
"Max Dimensional Plasma Placement Altitude" = 15
# Whether or not vanilla Nether portals can be created.
# Default: false
"Enable Vanilla Nether Portals" = false

View file

@ -1,69 +0,0 @@
######################################################
# README for the rifts.json and monoliths.json files #
######################################################
NOTE -- EDITING THE rifts.json and monoliths.json FILES REQUIRES A MINECRAFT RESTART TO UPDATE!
Each of these JSON files contains the 'variants' property, which is a list of all the rifts and monoliths to spawn, respectively.
Each dimensional rift in rifts.json is an object with the following properties:
- blockSelector: A BlockSetSelector describing the blocks this rift is made of.
See the bottom of this README for documentation on BlockSetSelectors.
- fluidColor: The color of ANY DIMENSIONAL PLASMA IN THIS DIMENSION. Keep in mind this hue is added to the base purple hue
- red: Any hex string from 00 to FF.
- green: Any hex string from 00 to FF.
- blue: Any hex string from 00 to FF.
- alpha: Any hex string from 00 to FF.
- minY: The minimum y-coordinate a rift can spawn at.
- maxY: The maximum y-coordinate a rift can spawn at.
- playerTeleportedMinY: The minimum y-coordinate a player can be teleported to in the target dimension.
- playerTeleportedMaxY: The maximum y-coordinate a player can be teleported to in the target dimension.
- spawnDimension: The dimension this rift will spawn in. This MUST be distinct for each variant! In other words - only ONE variant per dimension!
- targetDimension: The dimension this rift will teleport you to. This does not have to be distinct for each variant.
- spawnChance: The chance of a Rift spawning.
- spawnPlatformBlock: Sometimes, when teleporting the player, a small 3x3 platform is generated for the player to stand on.
This is the block the platform will be made of. Should be a block that matches the target dimension well.
Each monolith in monoliths.json is an object with the following properties:
- stairSelector: A BlockSetSelector describing the stairs on the perimeter of this monolith.
- cornerSelector: A BlockSetSelector describing the blocks on the corners of this monolith.
- insideSelector: A BlockSetSelector describing the blocks making up the inside of this monolith.
- fenceSelector: A BlockSetSelector describing the fences used in this monolith.
- powerBlock: The block required to power this monolith.
- decorationBlock: The block in the four corners of the power grid at the center of this monolith.
- beamStopBlocks: A list of blocks through which the beams of ANY RECLAIMERS PLACED IN THIS DIMENSION cannot pass.
- unpoweredBeamColor: The color of the beam of ANY RECLAIMER IN THIS DIMENSION, when UNPOWERED.
- red: Any hex string from 00 to FF.
- green: Any hex string from 00 to FF.
- blue: Any hex string from 00 to FF.
- alpha: Any hex string from 00 to FF.
- poweredBeamColor: The color of the beam of ANY RECLAIMER IN THIS DIMENSION, when POWERED.
- red: Any hex string from 00 to FF.
- green: Any hex string from 00 to FF.
- blue: Any hex string from 00 to FF.
- alpha: Any hex string from 00 to FF.
- minY: The minimum y-coordinate this monolith can spawn at.
- maxY: The maximum y-coordinate this monolith can spawn at.
- playerTeleportedMinY: The minimum y-coordinate a player can be teleported to in the target dimension.
- playerTeleportedMaxY: The maximum y-coordinate a player can be teleported to in the target dimension.
- spawnDimension: The dimension this monolith will spawn in. This MUST be distinct for each variant! In other words - only ONE variant per dimension!
- targetDimension: The dimension this monolith will teleport you to. This does not have to be distinct for each variant.
- spawnChance: The chance of a Monolith spawning.
BlockSetSelector information:
A BlockSetSelector describes a set of blocks and the probability of each block being chosen.
Each BlockSetSelector has the following two fields:
- entries: An object where each entry's key is a block, and each value is that block's probability of being chosen.
The total sum of all probabilities SHOULD NOT exceed 1.0!
- defaultBlock: The block 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 BlockSetSelector:
"entries": {
"minecraft:cobblestone": 0.25,
"minecraft:air": 0.2,
"minecraft:stonebrick[variant=stonebrick]": 0.1
},
"defaultBlock": "minecraft:planks[variant=oak]"
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).

View file

@ -1,55 +0,0 @@
{
"variants": [
{
"stairSelector": {
"entries": {
"minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": 0.5,
"minecraft:polished_blackstone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": 0.5
},
"defaultBlock": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]"
},
"cornerSelector": {
"entries": {},
"defaultBlock": "minecraft:chiseled_polished_blackstone"
},
"insideSelector": {
"entries": {
"minecraft:cracked_polished_blackstone_bricks": 0.2
},
"defaultBlock": "minecraft:polished_blackstone_bricks"
},
"fenceSelector": {
"entries": {
"minecraft:polished_blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33,
"minecraft:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33,
"minecraft:polished_blackstone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33
},
"defaultBlock": "minecraft:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]"
},
"powerBlock": "minecraft:gold_block",
"decorationBlock": "minecraft:yellow_glazed_terracotta[facing=north]",
"beamStopBlocks": [
"minecraft:obsidian"
],
"unpoweredBeamColor": {
"red": "14",
"green": "0c",
"blue": "24",
"alpha": "FF"
},
"poweredBeamColor": {
"red": "FF",
"green": "DC",
"blue": "73",
"alpha": "FF"
},
"minY": 35,
"maxY": 70,
"playerTeleportedMinY": 11,
"playerTeleportedMaxY": 30,
"spawnChance": 0.1,
"spawnDimension": "minecraft:the_nether",
"targetDimension": "minecraft:overworld"
}
]
}

View file

@ -1,30 +0,0 @@
{
"variants": [
{
"blockSelector": {
"entries": {
"minecraft:obsidian": 0.1,
"minecraft:crying_obsidian": 0.05,
"minecraft:gilded_blackstone": 0.05,
"minecraft:blackstone": 0.1,
"minecraft:netherrack": 0.7
},
"defaultBlock": "minecraft:cave_air"
},
"fluidColor": {
"red": "19",
"green": "00",
"blue": "20",
"alpha": "FC"
},
"minY": 10,
"maxY": 15,
"playerTeleportedMinY": 100,
"playerTeleportedMaxY": 120,
"spawnChance": 0.05,
"spawnDimension": "minecraft:overworld",
"targetDimension": "minecraft:the_nether",
"spawnPlatformBlock": "minecraft:netherrack"
}
]
}

Some files were not shown because too many files have changed in this diff Show more