Compare commits
4 commits
master
...
9fcd6f0269
Author | SHA1 | Date | |
---|---|---|---|
Tristan Daniël Maat | 9fcd6f0269 | ||
Tristan Daniël Maat | fce539eb60 | ||
Tristan Daniël Maat | 324a1b4d6c | ||
Tristan Daniël Maat | db6e858ce4 |
|
@ -1,11 +0,0 @@
|
||||||
# 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
2
.gitignore
vendored
|
@ -1,2 +1,2 @@
|
||||||
/result
|
/result
|
||||||
*.qcow2
|
/tlaternet.qcow2
|
||||||
|
|
18
.sops.yaml
18
.sops.yaml
|
@ -1,18 +0,0 @@
|
||||||
keys:
|
|
||||||
- &tlater 535B61015823443941C744DD12264F6BBDFABA89
|
|
||||||
- &server_tlaternet 8a3737d48f1035fe6c3a0a8fd6a1976ca74c7f3b
|
|
||||||
- &server_hetzner1 0af7641adb8aa843136cf6d047f71da3e5ad79f9
|
|
||||||
- &server_staging 2f5caa73e7ceea4fcc8d2881fde587e6737d2dbc
|
|
||||||
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: keys/production.yaml
|
|
||||||
key_groups:
|
|
||||||
- pgp:
|
|
||||||
- *tlater
|
|
||||||
- *server_tlaternet
|
|
||||||
- *server_hetzner1
|
|
||||||
- path_regex: keys/staging.yaml
|
|
||||||
key_groups:
|
|
||||||
- pgp:
|
|
||||||
- *tlater
|
|
||||||
- *server_staging
|
|
37
README.md
37
README.md
|
@ -4,16 +4,21 @@ This is the NixOS configuration for [tlater.net](https://tlater.net/).
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
Run a test VM with:
|
### Building
|
||||||
|
|
||||||
|
Build the VM with:
|
||||||
|
|
||||||
```
|
```
|
||||||
nix run
|
nixos-rebuild build-vm --flake '.#vm'
|
||||||
```
|
```
|
||||||
|
|
||||||
### 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:
|
||||||
|
|
||||||
|
@ -21,11 +26,31 @@ 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
|
||||||
|
|
||||||
Deployment is handled using
|
Currently the deployment process is fully manual because there is no
|
||||||
[deploy-rs](https://github.com/serokell/deploy-rs):
|
CI system.
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
|
@ -1,108 +1,35 @@
|
||||||
{
|
{ config, pkgs, lib, ... }:
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
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/metrics
|
./services/minecraft.nix
|
||||||
./services/nextcloud.nix
|
./services/nextcloud.nix
|
||||||
./services/webserver.nix
|
./services/webserver.nix
|
||||||
./services/wireguard.nix
|
./ids.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
|
||||||
settings.trusted-users = [ "@wheel" ];
|
trustedUsers = [ "@wheel" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# 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 = {
|
firewall.allowedTCPPorts = [ 80 443 2222 2221 25565 ];
|
||||||
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";
|
||||||
|
|
||||||
users.users.tlater = {
|
users.users.tlater = {
|
||||||
|
@ -111,37 +38,45 @@
|
||||||
openssh.authorizedKeys.keyFiles = [ ../keys/tlater.pub ];
|
openssh.authorizedKeys.keyFiles = [ ../keys/tlater.pub ];
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services.openssh = {
|
||||||
openssh = {
|
enable = true;
|
||||||
enable = true;
|
allowSFTP = false;
|
||||||
allowSFTP = false;
|
passwordAuthentication = false;
|
||||||
ports = [ 2222 ];
|
permitRootLogin = "no";
|
||||||
startWhenNeeded = true;
|
ports = [ 2222 ];
|
||||||
|
startWhenNeeded = true;
|
||||||
settings = {
|
|
||||||
GatewayPorts = "yes";
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
logrotate.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
security = {
|
services.nginx = {
|
||||||
sudo.execWheelOnly = true;
|
enable = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
clientMaxBodySize = "10G";
|
||||||
|
domain = "tlater.net";
|
||||||
|
|
||||||
pam = {
|
virtualHosts = let
|
||||||
sshAgentAuth = {
|
host = port: extra:
|
||||||
enable = true;
|
lib.recursiveUpdate {
|
||||||
authorizedKeysFiles = [ "/etc/ssh/authorized_keys.d/%u" ];
|
forceSSL = true;
|
||||||
};
|
enableACME = true;
|
||||||
services.sudo.sshAgentAuth = true;
|
locations."/" = { proxyPass = "http://127.0.0.1:${toString port}"; };
|
||||||
|
} extra;
|
||||||
|
domain = config.services.nginx.domain;
|
||||||
|
in {
|
||||||
|
"${domain}" = host 3002 { serverAliases = [ "www.${domain}" ]; };
|
||||||
|
"gitea.${domain}" = host 3000 { };
|
||||||
|
"nextcloud.${domain}" = host 3001 { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Remove some unneeded packages
|
security.acme = {
|
||||||
environment.defaultPackages = [ ];
|
email = "tm@tlater.net";
|
||||||
|
acceptTerms = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.oci-containers.backend = "podman";
|
||||||
|
|
||||||
system.stateVersion = "20.09";
|
system.stateVersion = "20.09";
|
||||||
}
|
}
|
||||||
|
|
31
configuration/hardware-configuration.nix
Normal file
31
configuration/hardware-configuration.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# 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;
|
||||||
|
}
|
|
@ -1,45 +0,0 @@
|
||||||
{
|
|
||||||
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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
{
|
|
||||||
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" = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,25 +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 + "/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;
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
{ 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)"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
9
configuration/ids.nix
Normal file
9
configuration/ids.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
ids.uids = {
|
||||||
|
# System user ids start at 400 (see nixos/modules/programs/shadow.nix)
|
||||||
|
webserver = 400;
|
||||||
|
# The limit is 999
|
||||||
|
};
|
||||||
|
}
|
20
configuration/linode.nix
Normal file
20
configuration/linode.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ 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;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,63 +0,0 @@
|
||||||
{ 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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
{ 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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,271 +0,0 @@
|
||||||
{
|
|
||||||
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 = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{ 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}";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,254 +0,0 @@
|
||||||
{
|
|
||||||
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" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
# 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
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
|
@ -0,0 +1,288 @@
|
||||||
|
|
||||||
|
[general]
|
||||||
|
#Whether polar bears should target seal mobs.
|
||||||
|
polarBearsAttackSeals = true
|
||||||
|
#Whether bone serpents are neutral or hostile.
|
||||||
|
neutralBoneSerpents = false
|
||||||
|
#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
|
||||||
|
#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"]
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
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
|
||||||
|
roadrunnerSpawnRolls = 1
|
||||||
|
#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
|
||||||
|
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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
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
|
||||||
|
straddlerSpawnRolls = 0
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
shoebillSpawnRolls = 0
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
gazelleSpawnRolls = 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
|
||||||
|
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
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
mungusSpawnRolls = 1
|
||||||
|
#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
|
||||||
|
mimicubeSpawnWeight = 40
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
blobfishSpawnRolls = 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
|
||||||
|
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
|
||||||
|
#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
|
||||||
|
grizzlyBearSpawnWeight = 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
|
||||||
|
blobfishSpawnWeight = 30
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
elephantSpawnRolls = 0
|
||||||
|
#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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
crowSpawnWeight = 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
|
||||||
|
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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
komodoDragonSpawnRolls = 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
|
||||||
|
crocodileSpawnWeight = 40
|
||||||
|
#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
|
||||||
|
gusterSpawnRolls = 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
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
cockroachSpawnRolls = 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
|
||||||
|
#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
|
||||||
|
gorillaSpawnWeight = 50
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
lobsterSpawnWeight = 7
|
||||||
|
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||||
|
#Range: > 0
|
||||||
|
capuchinMonkeySpawnRolls = 0
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "swamp"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "nether"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": true,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": true,
|
||||||
|
"value": "mushroom"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": true,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": true,
|
||||||
|
"value": "mushroom"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "end"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": true,
|
||||||
|
"value": "minecraft:the_end"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_CATEGORY",
|
||||||
|
"negate": true,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": true,
|
||||||
|
"value": "ocean"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_CATEGORY",
|
||||||
|
"negate": false,
|
||||||
|
"value": "desert"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "hot"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "mesa"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "beach"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "hot"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "end"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": true,
|
||||||
|
"value": "minecraft:the_end"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "mushroom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "rare"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "ocean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "cold"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "swamp"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "mountain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "snowy"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "minecraft:soul_sand_valley"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "byg:warped_desert"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "minecraft:small_end_islands"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "minecraft:basalt_deltas"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "minecraft:basalt_deltas"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "overworld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BIOME_DICT",
|
||||||
|
"negate": false,
|
||||||
|
"value": "mountain"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"biomes": []
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"biomes": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "minecraft:warped_forest"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "REGISTRY_NAME",
|
||||||
|
"negate": false,
|
||||||
|
"value": "byg:crimson_garden"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,379 @@
|
||||||
|
# Configuration file
|
||||||
|
|
||||||
|
affixes {
|
||||||
|
# The 1/n chance that a naturally spawned mob will be granted an affix item. [range: 1 ~ 500000, default: 250]
|
||||||
|
I:"Random Affix Chance"=250
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bosses {
|
||||||
|
# A list of potions (registry names) that bosses cannot generate with. [default: [forbidden_arcanus:spectral_vision]]
|
||||||
|
S:"Blacklisted Potions" <
|
||||||
|
forbidden_arcanus:spectral_vision
|
||||||
|
>
|
||||||
|
|
||||||
|
# The block that spawns in a 5x5 underneath world-generated bosses. [default: minecraft:red_sandstone]
|
||||||
|
S:"Boss Filler Block"=minecraft:red_sandstone
|
||||||
|
|
||||||
|
# The rarity offset for boss item generation. 400 guarantees uncommon, 700 guarantees rare, 800 guarantees epic, 950 guarantees mythic. [range: 0 ~ 999, default: 475]
|
||||||
|
I:"Boss Rarity Offset"=475
|
||||||
|
|
||||||
|
# The possible mob types for bosses. Format is weight@entity, entity is a registry name. [default: [3@minecraft:zombie], [3@minecraft:skeleton], [2@minecraft:husk], [2@minecraft:stray], [1@minecraft:wither_skeleton], [1@minecraft:pillager]]
|
||||||
|
S:"Boss Spawner Mobs" <
|
||||||
|
3@minecraft:zombie
|
||||||
|
3@minecraft:skeleton
|
||||||
|
2@minecraft:husk
|
||||||
|
2@minecraft:stray
|
||||||
|
1@minecraft:wither_skeleton
|
||||||
|
1@minecraft:pillager
|
||||||
|
>
|
||||||
|
|
||||||
|
# The percent chance a boss has fire resistance. [range: 0.0 ~ 3.4028235E38, default: 1.0]
|
||||||
|
S:"Fire Resistance"=1.0
|
||||||
|
|
||||||
|
# The max amount of extra damage bosses do, in half hearts. [range: 0.0 ~ 2.14748365E9, default: 4.5]
|
||||||
|
S:"Max Damage Bonus"=4.5
|
||||||
|
|
||||||
|
# The max amount boss health is multiplied by. Base hp * factor = final hp. [range: 0.0 ~ 2.14748365E9, default: 8.0]
|
||||||
|
S:"Max Health Multiplier"=8.0
|
||||||
|
|
||||||
|
# The max amount of knockback resist bosses have. [range: 0.0 ~ 2.14748365E9, default: 1.0]
|
||||||
|
S:"Max Knockback Resist"=1.0
|
||||||
|
|
||||||
|
# The max regeneration level of bosses. [range: 0 ~ 2147483647, default: 2]
|
||||||
|
I:"Max Regen Level"=2
|
||||||
|
|
||||||
|
# The max resistance level of bosses. [range: 0 ~ 2147483647, default: 3]
|
||||||
|
I:"Max Resistance Level"=3
|
||||||
|
|
||||||
|
# The max amount boss speed is multiplied by. Base speed * factor = final speed. [range: 0.0 ~ 2.14748365E9, default: 1.4]
|
||||||
|
S:"Max Speed Multiplier"=1.4
|
||||||
|
|
||||||
|
# The min amount of extra damage bosses do, in half hearts. [range: 0.0 ~ 2.14748365E9, default: 2.0]
|
||||||
|
S:"Min Damage Bonus"=2.0
|
||||||
|
|
||||||
|
# The min amount boss health is multiplied by. Base hp * factor = final hp. [range: 0.0 ~ 2.14748365E9, default: 4.0]
|
||||||
|
S:"Min Health Multiplier"=4.0
|
||||||
|
|
||||||
|
# The min amount of knockback resist bosses have. [range: 0.0 ~ 2.14748365E9, default: 0.65]
|
||||||
|
S:"Min Knockback Resist"=0.65
|
||||||
|
|
||||||
|
# The min regeneration level of bosses. [range: 0 ~ 2147483647, default: 0]
|
||||||
|
I:"Min Regen Level"=0
|
||||||
|
|
||||||
|
# The min resistance level of bosses. [range: 0 ~ 2147483647, default: 0]
|
||||||
|
I:"Min Resistance Level"=0
|
||||||
|
|
||||||
|
# The min amount boss speed is multiplied by. Base speed * factor = final speed. [range: 0.0 ~ 2.14748365E9, default: 1.1]
|
||||||
|
S:"Min Speed Multiplier"=1.1
|
||||||
|
|
||||||
|
# The chance a gear piece will be randomly enchanted. [range: 0.0 ~ 2.14748365E9, default: 0.45]
|
||||||
|
S:"Random Enchantment Chance"=0.45
|
||||||
|
|
||||||
|
# The chance a boss will have extra random potion effects. [range: 0.0 ~ 2.14748365E9, default: 0.65]
|
||||||
|
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. [range: 1 ~ 500000, default: 600]
|
||||||
|
I:"Surface Boss Chance"=600
|
||||||
|
|
||||||
|
# If a lightning bolt strikes when a surface boss spawn occurs. [default: true]
|
||||||
|
B:"Surface Boss Lightning"=true
|
||||||
|
|
||||||
|
# The percent chance a boss has water breathing. [range: 0.0 ~ 3.4028235E38, default: 1.0]
|
||||||
|
S:"Water Breathing"=1.0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"brutal spawners" {
|
||||||
|
# The potion effects applied to all brutal mobs. Format is potion@level, potion is a registry name. [default: [minecraft:resistance@2], [minecraft:fire_resistance@1], [minecraft:regeneration@1], [minecraft:speed@2], [minecraft:water_breathing@1], [minecraft:strength@1]]
|
||||||
|
S:"Brutal Potion Effects" <
|
||||||
|
minecraft:resistance@2
|
||||||
|
minecraft:fire_resistance@1
|
||||||
|
minecraft:regeneration@1
|
||||||
|
minecraft:speed@2
|
||||||
|
minecraft:water_breathing@1
|
||||||
|
minecraft:strength@1
|
||||||
|
>
|
||||||
|
|
||||||
|
# The possible spawn entries for brutal spawners. Format is weight@entity, entity is a registry name. apotheosis:random is a special name, used to generate a spawner that spawns any mob. [default: [3@minecraft:zombie], [3@minecraft:skeleton], [2@minecraft:husk], [2@minecraft:stray], [1@minecraft:spider]]
|
||||||
|
S:"Brutal Spawner Mobs" <
|
||||||
|
3@minecraft:zombie
|
||||||
|
3@minecraft:skeleton
|
||||||
|
2@minecraft:husk
|
||||||
|
2@minecraft:stray
|
||||||
|
1@minecraft:spider
|
||||||
|
>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
frequencies {
|
||||||
|
# The chance (per chunk) for a boss to try spawning. [range: 0.0 ~ 1.0, default: 0.07]
|
||||||
|
S:"Boss Chance"=0.07
|
||||||
|
|
||||||
|
# The chance (per chunk) for a brutal spawner to try spawning. [range: 0.0 ~ 1.0, default: 0.18]
|
||||||
|
S:"Brutal Spawner Chance"=0.18
|
||||||
|
|
||||||
|
# The chance (per chunk) for a swarm spawner to try spawning. [range: 0.0 ~ 1.0, default: 0.2]
|
||||||
|
S:"Swarm Spawner Chance"=0.2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"random spawners" {
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:bone_serpent"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:bone_serpent_part"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:guster"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:mimicube"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:soul_vulture"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:straddler"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"alexsmobs:warped_mosco"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"artifacts:mimic"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:blaze"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:cave_spider"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:creeper"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:drowned"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:elder_guardian"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:ender_dragon"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:enderman"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:endermite"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:evoker"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:ghast"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:giant"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:guardian"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:hoglin"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:husk"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:illusioner"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:magma_cube"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:phantom"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:piglin"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:piglin_brute"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:pillager"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:ravager"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:shulker"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:silverfish"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:skeleton"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:slime"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:spider"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:stray"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:vex"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:vindicator"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:witch"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:wither"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:wither_skeleton"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:zoglin"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:zombie"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:zombie_villager"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 8]
|
||||||
|
I:"minecraft:zombified_piglin"=8
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"quark:forgotten"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"quark:wraith"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"quark:wrapped"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:brute"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:forgotten_guardian"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:masticator"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:muncher"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:nargoyle"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:rotbeast"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:rotdweller"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:rotling"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:rotwalker"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:sploogie"=1
|
||||||
|
|
||||||
|
# [range: 0 ~ 50, default: 1]
|
||||||
|
I:"undergarden:stoneborn"=1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"spawner stats: brutal spawners" {
|
||||||
|
# The maximum delay between spawns [range: 1 ~ 32767, default: 400]
|
||||||
|
I:"Max Delay"=400
|
||||||
|
|
||||||
|
# The maximum number of nearby entities (when hit, the spawner turns off). [range: 1 ~ 32767, default: 6]
|
||||||
|
I:"Max Nearby Entities"=6
|
||||||
|
|
||||||
|
# The minimum delay between spawns [range: 1 ~ 32767, default: 200]
|
||||||
|
I:"Min Delay"=200
|
||||||
|
|
||||||
|
# The required distance a player must be within for this spawner to work. [range: 1 ~ 32767, default: 16]
|
||||||
|
I:"Player Range"=16
|
||||||
|
|
||||||
|
# The number of mobs that will spawn. [range: 1 ~ 32767, default: 6]
|
||||||
|
I:"Spawn Count"=6
|
||||||
|
|
||||||
|
# The delay before first spawn on this spawner. [range: 1 ~ 32767, default: 20]
|
||||||
|
I:"Spawn Delay"=20
|
||||||
|
|
||||||
|
# The spawn range. [range: 1 ~ 32767, default: 4]
|
||||||
|
I:"Spawn Range"=4
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"spawner stats: swarm spawners" {
|
||||||
|
# The maximum delay between spawns [range: 1 ~ 32767, default: 300]
|
||||||
|
I:"Max Delay"=300
|
||||||
|
|
||||||
|
# The maximum number of nearby entities (when hit, the spawner turns off). [range: 1 ~ 32767, default: 32]
|
||||||
|
I:"Max Nearby Entities"=32
|
||||||
|
|
||||||
|
# The minimum delay between spawns [range: 1 ~ 32767, default: 75]
|
||||||
|
I:"Min Delay"=75
|
||||||
|
|
||||||
|
# The required distance a player must be within for this spawner to work. [range: 1 ~ 32767, default: 8]
|
||||||
|
I:"Player Range"=8
|
||||||
|
|
||||||
|
# The number of mobs that will spawn. [range: 1 ~ 32767, default: 8]
|
||||||
|
I:"Spawn Count"=8
|
||||||
|
|
||||||
|
# The delay before first spawn on this spawner. [range: 1 ~ 32767, default: 20]
|
||||||
|
I:"Spawn Delay"=20
|
||||||
|
|
||||||
|
# The spawn range. [range: 1 ~ 32767, default: 6]
|
||||||
|
I:"Spawn Range"=6
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"swarm spawners" {
|
||||||
|
# The possible spawn entries for swarm spawners. Format is weight@entity, entity is a registry name. [default: [4@minecraft:zombie], [2@minecraft:skeleton], [5@minecraft:spider], [8@minecraft:cave_spider], [1@minecraft:creeper]]
|
||||||
|
S:"Swarm Spawner Mobs" <
|
||||||
|
4@minecraft:zombie
|
||||||
|
2@minecraft:skeleton
|
||||||
|
5@minecraft:spider
|
||||||
|
8@minecraft:cave_spider
|
||||||
|
1@minecraft:creeper
|
||||||
|
>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,962 @@
|
||||||
|
# Configuration file
|
||||||
|
|
||||||
|
"alexsmobs:board_return" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"alexsmobs:lavawax" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"alexsmobs:serpentfriend" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"alexsmobs:straddle_jump" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:bane_of_illagers" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 10]
|
||||||
|
I:"Max Level"=10
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:berserk" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 4]
|
||||||
|
I:"Max Level"=4
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:capturing" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:crescendo" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:depth_miner" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:hell_infusion" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:icy_thorns" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 4]
|
||||||
|
I:"Max Level"=4
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:knowledge" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 4]
|
||||||
|
I:"Max Level"=4
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:life_mending" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 4]
|
||||||
|
I:"Max Level"=4
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:magic_protection" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:natures_blessing" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:obliteration" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 9]
|
||||||
|
I:"Max Level"=9
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:rebounding" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 6]
|
||||||
|
I:"Max Level"=6
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:reflective" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:scavenger" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 3]
|
||||||
|
I:"Max Level"=3
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:sea_infusion" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:shield_bash" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:splitting" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 9]
|
||||||
|
I:"Max Level"=9
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:stable_footing" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:tempting" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"apotheosis:true_infinity" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:aqua_affinity" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:bane_of_arthropods" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 10]
|
||||||
|
I:"Max Level"=10
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:binding_curse" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:blast_protection" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:channeling" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:depth_strider" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:efficiency" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 9]
|
||||||
|
I:"Max Level"=9
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:feather_falling" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:fire_aspect" {
|
||||||
|
# The max level of this enchantment - normally 2. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:fire_protection" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:flame" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:fortune" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:frost_walker" {
|
||||||
|
# The max level of this enchantment - normally 2. [range: 1 ~ 127, default: 6]
|
||||||
|
I:"Max Level"=6
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:impaling" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 10]
|
||||||
|
I:"Max Level"=10
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:infinity" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:knockback" {
|
||||||
|
# The max level of this enchantment - normally 2. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:looting" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:loyalty" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:luck_of_the_sea" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:lure" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:mending" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:multishot" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:piercing" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:power" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 9]
|
||||||
|
I:"Max Level"=9
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:projectile_protection" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:protection" {
|
||||||
|
# The max level of this enchantment - normally 4. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:punch" {
|
||||||
|
# The max level of this enchantment - normally 2. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:quick_charge" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:respiration" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:riptide" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:sharpness" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 9]
|
||||||
|
I:"Max Level"=9
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:silk_touch" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:smite" {
|
||||||
|
# The max level of this enchantment - normally 5. [range: 1 ~ 127, default: 10]
|
||||||
|
I:"Max Level"=10
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:soul_speed" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 7]
|
||||||
|
I:"Max Level"=7
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:sweeping" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:thorns" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 5]
|
||||||
|
I:"Max Level"=5
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:unbreaking" {
|
||||||
|
# The max level of this enchantment - normally 3. [range: 1 ~ 127, default: 8]
|
||||||
|
I:"Max Level"=8
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"minecraft:vanishing_curse" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
"passablefoliage:leaf_walker" {
|
||||||
|
# The max level of this enchantment - normally 1. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Max Level"=1
|
||||||
|
|
||||||
|
# A function to determine the max enchanting power. The variable "x" is level. See: https://github.com/uklimaschewski/EvalEx#usage-examples [default: ]
|
||||||
|
S:"Max Power Function"=
|
||||||
|
|
||||||
|
# The min level of this enchantment. [range: 1 ~ 127, default: 1]
|
||||||
|
I:"Min Level"=1
|
||||||
|
|
||||||
|
# A function to determine the min enchanting power. [default: ]
|
||||||
|
S:"Min Power Function"=
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,8 @@
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,135 @@
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Configuration file
|
||||||
|
|
||||||
|
wanderer {
|
||||||
|
# If new trades are added to the wandering merchant. [default: true]
|
||||||
|
B:"Enable New Trades"=true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
[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
|
||||||
|
#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 your current saturation level overlayed on the hunger bar
|
||||||
|
showSaturationHudOverlay = true
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
#To disable items or to change the frequency at which artifacts appear, override the loot tables from this mod with a datapack
|
||||||
|
#Cosmetic slots are disabled by default, they can be enabled using the Curios config, see https://github.com/TheIllusiveC4/Curios/wiki/How-to-Use:-Users#creating-a-new-slot-type
|
||||||
|
[campsite]
|
||||||
|
#Probability for an ore vein to generate underneath a campsite
|
||||||
|
#Range: 0 ~ 100
|
||||||
|
campsite_ore_chance = 25
|
||||||
|
#The minimum y-level at which a campsite can generate
|
||||||
|
#Range: 1 ~ 255
|
||||||
|
campsite_min_y = 1
|
||||||
|
#The maximum y-level at which a campsite can generate
|
||||||
|
#Range: 0 ~ 255
|
||||||
|
campsite_max_y = 45
|
||||||
|
#Whether to use wooden chests from other mods when generating campsites, may make it easier to distinguish them from mimics
|
||||||
|
use_modded_chests = true
|
||||||
|
#Probability for a container of a campsite to be replaced by a mimic
|
||||||
|
#Range: 0 ~ 100
|
||||||
|
campsite_mimic_chance = 30
|
||||||
|
#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:*"]
|
||||||
|
#Per-chunk probability (as a percentage) a campsite is attempted to be generated. Not every attempt succeeds, this also depends on the density and shape of caves
|
||||||
|
#Range: 0 ~ 100
|
||||||
|
campsite_chance = 8
|
||||||
|
|
||||||
|
[items]
|
||||||
|
#Cooldown in ticks for the Everlasting Beef and Eternal Steak items
|
||||||
|
#Range: > 0
|
||||||
|
eternal_food_cooldown = 300
|
||||||
|
|
|
@ -0,0 +1,331 @@
|
||||||
|
|
||||||
|
#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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 1.0
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 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: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the doggytalents:generic.jump_power attribute.
|
||||||
|
[doggytalents_generic_jump_power]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the doggytalents:generic.crit_chance attribute.
|
||||||
|
[doggytalents_generic_crit_chance]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the doggytalents:generic.crit_bonus attribute.
|
||||||
|
[doggytalents_generic_crit_bonus]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the forge:swim_speed attribute.
|
||||||
|
[forge_swim_speed]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the forge:nametag_distance attribute.
|
||||||
|
[forge_nametag_distance]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the forge:entity_gravity attribute.
|
||||||
|
[forge_entity_gravity]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the forge:reach_distance attribute.
|
||||||
|
[forge_reach_distance]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:draw_speed attribute.
|
||||||
|
[apotheosis_draw_speed]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:snipe_damage attribute.
|
||||||
|
[apotheosis_snipe_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:fire_damage attribute.
|
||||||
|
[apotheosis_fire_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:cold_damage attribute.
|
||||||
|
[apotheosis_cold_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:life_steal attribute.
|
||||||
|
[apotheosis_life_steal]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:piercing_damage attribute.
|
||||||
|
[apotheosis_piercing_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:current_hp_damage attribute.
|
||||||
|
[apotheosis_current_hp_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:crit_chance attribute.
|
||||||
|
[apotheosis_crit_chance]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:crit_damage attribute.
|
||||||
|
[apotheosis_crit_damage]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
#Values for the apotheosis:overhealing attribute.
|
||||||
|
[apotheosis_overhealing]
|
||||||
|
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
min = 4.9E-324
|
||||||
|
#The maximum value for the attribute.
|
||||||
|
#Range: 4.9E-324 ~ 1.7976931348623157E308
|
||||||
|
max = 65536.0
|
||||||
|
#Whether or not this attribute should be modified.
|
||||||
|
enabled = true
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
#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
|
||||||
|
#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
|
||||||
|
#Should skeletons shoot flaming arrows while on fire?
|
||||||
|
flameArrowSkeletons = true
|
||||||
|
|
|
@ -0,0 +1,310 @@
|
||||||
|
|
||||||
|
["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
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
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
|
|
@ -0,0 +1,104 @@
|
||||||
|
|
||||||
|
["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
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
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).
|
|
@ -0,0 +1,38 @@
|
||||||
|
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"
|
||||||
|
]
|
|
@ -0,0 +1,577 @@
|
||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
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.
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
["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
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
######################################################
|
||||||
|
# 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).
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"variants": [
|
||||||
|
{
|
||||||
|
"stairSelector": {
|
||||||
|
"entries": {
|
||||||
|
"minecraft:polished_blackstone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": 0.5,
|
||||||
|
"minecraft:blackstone_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:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33,
|
||||||
|
"minecraft:polished_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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"variants": [
|
||||||
|
{
|
||||||
|
"blockSelector": {
|
||||||
|
"entries": {
|
||||||
|
"minecraft:crying_obsidian": 0.05,
|
||||||
|
"minecraft:netherrack": 0.7,
|
||||||
|
"minecraft:gilded_blackstone": 0.05,
|
||||||
|
"minecraft:obsidian": 0.1,
|
||||||
|
"minecraft:blackstone": 0.1
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
[General]
|
||||||
|
#Silence the wandering trader's ambient sound.
|
||||||
|
silenceTrader = true
|
||||||
|
#Silence the server-wide Wither spawn and death broadcast sounds.
|
||||||
|
silenceWither = true
|
||||||
|
#Silence the server-wide Ender Dragon Death broadcast sound.
|
||||||
|
silenceDragon = true
|
||||||
|
#Silence the server-wide Thunder broadcast sound caused by the Lightning event
|
||||||
|
silenceLightning = true
|
||||||
|
#If enabled the console will load up spam showing what sounds are being received and whether or not they are being canceled
|
||||||
|
debugMode = false
|
||||||
|
#A list of sounds to silence, discoverable with the toggle command /listen
|
||||||
|
#enter one sound event per line with no commas.
|
||||||
|
silenceUs = []
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
If you need help understanding what the byg-biomes or byg-sub-biomes configs allow you to do, please watch this video: https://youtu.be/iq0q09O7ZYo
|
||||||
|
|
||||||
|
If you need help with datapacking, please watch this: https://youtu.be/TF_p8OeB-hc
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
"biomes": {
|
||||||
|
"byg:bulbis_gardens": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "byg:bulbis_gardens_edge",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:cryptic_wastes": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:ethereal_islands": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "byg:ethereal_clearing",
|
||||||
|
"hills": [
|
||||||
|
{
|
||||||
|
"name": "byg:ethereal_forest",
|
||||||
|
"weight": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "byg:ethereal_clearing",
|
||||||
|
"weight": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"byg:ivis_fields": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:nightshade_forest": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:purpur_peaks": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:shattered_desert": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"byg:shulkren_forest": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"minecraft:end_highlands": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
},
|
||||||
|
"minecraft:end_midlands": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"void-biomes": {
|
||||||
|
"byg:viscal_isles": {
|
||||||
|
"dictionary": "END,VOID",
|
||||||
|
"weight": 5,
|
||||||
|
"edge": "",
|
||||||
|
"hills": [
|
||||||
|
{
|
||||||
|
"name": "byg:shattered_viscal_isles",
|
||||||
|
"weight": 10
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"biomes": {
|
||||||
|
"byg:bulbis_gardens_edge": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:ethereal_forest": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:ethereal_clearing": {
|
||||||
|
"dictionary": "END",
|
||||||
|
"edge": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"void-biomes": {
|
||||||
|
"byg:shattered_viscal_isles": {
|
||||||
|
"dictionary": "END,VOID",
|
||||||
|
"edge": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,520 @@
|
||||||
|
{
|
||||||
|
"sub-biomes": {
|
||||||
|
"byg:alpine_foothills": {
|
||||||
|
"dictionary": "COLD,HILLS,OVERWORLD,SNOWY",
|
||||||
|
"river": "byg:alpine_foothills",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:araucaria_forest": {
|
||||||
|
"dictionary": "DENSE,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:aspen_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:aspen_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:bamboo_forest": {
|
||||||
|
"dictionary": "DENSE,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:basalt_barrera": {
|
||||||
|
"dictionary": "BEACH,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:black_forest_clearing": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:black_forest_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:blue_giant_taiga": {
|
||||||
|
"dictionary": "OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:blue_taiga_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:bluff_peaks": {
|
||||||
|
"dictionary": "COLD,MOUNTAIN,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:bog": {
|
||||||
|
"dictionary": "OVERWORLD,SWAMP,WATER,WET",
|
||||||
|
"river": "byg:bog",
|
||||||
|
"beach": "byg:bog",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:boreal_clearing": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:boreal_forest_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:canyon_edge": {
|
||||||
|
"dictionary": "OVERWORLD,WATER,WET",
|
||||||
|
"river": "byg:canyon_edge",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:cherry_blossom_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:cika_mountains": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,MOUNTAIN,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:coniferous_clearing": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:coniferous_forest_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:coral_mangroves": {
|
||||||
|
"dictionary": "OVERWORLD,SWAMP,WATER,WET",
|
||||||
|
"river": "byg:coral_mangroves",
|
||||||
|
"beach": "byg:coral_mangroves",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:deciduous_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:deciduous_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:dummy": {
|
||||||
|
"dictionary": "OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:ebony_hills": {
|
||||||
|
"dictionary": "DENSE,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:enchanted_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,MAGICAL,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:evergreen_clearing": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:evergreen_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:flowering_ancient_forest": {
|
||||||
|
"dictionary": "DENSE,FOREST,MAGICAL,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:flowering_enchanted_grove": {
|
||||||
|
"dictionary": "LUSH,MAGICAL,OVERWORLD,PLAINS",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:flowering_grove": {
|
||||||
|
"dictionary": "LUSH,OVERWORLD,PLAINS",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:flowering_meadow": {
|
||||||
|
"dictionary": "LUSH,OVERWORLD,PLAINS",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:forest_fault": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:fresh_water_lake": {
|
||||||
|
"dictionary": "OVERWORLD,WATER,WET",
|
||||||
|
"river": "byg:fresh_water_lake",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:frozen_lake": {
|
||||||
|
"dictionary": "OVERWORLD,SNOWY,WATER,WET",
|
||||||
|
"river": "byg:frozen_lake",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:fungal_patch": {
|
||||||
|
"dictionary": "DENSE,HOT,JUNGLE,MAGICAL,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:glowing_ancient_forest": {
|
||||||
|
"dictionary": "DENSE,FOREST,MAGICAL,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:great_lake_isles": {
|
||||||
|
"dictionary": "CONIFEROUS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:guiana_clearing": {
|
||||||
|
"dictionary": "FOREST,JUNGLE,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:jacaranda_clearing": {
|
||||||
|
"dictionary": "FOREST,JUNGLE,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:jacaranda_forest_hills": {
|
||||||
|
"dictionary": "DENSE,FOREST,HILLS,HOT,JUNGLE,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:lush_red_desert": {
|
||||||
|
"dictionary": "DRY,HOT,OVERWORLD,SANDY",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:maple_hills": {
|
||||||
|
"dictionary": "COLD,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:marshlands": {
|
||||||
|
"dictionary": "OVERWORLD,SWAMP,WATER,WET",
|
||||||
|
"river": "byg:marshlands",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:northern_forest": {
|
||||||
|
"dictionary": "COLD,FOREST,LUSH,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:oasis": {
|
||||||
|
"dictionary": "HOT,LUSH,OVERWORLD,SANDY,WATER,WET",
|
||||||
|
"river": "byg:oasis",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:pointed_stone_forest": {
|
||||||
|
"dictionary": "FOREST,MOUNTAIN,OVERWORLD,PLATEAU",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:polluted_lake": {
|
||||||
|
"dictionary": "OVERWORLD,WASTELAND,WATER,WET",
|
||||||
|
"river": "byg:polluted_lake",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:prairie_clearing": {
|
||||||
|
"dictionary": "DRY,OVERWORLD,PLAINS,SPARSE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:pumpkin_forest": {
|
||||||
|
"dictionary": "COLD,FOREST,MAGICAL,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:rainbow_beach": {
|
||||||
|
"dictionary": "BEACH,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:red_desert_dunes": {
|
||||||
|
"dictionary": "HILLS,HOT,OVERWORLD,SANDY,WASTELAND",
|
||||||
|
"river": "byg:red_desert_dunes",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:red_oak_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:red_rock_highlands": {
|
||||||
|
"dictionary": "HOT,MOUNTAIN,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:red_rock_lowlands": {
|
||||||
|
"dictionary": "HOT,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:red_spruce_taiga": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:redwood_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD,SPARSE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:redwood_mountains": {
|
||||||
|
"dictionary": "DRY,HOT,MOUNTAIN,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:rocky_beach": {
|
||||||
|
"dictionary": "OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_birch_forest_hills": {
|
||||||
|
"dictionary": "COLD,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_deciduous_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_deciduous_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_forest_hills": {
|
||||||
|
"dictionary": "COLD,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_giant_taiga": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:seasonal_taiga_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:sierra_range": {
|
||||||
|
"dictionary": "DRY,HOT,MOUNTAIN,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_black_beach": {
|
||||||
|
"dictionary": "BEACH,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_blue_giant_taiga": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,OVERWORLD,RARE,SNOWY",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_blue_taiga_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "minecraft:snowy_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_coniferous_clearing": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "byg:snowy_black_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_coniferous_forest_hills": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,HILLS,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "byg:snowy_black_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_deciduous_clearing": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "minecraft:snowy_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_deciduous_forest_hills": {
|
||||||
|
"dictionary": "FOREST,HILLS,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "minecraft:snowy_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_evergreen_clearing": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "byg:snowy_black_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_evergreen_hills": {
|
||||||
|
"dictionary": "CONIFEROUS,FOREST,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "byg:snowy_black_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:snowy_rocky_black_beach": {
|
||||||
|
"dictionary": "BEACH,OVERWORLD,SNOWY",
|
||||||
|
"river": "minecraft:frozen_river",
|
||||||
|
"beach": "",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:tropical_fungal_rainforest_hills": {
|
||||||
|
"dictionary": "DENSE,HILLS,HOT,JUNGLE,MAGICAL,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:tropical_islands": {
|
||||||
|
"dictionary": "OVERWORLD",
|
||||||
|
"river": "byg:tropical_islands",
|
||||||
|
"beach": "byg:rainbow_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:tropical_rainforest_hills": {
|
||||||
|
"dictionary": "DENSE,HILLS,HOT,JUNGLE,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:twilight_valley_hills": {
|
||||||
|
"dictionary": "COLD,HILLS,MAGICAL,OVERWORLD,WASTELAND",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:weeping_witch_clearing": {
|
||||||
|
"dictionary": "COLD,FOREST,MAGICAL,OVERWORLD,RARE",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:white_beach": {
|
||||||
|
"dictionary": "BEACH,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:wooded_grassland_plateau": {
|
||||||
|
"dictionary": "FOREST,OVERWORLD,PLAINS",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "byg:rocky_beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:wooded_meadow": {
|
||||||
|
"dictionary": "FOREST,LUSH,OVERWORLD,PLAINS",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:wooded_red_rock_mountains": {
|
||||||
|
"dictionary": "DRY,HOT,MOUNTAIN,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:zelkova_clearing": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
},
|
||||||
|
"byg:zelkova_forest_hills": {
|
||||||
|
"dictionary": "COLD,CONIFEROUS,FOREST,HILLS,OVERWORLD",
|
||||||
|
"river": "minecraft:river",
|
||||||
|
"beach": "minecraft:beach",
|
||||||
|
"edge": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,153 @@
|
||||||
|
|
||||||
|
[The_End]
|
||||||
|
#
|
||||||
|
#Does BYG control The End?
|
||||||
|
ControlEnd = true
|
||||||
|
#
|
||||||
|
#End Biome Size.
|
||||||
|
#Default: 3
|
||||||
|
#Range: 0 ~ 10
|
||||||
|
IslandBiomeSize = 3
|
||||||
|
#
|
||||||
|
#End Biome Size
|
||||||
|
#Default: 3
|
||||||
|
#Range: 0 ~ 10
|
||||||
|
EndBiomeSize = 3
|
||||||
|
|
||||||
|
[The_End.Void]
|
||||||
|
#
|
||||||
|
#Void Biome(where small end islands generate in vanilla) size.
|
||||||
|
#Default: 3
|
||||||
|
#Range: 0 ~ 10
|
||||||
|
VoidBiomeSize = 2
|
||||||
|
|
||||||
|
[Overworld]
|
||||||
|
|
||||||
|
[Overworld.Ores]
|
||||||
|
|
||||||
|
[Overworld.Ores.Pendorite]
|
||||||
|
#
|
||||||
|
#Number of times to spawn per chunk.
|
||||||
|
#Default: 10
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
PendoritePerChunk = 10
|
||||||
|
#
|
||||||
|
#Generate Pendorite Ore? Only spawns in Forest Fault.
|
||||||
|
GeneratePendorite = true
|
||||||
|
#
|
||||||
|
#Y level to start generating at.
|
||||||
|
#Default: 56
|
||||||
|
#Range: 1 ~ 256
|
||||||
|
PendoriteY = 56
|
||||||
|
#
|
||||||
|
#Size of the clusters.
|
||||||
|
#Default: 4
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
PendoriteSize = 4
|
||||||
|
|
||||||
|
#Datapacks can and will override all values in the "Ore" category so keep that in mind!
|
||||||
|
[Overworld.Ores.Ametrine]
|
||||||
|
#
|
||||||
|
#Number of times to spawn per chunk.
|
||||||
|
#Default: 10
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
AmetrinePerChunk = 10
|
||||||
|
#
|
||||||
|
#Size of the clusters.
|
||||||
|
#Default: 4
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
AmetrineSize = 4
|
||||||
|
#
|
||||||
|
#Generate Ametrine Ore? Only spawns in Guiana Shield, Stone Forest, and Pointed Stone Forest!
|
||||||
|
GenerateAmetrine = true
|
||||||
|
#
|
||||||
|
#Y level to start generating at.
|
||||||
|
#Default: 56
|
||||||
|
#Range: 1 ~ 256
|
||||||
|
AmetrineY = 56
|
||||||
|
|
||||||
|
[Overworld.Stones]
|
||||||
|
|
||||||
|
[Overworld.Stones.Scoria_Stone]
|
||||||
|
#
|
||||||
|
#Number of times to spawn per chunk.
|
||||||
|
#Default: 10
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
ScoriaStonePerChunk = 10
|
||||||
|
#
|
||||||
|
#Y level to start generating at.
|
||||||
|
#Default: 63
|
||||||
|
#Range: 1 ~ 256
|
||||||
|
ScoriaStoneY = 63
|
||||||
|
#
|
||||||
|
#Size of the clusters.
|
||||||
|
#Default: 20
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
ScoriaStoneSize = 20
|
||||||
|
#
|
||||||
|
#Generate Scoria Stone?
|
||||||
|
GenerateScoriaStone = true
|
||||||
|
|
||||||
|
[Overworld.Stones.Soap_Stone]
|
||||||
|
#
|
||||||
|
#Number of times to spawn per chunk.
|
||||||
|
#Default: 10
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
SoapStonePerChunk = 10
|
||||||
|
#
|
||||||
|
#Size of the clusters.
|
||||||
|
#Default: 20
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
SoapStoneSize = 20
|
||||||
|
#
|
||||||
|
#Generate Soap Stone?
|
||||||
|
GenerateSoapStone = true
|
||||||
|
#
|
||||||
|
#Y level to start generating at.
|
||||||
|
#Default: 63
|
||||||
|
#Range: 1 ~ 256
|
||||||
|
SoapStoneY = 63
|
||||||
|
|
||||||
|
#Datapacks can and will override all values in the "Stone" category so keep that in mind!
|
||||||
|
[Overworld.Stones.Rocky_Stone]
|
||||||
|
#
|
||||||
|
#Y level to start generating at.
|
||||||
|
#Default: 63
|
||||||
|
#Range: 1 ~ 256
|
||||||
|
RockyStoneY = 63
|
||||||
|
#
|
||||||
|
#Size of the clusters.
|
||||||
|
#Default: 20
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
RockyStoneSize = 20
|
||||||
|
#
|
||||||
|
#Number of times to spawn per chunk.
|
||||||
|
#Default: 10
|
||||||
|
#Range: 1 ~ 100
|
||||||
|
RockyStonePerChunk = 10
|
||||||
|
#
|
||||||
|
#Generate Rocky Stone?
|
||||||
|
GenerateRockyStone = true
|
||||||
|
|
||||||
|
[The_Nether]
|
||||||
|
#
|
||||||
|
#Is the list of biomes a blacklist or whitelist?
|
||||||
|
#When this list is a blacklist, the values in the list will not be in world generation.
|
||||||
|
#When this list is a whitelist, Adding a biome several times gives it more weight in generation and it must contain at least 1 value.
|
||||||
|
#When set to true, datapack biomes will work automatically! When set to false, you will need to manually add datapack entries.
|
||||||
|
#Default: true
|
||||||
|
isBlacklistNether = true
|
||||||
|
#
|
||||||
|
#Nether Biome Size
|
||||||
|
#Default: 3
|
||||||
|
#Range: 0 ~ 10
|
||||||
|
NetherBiomeSize = 3
|
||||||
|
#
|
||||||
|
#Does BYG control The Nether?
|
||||||
|
ControlNether = true
|
||||||
|
#
|
||||||
|
#This works as a whitelist or blacklist depending on the "isBlacklistNether" value.
|
||||||
|
#NO SPACES AFTER COMMAS!
|
||||||
|
#Default: ""
|
||||||
|
BlacklistNether = ""
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
[general]
|
||||||
|
#True if citadel tracks entity properties(freezing, stone mobs, etc) on server. Turn this to false to solve some server lag, may break some stuff.
|
||||||
|
"Track Entities" = true
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#If true, a cow can be squished into a Milk Jar by dropping an anvil on top.
|
||||||
|
cowJarEnabled = true
|
||||||
|
#The amount of milk the cow in a jar generates per tick.
|
||||||
|
#Range: 0.0 ~ 3.4028234663852886E38
|
||||||
|
cowJarMilkPerTick = 0.5
|
||||||
|
#Set this to true if you'd like the sink to require water to be piped in, instead of providing infinite of it.
|
||||||
|
sinkRequiresWater = false
|
||||||
|
#Enabling this will make the kitchen counters have twice as much inventory space.
|
||||||
|
largeCounters = false
|
||||||
|
#Set this to true if you'd like to disallow automation of the oven (pipes and such won't be able to insert/extract)
|
||||||
|
disallowOvenAutomation = false
|
||||||
|
#The fuel multiplier for the cooking oven. Higher values means fuel lasts longer, 1.0 is furnace default.
|
||||||
|
#Range: 0.10000000149011612 ~ 2.0
|
||||||
|
ovenFuelTimeMultiplier = 0.33000001311302185
|
||||||
|
#The cooking time multiplier for the cooking oven. Higher values means it will take longer.
|
||||||
|
#Range: 0.25 ~ 9.0
|
||||||
|
ovenCookTimeMultiplier = 1.0
|
||||||
|
#Set this to true if you'd like the oven to only accept cooking oil as fuel (requires Pam's Harvestcraft)
|
||||||
|
ovenRequiresCookingOil = false
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
#These settings affects both server and client
|
||||||
|
[Common]
|
||||||
|
#Whether or not to keep items in cosmetic armor slots in the event of player death
|
||||||
|
CosArmorKeepThroughDeath = false
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
|
||||||
|
[worldgen]
|
||||||
|
|
||||||
|
#
|
||||||
|
#Modify Create's impact on your terrain
|
||||||
|
[worldgen.v1]
|
||||||
|
#
|
||||||
|
#Prevents all worldgen added by Create from taking effect
|
||||||
|
disableWorldGen = false
|
||||||
|
#
|
||||||
|
#Forward caught TileEntityExceptions to the log at debug level.
|
||||||
|
logTeErrors = false
|
||||||
|
|
||||||
|
[worldgen.v1.copper_ore]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 40
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterCount = 2
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 86
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 18
|
||||||
|
|
||||||
|
[worldgen.v1.weathered_limestone]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 10
|
||||||
|
#No comment
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
clusterChance = 0.03125
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 30
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 128
|
||||||
|
|
||||||
|
[worldgen.v1.zinc_ore]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 15
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterCount = 4
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 70
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 14
|
||||||
|
|
||||||
|
[worldgen.v1.zinc_ore_desert]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 10
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterCount = 5
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 85
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 17
|
||||||
|
|
||||||
|
[worldgen.v1.limestone]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 30
|
||||||
|
#No comment
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
clusterChance = 0.03125
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 70
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 128
|
||||||
|
|
||||||
|
[worldgen.v1.dolomite]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 20
|
||||||
|
#No comment
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
clusterChance = 0.015625
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 70
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 128
|
||||||
|
|
||||||
|
[worldgen.v1.copper_ore_ocean]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 20
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterCount = 4
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 55
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 15
|
||||||
|
|
||||||
|
[worldgen.v1.gabbro]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 20
|
||||||
|
#No comment
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
clusterChance = 0.015625
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 70
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 128
|
||||||
|
|
||||||
|
[worldgen.v1.scoria]
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
minHeight = 0
|
||||||
|
#No comment
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
clusterChance = 0.03125
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
maxHeight = 10
|
||||||
|
#
|
||||||
|
#Whether to spawn this in your World
|
||||||
|
enable = true
|
||||||
|
#No comment
|
||||||
|
#Range: > 0
|
||||||
|
clusterSize = 128
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
#Decorative Blocks Configs
|
||||||
|
[general]
|
||||||
|
#Bonfire Activator (define a resource location
|
||||||
|
"bonfire activator" = "minecraft:blaze_powder"
|
||||||
|
#Disable thatch creation on shearing hay bale
|
||||||
|
"thatch enabled" = true
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
#Common config for Farming for Blockheads
|
||||||
|
[common]
|
||||||
|
#The range within animals can be fed by the feeding trough.
|
||||||
|
#Range: 1 ~ 16
|
||||||
|
feedingTroughRange = 8
|
||||||
|
#The chance for Fertilized Farmland to turn back into regular Farmland (per provided bonus).
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
fertilizerRegressionChance = 0.0
|
||||||
|
#The chance to get a bonus growth when using Red Fertilizer.
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
fertilizerBonusGrowthChance = 1.0
|
||||||
|
#List of names the merchant can have.
|
||||||
|
merchantNames = ["Swap-O-Matic", "Emerald Muncher", "Weathered Salesperson"]
|
||||||
|
#The range at which the chicken nest picks up laid eggs.
|
||||||
|
#Range: 1 ~ 16
|
||||||
|
chickenNestRange = 8
|
||||||
|
#The maximum amount of animals (per type) until the feeding trough stops feeding.
|
||||||
|
#Range: > 1
|
||||||
|
feedingTroughMaxAnimals = 8
|
||||||
|
#The chance to get a bonus crop when using Green Fertilizer.
|
||||||
|
#Range: 0.0 ~ 1.0
|
||||||
|
fertilizerBonusCropChance = 1.0
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Configuration file
|
||||||
|
|
||||||
|
general {
|
||||||
|
# If the recipe book is removed from the game. Server-enforced. [default: true]
|
||||||
|
B:"Remove Recipe Book"=true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Enable forge global version checking
|
||||||
|
versionCheck = true
|
||||||
|
# does the splashscreen run
|
||||||
|
splashscreen = true
|
||||||
|
defaultConfigPath = "defaultconfigs"
|
||||||
|
# max threads for parallel loading : -1 uses Runtime#availableProcessors
|
||||||
|
maxThreads = -1
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue