First a warning - This is a big code change. If you are upgrading, please keep a copy of your Epidemic folder and jar in case you want to roll back. Also, due to the size of the update, despite the exhaustive testing I've done you may come across occasional issues that just don't come up in my test world, if you do, please report them and I'll get them fixed asap.
Changes!
Prefix in chat messages can now be changed via the lang.yml file
Data Storage SQLite database is now deprecated. All data will be stored in yml files in a Data folder. If you're an existing user, your data should automatically convert when you start the server up. For new users, you will automatically start with yml files.
Secondary Infections Secondary Infections and its cure of Penicillin in the main config file is being marked for deprecation. It will be replaced with secondary infection options per ailment. This change is not yet in effect, but will be coming in a future version!
Multiple Ailments You can now get multiple ailments at the same time, so having a broken leg wouldn't prevent you from getting the plague etc. You can turn this on/off in the config file
New Symptoms
Clumsiness - You may randomly drop the item in your main hand when symptoms hit, also has a chance to make you leave whatever vehicle you're in (hope you can swim!)
Foot Rot - Any food/drink in your inventory becomes infected and rots away
Gibberish - Any chat you send in-game may randomly be garbled
Mute - Unable to talk in chat
Hallucinations - Can cause you to hear sounds around you randomly and can cause a brief burst of confusion
RemoveXP - Causes the players XP to drop each time symptoms occur
Rust - Causes any iron armor, sword or tools to become damaged each time symptoms occur
Temperature You can now get too hot or cold, this varies by biome, time of day, armor you're wearing, any ailments which may cause fever or chills and if you're near or holding particular types of blocks. Temperature can be turned on/off in the config, and you can exclude certain worlds, for example, if you don't want to use temperature in the Nether, you can disable it there.
Players in Creative mode, in OP or have epidemic.invincible permission will not gain temperature symptoms.
This includes a new command /temp (requires epidemic.temp permission) and /temp info (required epidemic.temp.info permission)
This will show your current temperature on a scale. If you are hot or cold for too long, you may experience symptoms such as slowness, sweating, damage to player, changes to your thirst bar (if enabled).
Temperature is based on: Core temp (checks for armor, if you're on fire and if you're inside), ambient temperature based on biome, time of day and if you are near any blocks with extreme temperatures (ice, lava, fire etc.) and elevation (it gets cold too high up and underground, but hot close to bedrock), and from ailments that cause fever/chills.
Modifiers are listed below. These values may change in upcoming versions based on feedback from users.
Armor modifiers:
Leather/Chainmail/Turtle helmet add 0.5 temperature for each piece of armor
Iron/Gold armor adds 1 temperature for each piece of armor
Diamond armor removes 0.5 temperature for each piece of armor
[Netherite armor will add 0 when 1.16 is released]
Biome modifiers:
(Any biome not listed = 0)
Badlands (and variants) = +3 during day, +4 around noon, -1 at night
Beach = +1
Cold Ocean = -1 during day, -0.5 around noon, -2 at night
Deep Cold Ocean = -2.5 during day, -3 around noon, -3.5 at night
Deep Frozen Ocean = -2.5 during day, -3 around noon, -3.5 at night
Deep Lukewarm Ocean = -2.5 during day, -3 around noon, -3.5 at night
Deep Ocean = -2.5 during day, -3 around noon, -3.5 at night
Desert = +2 during day, +3 around noon, -1 at night
Desert Hills = +2
Desert Lakes = +2
Frozen Oceans = -2.5
Frozen Rivers = -2.5
Ice Spikes = -2.5 during day, -3 around noon, -3.5 at night
Jungle (and variants) = +1 during day, +1.5 around noon, +2.5 at night
Lukewarm Ocean = +1
Mountains (and variants) = -1
Nether = +4
River = -0.5
Snowy Beach = -3
Snowy Mountains = -3
Snowy Taiga = -3
Swamp = +1.5
Taiga (and variants) = -1
The End (and variants) = -4
The Void = -10
Warm Oceans = +1.5
Wooded Badlands = +1
Nearby Block Modifiers
Temperature checks will check all blocks with a 2 block radius, the modifier is based on the distance, so can return one of two different values.
These values are cumulative, so if you're around 1 block of ice, your temperature will drop a little, if you're surrounded by ice, it'll drop a lot. These max out at +10/-10
Error Tracking Serious errors will now display the full stack trace if the player has debug mode enabled
Config/Language File Changes
New users will have a fully formed config and language files created on startup, if you are an existing user, the following will need to be added (NOT replaced completely, just add to). Alternately, if you haven't changed anything in either file, you could delete both files and they will regenerate on startup.
Code (YAML):
# ================================================================================== # Temperature <start> # ================================================================================== # Flag to indicate if temperature should be enabled enable_temp: true
# Number of seconds to check for temperature (time per cycle for symptoms) temp_seconds: 30
# List of worlds to not apply temperature to prevent_temp_worlds: - world_nether
- world_the_end
# Number of seconds to have temperature relief applied for temp_relief_time: 60
# Flag to indicate if players should be warned about temperature extremes temp_warn_players: true
# Temperature Relief # You can add as many relief items in as you'd like # Each one can provide relief for hot or cold (or both) # These relief items are craftable and consumable. # If a potion is used, an empty glass bottle will be returned temp_relief: # Cool water, applies heat relief cool_water: # Item key, MUST be unique # Name as displayed in-game (Color codes can be used) display_name: "Ice cold water" # Item lore (can be multiple lines & color codes can be used) lore: -
"A cool drink to cool you down" # Relief consumed text is the text shown to the player when they # consume the relief item. If "", then no message will be shown # Color codes can be used relief_consumed_text: "That drink hit the spot, you've really cooled down" # Base item is the item it is displayed as in-game base_item: POTION
# Return item is the item that should be returned to the player # If no item, put AIR return_item: GLASS_BOTTLE
# Color is the potion color (only if base_item is POTION) potion_color: AQUA
# If food is true, a food sound is played when consuming the item food: false
# If drink is true, a drink sound is played when consuming the item # (if both food and drink are true, a burp will be played) drink: true
# Recipe is broken out into each crafting table slot # Fill all spaces, if no item, use AIR # All materials listed MUST exist in-game recipe:
top:
left: AIR
center: SNOWBALL
right: AIR
middle:
left: AIR
center: GLASS_BOTTLE
right: AIR
bottom:
left: AIR
center: AIR
right: AIR
# Indicates if it provides relief to being cold cold_relief: false
# Indicates if it provides relief to being hot hot_relief: true
# Sticky egg, provides heat and cold relief sticky_egg: # Item key, MUST be unique # Name as displayed in-game (Color codes can be used) display_name: "Sticky Egg" # Item lore (can be multiple lines & color codes can be used) lore: -
"A sticky egg concoction" # Relief consumed text is the text shown to the player when they # consume the relief item. If "", then no message will be shown # Color codes can be used relief_consumed_text: "It's slimy, but it helps" # Base item is the item it is displayed as in-game base_item: GREEN_DYE
# Return item is the item that should be returned to the player # If no item, put AIR return_item: AIR
# If food is true, a food sound is played when consuming the item food: true
# If drink is true, a drink sound is played when consuming the item # (if both food and drink are true, a burp will be played) drink: true
# Recipe is broken out into each crafting table slot # Fill all spaces, if no item, use AIR # All materials listed MUST exist in-game recipe:
top:
left: AIR
center: SLIME_BALL
right: AIR
middle:
left: AIR
center: EGG
right: AIR
bottom:
left: AIR
center: AIR
right: AIR
# Indicates if it provides relief to being cold cold_relief: true
# Indicates if it provides relief to being hot hot_relief: true
# Hot Chocolate, provides cold relief hot_cocoa: # Item key, MUST be unique # Name as displayed in-game (Color codes can be used) display_name: "Hot Cocoa" # Item lore (can be multiple lines & color codes can be used) lore: -
"A steaming drink of hot cocoa" # Relief consumed text is the text shown to the player when they # consume the relief item. If "", then no message will be shown # Color codes can be used relief_consumed_text: "Warm and sweet, really helps with the cold" # Base item is the item it is displayed as in-game base_item: POTION
# Return item is the item that should be returned to the player # If no item, put AIR return_item: GLASS_BOTTLE
# If food is true, a food sound is played when consuming the item food: false
# If drink is true, a drink sound is played when consuming the item # (if both food and drink are true, a burp will be played) drink: true
# Recipe is broken out into each crafting table slot # Fill all spaces, if no item, use AIR # All materials listed MUST exist in-game recipe:
top:
left: AIR
center: SNOWBALL
right: AIR
middle:
left: COCOA_BEANS
center: GLASS_BOTTLE
right: SUGAR
bottom:
left: AIR
center: BLAZE_POWDER
right: AIR
# Indicates if it provides relief to being cold cold_relief: true
# Indicates if it provides relief to being hot hot_relief: false
Code (YAML):
# Prefix prefix: "&2[&fEpidemic&2]&r "
# Temperature temp_getting_hot: "&cYou are starting to get too hot" temp_getting_cold: "&9You are starting to get too cold" temp_hot_symptom: "&4You are too hot!" temp_cold_symptom: "&1You are too cold!" normal: "Normal" hot: "&cHot" cold: "&9Cold" thermometer_hot: "H" thermometer_cold: "C" temp_info: "Overall: <%level%>,Temperature: <%temp%>, Core: <%core%>, Ambient: <%ambient%>, Ailment(s): <%ailments%>" temp_disabled: "&cTemperature is disabled, unable to use command" temp_no_perm: "&cSorry, you do not have permission to do use that command" temp_usage: "&cSorry, that usage is not supported. Use /temp or /temp info" temp_no_console: "&cSorry, this command cannot be run by console"
# Misc food_rot: "Your food has been tainted and rotted away" mute_player: "&cYou can't talk right now"
Finally, there are a LOT of changes under the hood to improve performance and to plan ahead for future changes.
Coming soon -
1.16 support (this will be job #1 as soon as the Spigot jar is released)
Ailment specific secondary infections
Stats - Recording number of times infected, how often you've infected others etc.
Vaccinations - The syringe is already in-game but has no real use yet (you can draw blood, but can't use it). This will be really fleshed out in an upcoming version where you'll be able to use certain animals to generate vaccinations
Nearby mob afflictions - Spend a lot of time around cows, you may get mad cow disease
Disease tipped arrows and throwable potions - When just coughing on a player isn't enough