Compare commits
No commits in common. "master" and "b17ac84693ee25f2f12fcccce060d5a5fbea8157" have entirely different histories.
master
...
b17ac84693
|
@ -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
|
||||
*.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
|
||||
|
||||
Run a test VM with:
|
||||
### Building
|
||||
|
||||
Build the VM with:
|
||||
|
||||
```
|
||||
nix run
|
||||
nixos-rebuild build-vm --flake '.#vm'
|
||||
```
|
||||
|
||||
### Running
|
||||
|
||||
*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
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
Deployment is handled using
|
||||
[deploy-rs](https://github.com/serokell/deploy-rs):
|
||||
Currently the deployment process is fully manual because there is no
|
||||
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,
|
||||
modulesPath,
|
||||
flake-inputs,
|
||||
...
|
||||
}:
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
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/metrics
|
||||
./services/minecraft.nix
|
||||
./services/nextcloud.nix
|
||||
./services/webserver.nix
|
||||
./services/wireguard.nix
|
||||
# ./services/starbound.nix -- Not currently used
|
||||
./services/postgres.nix
|
||||
./nginx.nix
|
||||
./sops.nix
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
local = import ../pkgs {
|
||||
pkgs = prev;
|
||||
lib = prev.lib;
|
||||
};
|
||||
})
|
||||
./ids.nix
|
||||
];
|
||||
|
||||
nix = {
|
||||
# Enable flakes
|
||||
package = pkgs.nixFlakes;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
|
||||
# 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 = {
|
||||
hostName = "tlaternet";
|
||||
|
||||
usePredictableInterfaceNames = false;
|
||||
useDHCP = false;
|
||||
interfaces.eth0.useDHCP = true;
|
||||
|
||||
firewall = {
|
||||
allowedTCPPorts = [
|
||||
# http
|
||||
80
|
||||
443
|
||||
# ssh
|
||||
2222
|
||||
# matrix
|
||||
8448
|
||||
# starbound
|
||||
21025
|
||||
# Minecraft
|
||||
25565
|
||||
|
||||
config.services.coturn.listening-port
|
||||
config.services.coturn.tls-listening-port
|
||||
config.services.coturn.alt-listening-port
|
||||
config.services.coturn.alt-tls-listening-port
|
||||
];
|
||||
|
||||
allowedUDPPorts = [
|
||||
# More minecraft
|
||||
25565
|
||||
|
||||
config.services.coturn.listening-port
|
||||
config.services.coturn.tls-listening-port
|
||||
config.services.coturn.alt-listening-port
|
||||
config.services.coturn.alt-tls-listening-port
|
||||
];
|
||||
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = config.services.coturn.min-port;
|
||||
to = config.services.coturn.max-port;
|
||||
}
|
||||
];
|
||||
};
|
||||
firewall.allowedTCPPorts = [ 80 443 2222 2221 25565 ];
|
||||
};
|
||||
|
||||
systemd.network.enable = true;
|
||||
|
||||
time.timeZone = "Europe/London";
|
||||
|
||||
users.users.tlater = {
|
||||
|
@ -111,37 +38,45 @@
|
|||
openssh.authorizedKeys.keyFiles = [ ../keys/tlater.pub ];
|
||||
};
|
||||
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
allowSFTP = false;
|
||||
ports = [ 2222 ];
|
||||
startWhenNeeded = true;
|
||||
|
||||
settings = {
|
||||
GatewayPorts = "yes";
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
logrotate.enable = true;
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
allowSFTP = false;
|
||||
passwordAuthentication = false;
|
||||
permitRootLogin = "no";
|
||||
ports = [ 2222 ];
|
||||
startWhenNeeded = true;
|
||||
};
|
||||
|
||||
security = {
|
||||
sudo.execWheelOnly = true;
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedTlsSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedProxySettings = true;
|
||||
clientMaxBodySize = "10G";
|
||||
domain = "tlater.net";
|
||||
|
||||
pam = {
|
||||
sshAgentAuth = {
|
||||
enable = true;
|
||||
authorizedKeysFiles = [ "/etc/ssh/authorized_keys.d/%u" ];
|
||||
};
|
||||
services.sudo.sshAgentAuth = true;
|
||||
virtualHosts = let
|
||||
host = port: extra:
|
||||
lib.recursiveUpdate {
|
||||
forceSSL = true;
|
||||
enableACME = 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
|
||||
environment.defaultPackages = [ ];
|
||||
security.acme = {
|
||||
email = "tm@tlater.net";
|
||||
acceptTerms = true;
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.backend = "podman";
|
||||
|
||||
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,415 @@
|
|||
|
||||
[general]
|
||||
#Whether polar bears should target seal mobs.
|
||||
polarBearsAttackSeals = true
|
||||
#Whether bone serpents are neutral or hostile.
|
||||
neutralBoneSerpents = false
|
||||
#Makes eagles teleport back to their owner if they get stuck during controlled flight. Useful for when playing with the Optifine mod, since this mod is the fault of many issues with the falconry system.
|
||||
falconryTeleportsBack = false
|
||||
#List of dimensions in which spawning void worms via mysterious worm items is allowed.
|
||||
voidWormSpawnDimensions = ["minecraft:the_end"]
|
||||
#True if straddleboard enchants are enabled.
|
||||
straddleboardEnchants = true
|
||||
#Whether Crimson Mosquitoes can transform into Warped Moscos if attacking a Mungus or any listed creature.
|
||||
warpedMoscoTransformation = true
|
||||
#Whether wild raccoons steal food from chests.
|
||||
raccoonStealFromChests = true
|
||||
#Whether mimicream can be used to duplicate items.
|
||||
mimicreamRepair = true
|
||||
#Whether acacia blossoms should drop from blocks tagged with #alexsmobs:drops_acacia_blossoms
|
||||
acaciaBlossomsDropFromLeaves = true
|
||||
#Whether lava can be bottled with a right click of a glass bottle.
|
||||
lavaBottleEnabled = true
|
||||
#Maximum world y-level that blobfish can spawn at
|
||||
#Range: 0 ~ 256
|
||||
blobfishSpawnHeight = 38
|
||||
#Whether guster spawns are limited to when it is raining/thundering.
|
||||
limitGusterSpawnsToWeather = true
|
||||
#Whether all players should get an Animal Dictionary when joining the world for the first time.
|
||||
giveBookOnStartup = true
|
||||
#Maximum world y-level that cave centipedes can spawn at
|
||||
#Range: 0 ~ 256
|
||||
caveCentipedeSpawnHeight = 30
|
||||
#Blacklist for items that mimicream cannot make a copy of. Ex: "minecraft:stone_sword", "alexsmobs:blood_sprayer"
|
||||
mimicreamBlacklist = ["alexsmobs:blood_sprayer", "alexsmobs:hemolymph_blaster"]
|
||||
#0 = no mungus biome transformation. 1 = mungus changes blocks, but not chunk's biome. 2 = mungus transforms blocks and biome of chunk.
|
||||
#Range: 0 ~ 2
|
||||
mungusBiomeTransformationType = 2
|
||||
#Max Health of the void worm boss.
|
||||
#Range: 0.0 ~ 1000000.0
|
||||
voidWormMaxHealth = 160.0
|
||||
#All void worm damage is scaled to this.
|
||||
#Range: 0.0 ~ 100.0
|
||||
voidWormDamageModifier = 1.0
|
||||
#Whether the void worm boss is summonable or not, via the mysterious worm item.
|
||||
voidWormSummonable = true
|
||||
#List of all mungus mushrooms, biome transformations and surface blocks. Each is seperated by a |. Add an entry with a block registry name, biome registry name, and block registry name(for the ground).
|
||||
mungusBiomeMatches = ["minecraft:red_mushroom|minecraft:mushroom_fields|minecraft:mycelium", "minecraft:brown_mushroom|minecraft:mushroom_fields|minecraft:mycelium", "minecraft:crimson_fungus|minecraft:crimson_forest|minecraft:crimson_nylium", "minecraft:warped_fungus|minecraft:warped_forest|minecraft:warped_nylium"]
|
||||
#Percent chance for leafcutter ants to break leaves blocks when harvesting. Set to zero so that they can not break any blocks.
|
||||
#Range: 0.0 ~ 1.0
|
||||
leafcutterAntBreakLeavesChance = 0.2
|
||||
#Whether to disable certain aspects of the Lava Vision Potion. Enable if issues with shaders persist.
|
||||
shadersCompat = false
|
||||
#List of extra(non mungus) mobs that will trigger a crimson mosquito to become a warped mosquito. Ex: "minecraft:mooshroom", "alexsmobs:warped_toad"
|
||||
warpedMoscoMobTriggers = [""]
|
||||
#1 out of this number chance for leaves to drop a banana when broken. Fortune is automatically factored in
|
||||
#Range: > 0
|
||||
bananaChance = 200
|
||||
#Max number of ant entities allowed inside a leafcutter anthill.
|
||||
#Range: 2 ~ 100000
|
||||
leafcutterAntColonySize = 20
|
||||
#Whether soul vulture spawns should be restricted solely to the nether fossil structure or to whatever biome is specified in their respective biome config.
|
||||
soulVultureSpawnOnFossil = true
|
||||
#Makes Tarantula Hawks fireproof, perfect if you also want these guys to spawn in the nether.
|
||||
fireproofTarantulaHawk = false
|
||||
#Percent chance for fungus to grow per each leaf a leafcutter ant returns to the colony.
|
||||
#Range: 0.0 ~ 1.0
|
||||
leafcutterAntFungusGrowChance = 0.3
|
||||
#Whether fish oil gives players a special levitation effect.
|
||||
fishOilMeme = true
|
||||
#Whether mimicubes spawns should be restricted solely to the end city structure or to whatever biome is specified in their respective biome config.
|
||||
mimicubeSpawnInEndCity = true
|
||||
#Whether bananas should drop from blocks tagged with #alexsmobs:drops_bananas
|
||||
bananasDropFromLeaves = true
|
||||
#Relative volume of cachalot whales compared to other animals. Note that irl they are the loudest animal. Turn this down if you find their clicks annoying.
|
||||
#Range: 0.0 ~ 10.0
|
||||
cachalotVolume = 3.0
|
||||
#Whether emu should target skeletons.
|
||||
emuTargetSkeletons = true
|
||||
#Lava Opacity for the Lava Vision Potion.
|
||||
#Range: 0.01 ~ 1.0
|
||||
lavaVisionOpacity = 0.65
|
||||
#Whether spiders should target fly mobs.
|
||||
spidersAttackFlies = true
|
||||
#Whether wolves should target moose mobs.
|
||||
wolvesAttackMoose = true
|
||||
#Percent chance for emu leggings to dodge projectile attacks.
|
||||
#Range: 0.0 ~ 1.0
|
||||
emuPantsDodgeChance = 0.45
|
||||
#How many feedings of leaves does a leafcutter colony need in order to regain a worker ant, if below half the max members.
|
||||
#Range: 2 ~ 100000
|
||||
leafcutterAntRepopulateFeedings = 25
|
||||
#Whether wandering traders offer items like acacia blossoms, mosquito larva, crocodile egg, etc.
|
||||
wanderingTraderOffers = true
|
||||
|
||||
[general.spawning]
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
boneSerpentSpawnWeight = 8
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
alligatorSnappingTurtleSpawnRolls = 1
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
frilledSharkSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
stradpoleSpawnRolls = 3
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
mantisShrimpSpawnWeight = 15
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
lobsterSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
spectreSpawnWeight = 10
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
endergradeSpawnWeight = 10
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
sealSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
sunbirdSpawnRolls = 15
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
shoebillSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
sunbirdSpawnWeight = 2
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
raccoonSpawnWeight = 10
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
mungusSpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
mimicubeSpawnWeight = 40
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
blobfishSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
crowSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
tasmanianDevilSpawnWeight = 10
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
grizzlyBearSpawnWeight = 8
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
elephantSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
caveCentipedeSpawnWeight = 8
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
shoebillSpawnWeight = 10
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
sealSpawnWeight = 30
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
baldEagleSpawnWeight = 15
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
kangarooSpawnWeight = 25
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
rattlesnakeSpawnWeight = 12
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
soulVultureSpawnWeight = 30
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
enderiophageSpawnRolls = 2
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
mooseSpawnWeight = 15
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
warpedMoscoSpawnRolls = 1000
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
platypusSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
tarantulaHawkSpawnRolls = 1
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
soulVultureSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
orcaSpawnRolls = 6
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
capuchinMonkeySpawnWeight = 55
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
alligatorSnappingTurtleSpawnWeight = 20
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
boneSeprentSpawnRolls = 40
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
mimicubeSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn. NOTE: By default the warped mosco doesn't spawn in any biomes.
|
||||
#Range: 0 ~ 1000
|
||||
warpedMoscoSpawnWeight = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
cockroachSpawnWeight = 4
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
gazelleSpawnWeight = 40
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
gorillaSpawnWeight = 50
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
flySpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
platypusSpawnWeight = 30
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
warpedToadSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
gorillaSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
snowLeopardSpawnWeight = 20
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
orcaSpawnWeight = 2
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
mimicOctopusSpawnWeight = 9
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
tigerSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
dropbearSpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
crimsonMosquitoSpawnWeight = 15
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
straddlerSpawnWeight = 85
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
hummingbirdSpawnWeight = 39
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
roadrunnerSpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
gusterSpawnWeight = 35
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
endergradeSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
elephantSpawnWeight = 30
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
tasmanianDevilSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
hammerheadSharkSpawnWeight = 8
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
straddlerSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
voidWormSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
gazelleSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
mantisShrimpSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
mungusSpawnWeight = 4
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
voidWormSpawnWeight = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
crocSpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
stradpoleSpawnWeight = 10
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
mooseSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
spectreSpawnRolls = 5
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
caveCentipedeSpawnRolls = 1
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
blobfishSpawnWeight = 30
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
baldEagleSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
tigerSpawnWeight = 100
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
raccoonSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
warpedToadSpawnWeight = 80
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
frilledSharkSpawnWeight = 11
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
emuSpawnWeight = 20
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
kangarooSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
crowSpawnWeight = 10
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
mimicOctopusSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
komodoDragonSpawnWeight = 4
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
flySpawnWeight = 3
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
snowLeopardSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
cachalotWhaleSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
cachalotWhaleSpawnWeight = 2
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
komodoDragonSpawnRolls = 1
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
emuSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
tarantulaHawkSpawnWeight = 6
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
crocodileSpawnWeight = 40
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
gusterSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
cockroachSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
rattlesnakeSpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
roadrunnerSpawnWeight = 15
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
lobsterSpawnWeight = 7
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
capuchinMonkeySpawnRolls = 0
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
dropbearSpawnWeight = 19
|
||||
#Spawn Weight, added to a pool of other mobs for each biome. Higher number = higher chance of spawning. 0 = disable spawn
|
||||
#Range: 0 ~ 1000
|
||||
enderiophageSpawnWeight = 4
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
hummingbirdSpawnRolls = 1
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
grizzlyBearSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
crimsonMosquitoSpawnRolls = 0
|
||||
#Random roll chance to enable mob spawning. Higher number = lower chance of spawning
|
||||
#Range: > 0
|
||||
hammerheadSharkSpawnRolls = 1
|
||||
|
||||
[general.spawning.uniqueSpawning]
|
||||
#Delay (in ticks) between attempts to spawn beached cachalot whales. Default is a single day. Works like wandering traders.
|
||||
#Range: > 0
|
||||
beachedCachalotWhaleSpawnDelay = 24000
|
||||
#Percent chance for leafcutter anthills to spawn as world gen in each chunk. Set to zero to disable spawning.
|
||||
#Range: 0.0 ~ 1.0
|
||||
leafcutterAnthillSpawnChance = 0.004999999888241291
|
||||
#Whether to enable beached cachalot whales to spawn on beaches during thunder storms.
|
||||
beachedCachalotWhales = true
|
||||
#Percent chance increase for each failed attempt to spawn a beached cachalot whale. Higher value = more spawns.
|
||||
#Range: 0 ~ 100
|
||||
beachedCachalotWhaleSpawnChance = 5
|
||||
|
|
@ -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": "forest"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,16 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "beach"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "ocean"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "cold"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:lukewarm_ocean"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:deep_ocean"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:deep_lukewarm_ocean"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,18 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:nether_wastes"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "biomesoplenty:crystalline_chasm"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,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_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,31 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "end"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:the_end"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:end_barrens"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:end_highlands"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:small_end_islands"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,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,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,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_DICT",
|
||||
"negate": false,
|
||||
"value": "savanna"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "mesa"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,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,26 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "ocean"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "hot"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:deep_warm_ocean"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,28 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "river"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": true,
|
||||
"value": "cold"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "biomesoplenty:tundra_bog"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -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,16 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_CATEGORY",
|
||||
"negate": false,
|
||||
"value": "desert"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": true,
|
||||
"value": "savanna"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "forest"
|
||||
},
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": true,
|
||||
"value": "cold"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:jungle_egde"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": true,
|
||||
"value": "minecraft:modified_jungle_edge"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"biomes": [
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:bamboo_jungle"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "BIOME_DICT",
|
||||
"negate": false,
|
||||
"value": "overworld"
|
||||
},
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "minecraft:bamboo_jungle_hills"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "biomesoplenty:bamboo_blossom_grove"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "REGISTRY_NAME",
|
||||
"negate": false,
|
||||
"value": "biomesoplenty:cherry_blossom_grove"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"biomes": []
|
||||
}
|
|
@ -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,212 @@
|
|||
# Configuration file
|
||||
|
||||
armor {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
armor_toughness {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
arrow_catcher {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
attack_speed {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
cleave {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
cold_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
crit_chance {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
crit_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
current_hp_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
damage_chain {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
disengage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
draw_speed {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
eldritch_block {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
enchantability {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
execute {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
fire_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
life_steal {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
loot_pinata {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
magic_arrow {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
max_crit {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
max_health {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
movement_speed {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
omnitool {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
overheal {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 4]
|
||||
I:Weight=4
|
||||
}
|
||||
|
||||
|
||||
piercing {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 0]
|
||||
I:Weight=0
|
||||
}
|
||||
|
||||
|
||||
radius_mining {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
reach_distance {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
shield_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
shield_speed {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 5]
|
||||
I:Weight=5
|
||||
}
|
||||
|
||||
|
||||
snare_hit {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 1]
|
||||
I:Weight=1
|
||||
}
|
||||
|
||||
|
||||
snipe_damage {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 3]
|
||||
I:Weight=3
|
||||
}
|
||||
|
||||
|
||||
spectral_shot {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
spiked_shield {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
teleport_drops {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 2]
|
||||
I:Weight=2
|
||||
}
|
||||
|
||||
|
||||
torch_placement {
|
||||
# The weight of this affix, relative to others that may apply to the same item. [range: 0 ~ 2147483647, default: 4]
|
||||
I:Weight=4
|
||||
}
|
||||
|
||||
|
|
@ -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,222 @@
|
|||
# Configuration file
|
||||
|
||||
affixes {
|
||||
# A list of type overrides for the affix loot system. Format is <itemname>|<type>. Types are SWORD, RANGED, PICKAXE, SHOVEL, AXE, SHIELD [default: [minecraft:stick|SWORD]]
|
||||
S:"Equipment Type Overrides" <
|
||||
minecraft:stick|SWORD
|
||||
>
|
||||
|
||||
# The 1/n chance that a naturally spawned mob will be granted an affix item. 0 to disable. [range: 0 ~ 500000, default: 125]
|
||||
I:"Random Affix Chance"=250
|
||||
}
|
||||
|
||||
|
||||
bosses {
|
||||
S:"Blacklisted Potions" <
|
||||
forbidden_arcanus:spectral_vision
|
||||
>
|
||||
S:"Boss Filler Block"=minecraft:red_sandstone
|
||||
I:"Boss Rarity Offset"=475
|
||||
S:"Boss Spawner Mobs" <
|
||||
3@minecraft:zombie
|
||||
3@minecraft:skeleton
|
||||
2@minecraft:husk
|
||||
2@minecraft:stray
|
||||
1@minecraft:wither_skeleton
|
||||
1@minecraft:pillager
|
||||
>
|
||||
S:"Fire Resistance"=1.0
|
||||
S:"Max Damage Bonus"=4.5
|
||||
S:"Max Health Multiplier"=8.0
|
||||
S:"Max Knockback Resist"=1.0
|
||||
I:"Max Regen Level"=2
|
||||
I:"Max Resistance Level"=3
|
||||
S:"Max Speed Multiplier"=1.4
|
||||
S:"Min Damage Bonus"=2.0
|
||||
S:"Min Health Multiplier"=4.0
|
||||
S:"Min Knockback Resist"=0.65
|
||||
I:"Min Regen Level"=0
|
||||
I:"Min Resistance Level"=0
|
||||
S:"Min Speed Multiplier"=1.1
|
||||
S:"Random Enchantment Chance"=0.45
|
||||
S:"Random Potion Chance"=0.65
|
||||
|
||||
# The 1/n chance that a naturally spawned mob that can see the sky is transformed into a boss. 0 to disable. [range: 0 ~ 500000, default: 85]
|
||||
I:"Surface Boss Chance"=600
|
||||
|
||||
# If a lightning bolt strikes when a surface boss spawn occurs. [default: true]
|
||||
B:"Surface Boss Lightning"=true
|
||||
S:"Water Breathing"=1.0
|
||||
}
|
||||
|
||||
|
||||
"brutal spawners" {
|
||||
S:"Brutal Potion Effects" <
|
||||
minecraft:resistance@2
|
||||
minecraft:fire_resistance@1
|
||||
minecraft:regeneration@1
|
||||
minecraft:speed@2
|
||||
minecraft:water_breathing@1
|
||||
minecraft:strength@1
|
||||
>
|
||||
S:"Brutal Spawner Mobs" <
|
||||
3@minecraft:zombie
|
||||
3@minecraft:skeleton
|
||||
2@minecraft:husk
|
||||
2@minecraft:stray
|
||||
1@minecraft:spider
|
||||
>
|
||||
}
|
||||
|
||||
|
||||
frequencies {
|
||||
S:"Boss Chance"=0.07
|
||||
S:"Brutal Spawner Chance"=0.18
|
||||
S:"Swarm Spawner Chance"=0.2
|
||||
}
|
||||
|
||||
|
||||
frequency {
|
||||
# The number of generation attempts (per chunk) for boss dungeons. [range: 0 ~ 50000, default: 8]
|
||||
I:"Boss Dungeon"=8
|
||||
|
||||
# The number of generation attempts (per chunk) for boss dungeon variant 2. [range: 0 ~ 50000, default: 8]
|
||||
I:"Boss Dungeon Variant 2"=8
|
||||
|
||||
# The number of generation attempts (per chunk) for ore troves. [range: 0 ~ 50000, default: 8]
|
||||
I:"Ore Troves"=8
|
||||
|
||||
# The number of generation attempts (per chunk) for rogue spawners. [range: 0 ~ 50000, default: 4]
|
||||
I:"Rogue Spawners"=4
|
||||
|
||||
# The 1/n chance (per chunk) that a tome tower may attempt generation. 0 = disabled, lower = more chances. [range: 0 ~ 50000, default: 125]
|
||||
I:"Tome Tower"=125
|
||||
}
|
||||
|
||||
|
||||
general {
|
||||
# The biomes that the deadly module will not generate in. [default: [minecraft:warm_ocean], [minecraft:lukewarm_ocean], [minecraft:cold_ocean], [minecraft:frozen_ocean], [minecraft:deep_warm_ocean], [minecraft:deep_frozen_ocean], [minecraft:deep_lukewarm_ocean], [minecraft:deep_cold_ocean], [minecraft:ocean], [minecraft:deep_ocean]]
|
||||
S:"Generation Biome Blacklist" <
|
||||
minecraft:warm_ocean
|
||||
minecraft:lukewarm_ocean
|
||||
minecraft:cold_ocean
|
||||
minecraft:frozen_ocean
|
||||
minecraft:deep_warm_ocean
|
||||
minecraft:deep_frozen_ocean
|
||||
minecraft:deep_lukewarm_ocean
|
||||
minecraft:deep_cold_ocean
|
||||
minecraft:ocean
|
||||
minecraft:deep_ocean
|
||||
>
|
||||
|
||||
# The dimensions that the deadly module will generate in. [default: [overworld]]
|
||||
S:"Generation Dimension Whitelist" <
|
||||
overworld
|
||||
>
|
||||
|
||||
# The 1/n chance that a rogue spawner will generate with a CHEST_VALUABLE instead of it's default chest. 0 to disable. [range: 0 ~ 80000, default: 9]
|
||||
I:"Spawner Rare Loot Chance"=9
|
||||
}
|
||||
|
||||
|
||||
"random spawners" {
|
||||
I:"alexsmobs:bone_serpent"=1
|
||||
I:"alexsmobs:bone_serpent_part"=1
|
||||
I:"alexsmobs:guster"=1
|
||||
I:"alexsmobs:mimicube"=1
|
||||
I:"alexsmobs:soul_vulture"=1
|
||||
I:"alexsmobs:straddler"=1
|
||||
I:"alexsmobs:warped_mosco"=1
|
||||
I:"artifacts:mimic"=1
|
||||
I:"minecraft:blaze"=8
|
||||
I:"minecraft:cave_spider"=8
|
||||
I:"minecraft:creeper"=8
|
||||
I:"minecraft:drowned"=8
|
||||
I:"minecraft:elder_guardian"=8
|
||||
I:"minecraft:ender_dragon"=8
|
||||
I:"minecraft:enderman"=8
|
||||
I:"minecraft:endermite"=8
|
||||
I:"minecraft:evoker"=8
|
||||
I:"minecraft:ghast"=8
|
||||
I:"minecraft:giant"=8
|
||||
I:"minecraft:guardian"=8
|
||||
I:"minecraft:hoglin"=8
|
||||
I:"minecraft:husk"=8
|
||||
I:"minecraft:illusioner"=8
|
||||
I:"minecraft:magma_cube"=8
|
||||
I:"minecraft:phantom"=8
|
||||
I:"minecraft:piglin"=8
|
||||
I:"minecraft:piglin_brute"=8
|
||||
I:"minecraft:pillager"=8
|
||||
I:"minecraft:ravager"=8
|
||||
I:"minecraft:shulker"=8
|
||||
I:"minecraft:silverfish"=8
|
||||
I:"minecraft:skeleton"=8
|
||||
I:"minecraft:slime"=8
|
||||
I:"minecraft:spider"=8
|
||||
I:"minecraft:stray"=8
|
||||
I:"minecraft:vex"=8
|
||||
I:"minecraft:vindicator"=8
|
||||
I:"minecraft:witch"=8
|
||||
I:"minecraft:wither"=8
|
||||
I:"minecraft:wither_skeleton"=8
|
||||
I:"minecraft:zoglin"=8
|
||||
I:"minecraft:zombie"=8
|
||||
I:"minecraft:zombie_villager"=8
|
||||
I:"minecraft:zombified_piglin"=8
|
||||
I:"quark:forgotten"=1
|
||||
I:"quark:wraith"=1
|
||||
I:"quark:wrapped"=1
|
||||
I:"undergarden:brute"=1
|
||||
I:"undergarden:forgotten_guardian"=1
|
||||
I:"undergarden:masticator"=1
|
||||
I:"undergarden:muncher"=1
|
||||
I:"undergarden:nargoyle"=1
|
||||
I:"undergarden:rotbeast"=1
|
||||
I:"undergarden:rotdweller"=1
|
||||
I:"undergarden:rotling"=1
|
||||
I:"undergarden:rotwalker"=1
|
||||
I:"undergarden:sploogie"=1
|
||||
I:"undergarden:stoneborn"=1
|
||||
}
|
||||
|
||||
|
||||
"spawner stats: brutal spawners" {
|
||||
I:"Max Delay"=400
|
||||
I:"Max Nearby Entities"=6
|
||||
I:"Min Delay"=200
|
||||
I:"Player Range"=16
|
||||
I:"Spawn Count"=6
|
||||
I:"Spawn Delay"=20
|
||||
I:"Spawn Range"=4
|
||||
}
|
||||
|
||||
|
||||
"spawner stats: swarm spawners" {
|
||||
I:"Max Delay"=300
|
||||
I:"Max Nearby Entities"=32
|
||||
I:"Min Delay"=75
|
||||
I:"Player Range"=8
|
||||
I:"Spawn Count"=8
|
||||
I:"Spawn Delay"=20
|
||||
I:"Spawn Range"=6
|
||||
}
|
||||
|
||||
|
||||
"swarm spawners" {
|
||||
S:"Swarm Spawner Mobs" <
|
||||
4@minecraft:zombie
|
||||
2@minecraft:skeleton
|
||||
5@minecraft:spider
|
||||
8@minecraft:cave_spider
|
||||
1@minecraft:creeper
|
||||
>
|
||||
}
|
||||
|
||||
|
||||
wanderer {
|
||||
# If the wandering trader may sell affix loot items as a rare trade. [default: true]
|
||||
B:"Affix Trades"=true
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -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,12 @@
|
|||
# Configuration file
|
||||
|
||||
wanderer {
|
||||
# If the generic trade list will be cleared before datapack loaded trades are added. [default: false]
|
||||
B:"Clear Generic Trades"=false
|
||||
|
||||
# If the rare trade list will be cleared before datapack loaded trades are added. [default: false]
|
||||
B:"Clear Rare Trades"=false
|
||||
B:"Enable New Trades"=true
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
[client]
|
||||
#If true, shows the hunger (and saturation if showSaturationHudOverlay is true) that would be restored by food you are currently holding
|
||||
showFoodValuesHudOverlay = true
|
||||
#If true, shows your food exhaustion as a progress bar behind the hunger bars
|
||||
showFoodExhaustionHudUnderlay = true
|
||||
#Alpha value of the flashing icons at their most visible point (1.0 = fully opaque, 0.0 = fully transparent)
|
||||
#Range: 0.0 ~ 1.0
|
||||
maxHudOverlayFlashAlpha = 0.65
|
||||
#If true, health/hunger overlay will shake to match Minecraft's icon animations
|
||||
showVanillaAnimationsOverlay = true
|
||||
#If true, adds a line that shows your hunger, saturation, and exhaustion level in the F3 debug overlay
|
||||
showFoodStatsInDebugOverlay = true
|
||||
#If true, shows the hunger and saturation values of food in its tooltip while holding SHIFT
|
||||
showFoodValuesInTooltip = true
|
||||
#If true, shows the hunger and saturation values of food in its tooltip automatically (without needing to hold SHIFT)
|
||||
showFoodValuesInTooltipAlways = true
|
||||
#If true, shows estimated health restored by food on the health bar
|
||||
showFoodHealthHudOverlay = true
|
||||
#If true, shows your current saturation level overlayed on the hunger bar
|
||||
showSaturationHudOverlay = true
|
||||
#If true, enables the hunger/saturation/health overlays for food in your off-hand
|
||||
showFoodValuesHudOverlayWhenOffhand = true
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
#Affects how common artifacts are (does not affect mimics)
|
||||
#When this is 1, the default artifact spawn rates will be used
|
||||
#Values higher that 1 will decrease spawn rates while values lower than 1 will increase spawn rates
|
||||
#Doubling this value will (roughly) halve the chance a container contains an artifact
|
||||
#Setting this to 10000 will completely prevent artifacts from spawning
|
||||
#When set to 0, every container that can contain artifacts will contain an artifact
|
||||
#Range: 0.0 ~ 10000.0
|
||||
artifact_rarity = 1.0
|
||||
|
||||
[campsite]
|
||||
#The maximum y-level at which a campsite can generate
|
||||
#Range: 1 ~ 255
|
||||
max_y = 45
|
||||
#Whether to use wooden chests from other mods when generating campsites
|
||||
#(keeping this enabled may make it easier to distinguish them from mimics)
|
||||
use_modded_chests = true
|
||||
#List of biome IDs in which campsites are not allowed to generate
|
||||
#End and nether biomes are excluded by default
|
||||
#To blacklist all biomes from a single mod, use "modid:*"
|
||||
biome_blacklist = ["minecraft:void", "undergarden:*", "the_bumblezone:*"]
|
||||
#Probability for a container of a campsite to be replaced by a mimic
|
||||
#Range: 0.0 ~ 1.0
|
||||
mimic_chance = 0.3
|
||||
#The minimum y-level at which a campsite can generate
|
||||
#Range: 1 ~ 255
|
||||
min_y = 1
|
||||
#Probability for an ore vein to generate underneath a campsite
|
||||
#Range: 0.0 ~ 1.0
|
||||
ore_chance = 0.25
|
||||
#Rarity of campsites generating in the world
|
||||
#The chance a campsite generates in a specific chunk is 1/rarity
|
||||
#A rarity of 1 will generate a campsite in every chunk, while 10000 will generate no campsites
|
||||
#Not every attempt at generating a campsite succeeds, this also depends on the density and shape of caves
|
||||
#Range: 1 ~ 10000
|
||||
rarity = 12
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
|
||||
#Values for the minecraft:generic.max_health attribute.
|
||||
[minecraft_generic_max_health]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 1.0
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.follow_range attribute.
|
||||
[minecraft_generic_follow_range]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.knockback_resistance attribute.
|
||||
[minecraft_generic_knockback_resistance]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.movement_speed attribute.
|
||||
[minecraft_generic_movement_speed]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.flying_speed attribute.
|
||||
[minecraft_generic_flying_speed]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.attack_damage attribute.
|
||||
[minecraft_generic_attack_damage]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.attack_knockback attribute.
|
||||
[minecraft_generic_attack_knockback]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.attack_speed attribute.
|
||||
[minecraft_generic_attack_speed]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.armor attribute.
|
||||
[minecraft_generic_armor]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.armor_toughness attribute.
|
||||
[minecraft_generic_armor_toughness]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:generic.luck attribute.
|
||||
[minecraft_generic_luck]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:zombie.spawn_reinforcements attribute.
|
||||
[minecraft_zombie_spawn_reinforcements]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
||||
#Values for the minecraft:horse.jump_strength attribute.
|
||||
[minecraft_horse_jump_strength]
|
||||
#The minimum vallue for the attribute. Changing this may have unforseen consequences.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
min = 4.9E-324
|
||||
#The maximum value for the attribute.
|
||||
#Range: -1.7976931348623157E308 ~ 1.7976931348623157E308
|
||||
max = 65536.0
|
||||
#Whether or not this attribute should be modified.
|
||||
enabled = true
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
|
||||
#General settings for the mod.
|
||||
[general]
|
||||
#Should flint and steel deal fire damage when used as a weapon?
|
||||
ShouldFlintAndSteelDoFireDamage = true
|
||||
#Fixes some fire related damage sources not causing mobs to drop cooked items?
|
||||
fireFromDamagesource = true
|
||||
#How much fire damage should flint and steel do?
|
||||
#Range: > 0
|
||||
flintAndSteelFireDamage = 3
|
||||
#What is the % chance skeletons will shoot flaming arrows while on fire?
|
||||
#Range: 0.0 ~ 1.0
|
||||
flameArrowSkeletonChance = 0.7
|
||||
#How long should Soulfire burn players if they try to punch it out?
|
||||
#Range: > 0
|
||||
soulfireHitBurnTime = 2
|
||||
#Can players put out fire with bottled water?
|
||||
extinguishWithBottledWater = true
|
||||
#Should the fire/burning HUD overlay be hidden if the player has fire immunity?
|
||||
hideFireOverlayWhenImmune = true
|
||||
#Should skeletons shoot flaming arrows while on fire?
|
||||
flameArrowSkeletons = true
|
||||
#Should players be able to put out fire blocks by punching them?
|
||||
punchOutFlames = true
|
||||
#How long should Fire burn players if they try to punch it out?
|
||||
#Range: > 0
|
||||
fireHitBurnTime = 1
|
||||
#Should fire damage spread between mobs when they hurt eachother? Zombies already do this and won't be changed.
|
||||
fireDamageSpreads = true
|
||||
#What is the % chance that fire damage will spread between mobs?
|
||||
#Range: 0.0 ~ 1.0
|
||||
fireDamageSpreadChance = 0.3
|
||||
#Should having fire resistance stop things from being on fire visually?
|
||||
fireResistanceExtinguish = true
|
||||
|
|
@ -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:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": 0.5,
|
||||
"minecraft:polished_blackstone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": 0.5
|
||||
},
|
||||
"defaultBlock": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]"
|
||||
},
|
||||
"cornerSelector": {
|
||||
"entries": {},
|
||||
"defaultBlock": "minecraft:chiseled_polished_blackstone"
|
||||
},
|
||||
"insideSelector": {
|
||||
"entries": {
|
||||
"minecraft:cracked_polished_blackstone_bricks": 0.2
|
||||
},
|
||||
"defaultBlock": "minecraft:polished_blackstone_bricks"
|
||||
},
|
||||
"fenceSelector": {
|
||||
"entries": {
|
||||
"minecraft:polished_blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33,
|
||||
"minecraft:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33,
|
||||
"minecraft:polished_blackstone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]": 0.33
|
||||
},
|
||||
"defaultBlock": "minecraft:blackstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]"
|
||||
},
|
||||
"powerBlock": "minecraft:gold_block",
|
||||
"decorationBlock": "minecraft:yellow_glazed_terracotta[facing=north]",
|
||||
"beamStopBlocks": [
|
||||
"minecraft:obsidian"
|
||||
],
|
||||
"unpoweredBeamColor": {
|
||||
"red": "14",
|
||||
"green": "0c",
|
||||
"blue": "24",
|
||||
"alpha": "FF"
|
||||
},
|
||||
"poweredBeamColor": {
|
||||
"red": "FF",
|
||||
"green": "DC",
|
||||
"blue": "73",
|
||||
"alpha": "FF"
|
||||
},
|
||||
"minY": 35,
|
||||
"maxY": 70,
|
||||
"playerTeleportedMinY": 11,
|
||||
"playerTeleportedMaxY": 30,
|
||||
"spawnChance": 0.1,
|
||||
"spawnDimension": "minecraft:the_nether",
|
||||
"targetDimension": "minecraft:overworld"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": [
|
||||
{
|
||||
"blockSelector": {
|
||||
"entries": {
|
||||
"minecraft:obsidian": 0.1,
|
||||
"minecraft:crying_obsidian": 0.05,
|
||||
"minecraft:gilded_blackstone": 0.05,
|
||||
"minecraft:blackstone": 0.1,
|
||||
"minecraft:netherrack": 0.7
|
||||
},
|
||||
"defaultBlock": "minecraft:cave_air"
|
||||
},
|
||||
"fluidColor": {
|
||||
"red": "19",
|
||||
"green": "00",
|
||||
"blue": "20",
|
||||
"alpha": "FC"
|
||||
},
|
||||
"minY": 10,
|
||||
"maxY": 15,
|
||||
"playerTeleportedMinY": 100,
|
||||
"playerTeleportedMaxY": 120,
|
||||
"spawnChance": 0.05,
|
||||
"spawnDimension": "minecraft:overworld",
|
||||
"targetDimension": "minecraft:the_nether",
|
||||
"spawnPlatformBlock": "minecraft:netherrack"
|
||||
}
|
||||
]
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue