├── .gitattributes ├── .gitignore ├── CONTRIBUTORS.txt ├── LICENSE ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── modupdatechecker.json └── src └── main ├── java └── com │ └── charles445 │ └── simpledifficulty │ ├── SimpleDifficulty.java │ ├── api │ ├── SDBlocks.java │ ├── SDCapabilities.java │ ├── SDCompatibility.java │ ├── SDDamageSources.java │ ├── SDEnchantments.java │ ├── SDFluids.java │ ├── SDItems.java │ ├── SDPotions.java │ ├── config │ │ ├── ClientConfig.java │ │ ├── ClientOptions.java │ │ ├── ConfigBase.java │ │ ├── IConfigOption.java │ │ ├── JsonConfig.java │ │ ├── QuickConfig.java │ │ ├── ServerConfig.java │ │ ├── ServerOptions.java │ │ └── json │ │ │ ├── JsonConsumableTemperature.java │ │ │ ├── JsonConsumableThirst.java │ │ │ ├── JsonItemIdentity.java │ │ │ ├── JsonPropertyTemperature.java │ │ │ ├── JsonPropertyValue.java │ │ │ ├── JsonTemperature.java │ │ │ ├── JsonTemperatureIdentity.java │ │ │ └── migrate │ │ │ ├── JsonConsumableTemperatureMigrate.java │ │ │ ├── JsonConsumableThirstMigrate.java │ │ │ └── JsonTemperatureMetadataMigrate.java │ ├── item │ │ └── IItemCanteen.java │ ├── temperature │ │ ├── ITemperatureCapability.java │ │ ├── ITemperatureDynamicModifier.java │ │ ├── ITemperatureModifier.java │ │ ├── ITemperatureTileEntity.java │ │ ├── ITemperatureUtil.java │ │ ├── TemperatureEnum.java │ │ ├── TemperatureRegistry.java │ │ ├── TemperatureUtil.java │ │ ├── TemporaryModifier.java │ │ └── TemporaryModifierGroupEnum.java │ └── thirst │ │ ├── IThirstCapability.java │ │ ├── IThirstUtil.java │ │ ├── ThirstEnum.java │ │ ├── ThirstEnumBlockPos.java │ │ └── ThirstUtil.java │ ├── asm │ ├── CoreLoader.java │ ├── ShadowMap.java │ ├── SimpleDifficultyASM.java │ └── helper │ │ ├── ASMHelper.java │ │ ├── InsnComparator.java │ │ ├── ObfHelper.java │ │ └── ObfRemappingClassWriter.java │ ├── block │ ├── BlockCampfire.java │ ├── BlockFluidBasic.java │ ├── BlockRainCollector.java │ ├── BlockSpit.java │ ├── BlockTemperature.java │ └── IBlockStateIgnore.java │ ├── capability │ ├── TemperatureCapability.java │ ├── TemperatureProvider.java │ ├── TemperatureStorage.java │ ├── ThirstCapability.java │ ├── ThirstProvider.java │ └── ThirstStorage.java │ ├── client │ ├── command │ │ ├── ClientCommandBase.java │ │ ├── ClientCommandCopy.java │ │ └── ClientCommandIdentityCopy.java │ ├── gui │ │ ├── TemperatureGui.java │ │ ├── TemperatureInfoGui.java │ │ └── ThirstGui.java │ ├── particle │ │ ├── ParticleChiller.java │ │ ├── ParticleHeater.java │ │ └── ParticleTemperature.java │ └── render │ │ └── RenderSpit.java │ ├── command │ └── CommandSimpleDifficulty.java │ ├── compat │ ├── CompatController.java │ ├── CompatRightClick.java │ ├── HasShadows.java │ ├── JsonCompatDefaults.java │ ├── ModNames.java │ ├── mod │ │ ├── AUWDynamicModifier.java │ │ ├── AUWModifier.java │ │ ├── BaublesModifier.java │ │ ├── FirstAidCompat.java │ │ ├── HarvestFestivalModifier.java │ │ ├── InspirationsHandler.java │ │ ├── OreExcavationHandler.java │ │ └── SereneSeasonsModifier.java │ └── shadow │ │ └── InspirationsShadow.java │ ├── config │ ├── JsonConfigInternal.java │ ├── JsonFileName.java │ ├── JsonTypeToken.java │ ├── ModConfig.java │ ├── compat │ │ └── ConfigServerCompatibility.java │ └── json │ │ ├── ExtraItem.java │ │ └── MaterialTemperature.java │ ├── debug │ ├── DebugScratchpad.java │ ├── DebugUtil.java │ └── DebugVerifier.java │ ├── enchantment │ └── EnchantmentArmorTemperature.java │ ├── fluid │ └── FluidBasic.java │ ├── handler │ ├── BlockHandler.java │ ├── CapabilityHandler.java │ ├── ConfigHandler.java │ ├── MiscHandler.java │ ├── TemperatureHandler.java │ ├── ThirstHandler.java │ └── TooltipHandler.java │ ├── item │ ├── ItemArmorTemperature.java │ ├── ItemCanteen.java │ ├── ItemDragonCanteen.java │ ├── ItemDrinkBase.java │ ├── ItemIronCanteen.java │ ├── ItemJuice.java │ ├── ItemPurifiedWaterBottle.java │ └── ItemThermometer.java │ ├── network │ ├── MessageConfigLAN.java │ ├── MessageDrinkWater.java │ ├── MessageUpdateConfig.java │ ├── MessageUpdateTemperature.java │ ├── MessageUpdateThirst.java │ └── PacketHandler.java │ ├── potion │ ├── PotionBase.java │ ├── PotionHyperthermia.java │ ├── PotionHypothermia.java │ ├── PotionParasites.java │ ├── PotionResistCold.java │ ├── PotionResistHeat.java │ ├── PotionThermia.java │ └── PotionThirsty.java │ ├── proxy │ ├── ClientProxy.java │ ├── CommonProxy.java │ ├── IProxy.java │ └── ServerProxy.java │ ├── register │ ├── ExtraItemNames.java │ ├── ModCreativeTab.java │ ├── RegisterBlocks.java │ ├── RegisterClientModels.java │ ├── RegisterEnchantments.java │ ├── RegisterFluids.java │ ├── RegisterItems.java │ ├── RegisterPotions.java │ ├── RegisterRecipes.java │ └── crafting │ │ ├── CanteenCharcoalRecipe.java │ │ ├── FixedBrewingOreRecipe.java │ │ └── RecipeUtil.java │ ├── temperature │ ├── ModifierAltitude.java │ ├── ModifierArmor.java │ ├── ModifierBase.java │ ├── ModifierBiome.java │ ├── ModifierBlocksTiles.java │ ├── ModifierDefault.java │ ├── ModifierDimension.java │ ├── ModifierDynamicBase.java │ ├── ModifierHeldItems.java │ ├── ModifierSnow.java │ ├── ModifierSprint.java │ ├── ModifierTemporary.java │ ├── ModifierTime.java │ └── ModifierWet.java │ ├── tileentity │ ├── TileEntitySpit.java │ └── TileEntityTemperature.java │ └── util │ ├── CompatUtil.java │ ├── DamageUtil.java │ ├── OreDictUtil.java │ ├── QuadConsumer.java │ ├── ReflectUtil.java │ ├── RenderUtil.java │ ├── SoundUtil.java │ ├── TriConsumer.java │ ├── VersionDelimiter.java │ ├── WorldUtil.java │ └── internal │ ├── TemperatureUtilInternal.java │ └── ThirstUtilInternal.java └── resources ├── assets └── simpledifficulty │ ├── blockstates │ ├── campfire.json │ ├── chiller.json │ ├── fluids.json │ ├── heater.json │ ├── purifiedwater.json │ ├── rain_collector.json │ └── spit.json │ ├── lang │ ├── en_us.lang │ ├── ru_ru.lang │ └── zh_cn.lang │ ├── models │ ├── block │ │ ├── campfire.json │ │ ├── campfire_burnt.json │ │ ├── campfire_half.json │ │ ├── rain_collector_0.json │ │ ├── rain_collector_1.json │ │ ├── rain_collector_2.json │ │ ├── rain_collector_3.json │ │ ├── spit.json │ │ ├── temper_chill_off.json │ │ ├── temper_chill_on.json │ │ ├── temper_heat_off.json │ │ └── temper_heat_on.json │ └── item │ │ ├── campfire.json │ │ ├── canteen.json │ │ ├── charcoal_filter.json │ │ ├── chiller.json │ │ ├── dragon_canteen.json │ │ ├── dragon_canteen_full.json │ │ ├── frost_powder.json │ │ ├── frost_rod.json │ │ ├── heater.json │ │ ├── ice_boots.json │ │ ├── ice_chestplate.json │ │ ├── ice_chunk.json │ │ ├── ice_helmet.json │ │ ├── ice_leggings.json │ │ ├── iron_canteen.json │ │ ├── iron_canteen_full.json │ │ ├── juice.json │ │ ├── juice │ │ ├── juice_apple.json │ │ ├── juice_beetroot.json │ │ ├── juice_cactus.json │ │ ├── juice_carrot.json │ │ ├── juice_chorus_fruit.json │ │ ├── juice_golden_apple.json │ │ ├── juice_golden_carrot.json │ │ ├── juice_golden_melon.json │ │ ├── juice_melon.json │ │ └── juice_pumpkin.json │ │ ├── magma_chunk.json │ │ ├── purified_water_bottle.json │ │ ├── rain_collector.json │ │ ├── spit.json │ │ ├── thermometer.json │ │ ├── thermometer_01.json │ │ ├── thermometer_02.json │ │ ├── thermometer_03.json │ │ ├── thermometer_04.json │ │ ├── thermometer_05.json │ │ ├── thermometer_06.json │ │ ├── thermometer_07.json │ │ ├── thermometer_08.json │ │ ├── thermometer_09.json │ │ ├── thermometer_10.json │ │ ├── thermometer_11.json │ │ ├── thermometer_12.json │ │ ├── thermometer_13.json │ │ ├── thermometer_14.json │ │ ├── thermometer_15.json │ │ ├── thermometer_16.json │ │ ├── thermometer_17.json │ │ ├── thermometer_18.json │ │ ├── thermometer_19.json │ │ ├── thermometer_20.json │ │ ├── thermometer_21.json │ │ ├── thermometer_22.json │ │ ├── thermometer_23.json │ │ ├── thermometer_24.json │ │ ├── thermometer_25.json │ │ ├── wool_boots.json │ │ ├── wool_chestplate.json │ │ ├── wool_helmet.json │ │ └── wool_leggings.json │ ├── recipes │ ├── _constants.json │ ├── _factories.json │ ├── block_ice.json │ ├── block_ice_packed.json │ ├── block_magma.json │ ├── campfire.json │ ├── canteen_dumped.json │ ├── canteen_empty.json │ ├── canteen_filter.json │ ├── charcoal_filter.json │ ├── chiller.json │ ├── heater.json │ ├── ice_boots.json │ ├── ice_chestplate.json │ ├── ice_helmet.json │ ├── ice_leggings.json │ ├── iron_canteen_dumped.json │ ├── iron_canteen_empty.json │ ├── iron_canteen_filter.json │ ├── juice_apple.json │ ├── juice_beetroot.json │ ├── juice_cactus.json │ ├── juice_carrot.json │ ├── juice_chorus_fruit.json │ ├── juice_golden_apple.json │ ├── juice_golden_carrot.json │ ├── juice_golden_melon.json │ ├── juice_melon.json │ ├── juice_pumpkin.json │ ├── potion_filter.json │ ├── rain_collector.json │ ├── spit.json │ ├── thermometer.json │ ├── wool_boots.json │ ├── wool_chestplate.json │ ├── wool_helmet.json │ └── wool_leggings.json │ └── textures │ ├── blocks │ ├── campfire_burnt.png │ ├── campfire_burnt_top.png │ ├── campfire_half.png │ ├── campfire_half_top.png │ ├── campfire_oak.png │ ├── campfire_oak_top.png │ ├── campfire_stone.png │ ├── rain_collector_b.png │ ├── rain_collector_s.png │ ├── rain_collector_t.png │ ├── rain_collector_tt.png │ ├── spit_all.png │ ├── spit_part.png │ ├── temper_base.png │ ├── temper_chill_off.png │ ├── temper_chill_on.png │ ├── temper_chillsmooth_off.png │ ├── temper_chillsmooth_off2.png │ ├── temper_chillsmooth_on.png │ ├── temper_chillsmooth_on2.png │ ├── temper_cut.png │ ├── temper_heat_off.png │ ├── temper_heat_on.png │ ├── temper_heatsmooth_off.png │ ├── temper_heatsmooth_off2.png │ ├── temper_heatsmooth_on.png │ └── temper_heatsmooth_on2.png │ ├── fluids │ ├── purifiedwater_flow.png │ ├── purifiedwater_flow.png.mcmeta │ ├── purifiedwater_still.png │ └── purifiedwater_still.png.mcmeta │ ├── gui │ ├── icons.png │ ├── temphud.png │ └── thirsthud.png │ ├── items │ ├── canteen.png │ ├── charcoal_filter.png │ ├── dragon_canteen.png │ ├── dragon_canteen_full.png │ ├── frost_powder.png │ ├── frost_rod.png │ ├── ice_boots.png │ ├── ice_chestplate.png │ ├── ice_chunk.png │ ├── ice_helmet.png │ ├── ice_leggings.png │ ├── iron_canteen.png │ ├── iron_canteen_full.png │ ├── juice.png │ ├── juice │ │ ├── juice_apple.png │ │ ├── juice_beetroot.png │ │ ├── juice_cactus.png │ │ ├── juice_carrot.png │ │ ├── juice_chorus_fruit.png │ │ ├── juice_golden_apple.png │ │ ├── juice_golden_carrot.png │ │ ├── juice_golden_melon.png │ │ ├── juice_melon.png │ │ └── juice_pumpkin.png │ ├── magma_chunk.png │ ├── purified_water_bottle.png │ ├── thermometer_00.png │ ├── thermometer_01.png │ ├── thermometer_02.png │ ├── thermometer_03.png │ ├── thermometer_04.png │ ├── thermometer_05.png │ ├── thermometer_06.png │ ├── thermometer_07.png │ ├── thermometer_08.png │ ├── thermometer_09.png │ ├── thermometer_10.png │ ├── thermometer_11.png │ ├── thermometer_12.png │ ├── thermometer_13.png │ ├── thermometer_14.png │ ├── thermometer_15.png │ ├── thermometer_16.png │ ├── thermometer_17.png │ ├── thermometer_18.png │ ├── thermometer_19.png │ ├── thermometer_20.png │ ├── thermometer_21.png │ ├── thermometer_22.png │ ├── thermometer_23.png │ ├── thermometer_24.png │ ├── thermometer_25.png │ ├── wool_boots.png │ ├── wool_chestplate.png │ ├── wool_helmet.png │ └── wool_leggings.png │ ├── models │ └── armor │ │ ├── ice_layer_1.png │ │ ├── ice_layer_2.png │ │ ├── wool_layer_1.png │ │ └── wool_layer_2.png │ ├── particles │ └── particles.png │ └── potions │ ├── default.png │ ├── hyperthermia.png │ ├── hypothermia.png │ ├── parasites.png │ ├── resist_cold.png │ ├── resist_heat.png │ └── thirsty.png ├── mcmod.info └── pack.mcmeta /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #Folders 2 | .gradle/* 3 | .settings/* 4 | bin/* 5 | build/* 6 | eclipse/* 7 | run/* 8 | 9 | #Specific Files 10 | gradlew_build.bat 11 | gradlew_setupdecomp.bat 12 | 13 | 14 | 15 | # Compiled class file 16 | *.class 17 | 18 | # Log file 19 | *.log 20 | 21 | # BlueJ files 22 | *.ctxt 23 | 24 | # Mobile Tools for Java (J2ME) 25 | .mtj.tmp/ 26 | 27 | # Package Files # 28 | *.jar 29 | *.war 30 | *.nar 31 | *.ear 32 | *.zip 33 | *.tar.gz 34 | *.rar 35 | 36 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 37 | hs_err_pid* 38 | 39 | -------------------------------------------------------------------------------- /CONTRIBUTORS.txt: -------------------------------------------------------------------------------- 1 | 2 | List of contributors 3 | 4 | Charles445 - anything not specified below 5 | 6 | - Assets - 7 | Artsydgy/Artsydy - Temperature HUD Textures, Cloth Armor Item Textures, Cloth Armor Model Textures, Frost Powder/Rod Textures 8 | fonnymunkey - Campfire Model 9 | HoontsArt - Dragon Canteen Textures, Iron Canteen Textures, Thermometer Textures 10 | Shivaxi - Thirst HUD Textures 11 | tehmadtitaan - Ice Armor Model Textures, Cloth Armor Model Textures 12 | 13 | - Features - 14 | ichttt - First Aid Compatibility 15 | 16 | - Translations - 17 | lex1975 - Russian (ru_ru.lang) 18 | WeiAL - Chinese (Simplified) (zh_cn.lang) 19 | 20 | - Design / Concepts - 21 | Artsydgy/Artsydy - Cloth Armor, Temperature HUD 22 | fonnymunkey - Campfire 23 | Glitchfiend Team - Created Tough as Nails (which this entire mod is based on) 24 | HoontsArt - Cloth Armor, Dragon Canteen, Iron Canteen, Thermometer 25 | ItsBlueGator - Rain Collector 26 | Shivaxi - Campfire, Chiller and Heater, Dragon Canteen, Frost Powder, Frost Rod, Iron Canteen, Temperature HUD, Thirst HUD, Game Mechanic Ideas and Consultation 27 | tehmadtitaan - Cloth Armor, Ice Armor 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Charles445 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SimpleDifficulty 2 | Difficulty mod based on Tough as Nails 3 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | maven { url = "https://files.minecraftforge.net/maven" } 5 | } 6 | dependencies { 7 | classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' 8 | } 9 | } 10 | apply plugin: 'net.minecraftforge.gradle.forge' 11 | 12 | 13 | version = "1.12.2-0.3.9" 14 | group = "com.charles445.simpledifficulty" // http://maven.apache.org/guides/mini/guide-naming-conventions.html 15 | archivesBaseName = "SimpleDifficulty" 16 | 17 | sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. 18 | compileJava { 19 | sourceCompatibility = targetCompatibility = '1.8' 20 | } 21 | 22 | minecraft { 23 | version = "1.12.2-14.23.5.2838" 24 | runDir = "run" 25 | mappings = "snapshot_20171003" 26 | // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. 27 | } 28 | 29 | dependencies { 30 | 31 | 32 | } 33 | 34 | processResources{ 35 | inputs.property "version", project.version 36 | inputs.property "mcversion", project.minecraft.version 37 | 38 | from(sourceSets.main.resources.srcDirs) { 39 | include 'mcmod.info' 40 | 41 | expand 'version':project.version, 'mcversion':project.minecraft.version 42 | } 43 | 44 | from(sourceSets.main.resources.srcDirs) { 45 | exclude 'mcmod.info' 46 | } 47 | } 48 | 49 | task apiJar(type: Jar){ 50 | from(sourceSets.main.allJava){ 51 | include 'com/charles445/simpledifficulty/api/**' 52 | } 53 | 54 | classifier = 'api' 55 | } 56 | 57 | artifacts { 58 | archives apiJar 59 | } 60 | 61 | jar { 62 | manifest 63 | { 64 | attributes "FMLCorePlugin": "com.charles445.simpledifficulty.asm.CoreLoader" 65 | attributes "FMLCorePluginContainsFMLMod": "com.charles445.simpledifficulty.SimpleDifficulty" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Sets default memory used for gradle commands. Can be overridden by user or command line properties. 2 | # This is required to provide enough memory for the Minecraft decompilation process. 3 | org.gradle.jvmargs=-Xmx3G 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 14 12:28:28 PDT 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip 7 | -------------------------------------------------------------------------------- /modupdatechecker.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "https://www.curseforge.com/minecraft/mc-mods/simpledifficulty/files", 3 | "promos": { 4 | "1.12.2-latest": "0.3.9", 5 | "1.12.2-recommended": "0.3.9" 6 | }, 7 | "1.12.2": { 8 | "0.3.9": "Infinite Purified Config, Inspirations Fix", 9 | "0.3.8": "Inspirations, Stronger Heater, Dimensions, Fixes", 10 | "0.3.7": "Stackable Drinks, Iron Canteen, Art, Extra Items", 11 | "0.3.6": "Campfire Fixes, Scaling Damage, JSON ReadOnly Compatibility", 12 | "0.3.5": "Massive Art Update, Config, Russian", 13 | "0.3.4": "Campfire Spit Blacklist, More CraftTweaker Compatibility, Chinese (Simplified) Update", 14 | "0.3.3": "Canteen Fixes, Potion Icons", 15 | "0.3.2": "Campfire Spit, Baubles, Parasites, More Config, Canteen API", 16 | "0.3.1": "Chinese (Simplified), some API fixes for modders", 17 | "0.3.0": "Rustic, Pyrotech, cauldron drinking, lots of stuff, check CurseForge for details", 18 | "0.2.4": "Hotfix for crash on server start that's been there since 0.1.0, oops", 19 | "0.2.3": "OreExcavation, Tinker's Construct, Ice Armor reskin, Thermomter HUD config, bug fixes", 20 | "0.2.2": "ArmorUnderwear, HarvestCraft, Harvest Festival, Held Item Temperature, Thirst Config, Help commands", 21 | "0.2.1": "Easy in-game JSON editing and saving!", 22 | "0.2.0": "Stacking temperatures, json changes, check CurseForge for details", 23 | "0.1.1": "Update Checker, Mod Compatibility, Thermometer HUD, Configurable mod water temperatures", 24 | "0.1.0": "Initial Release" 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDBlocks.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraft.block.Block; 7 | 8 | public class SDBlocks 9 | { 10 | //Fluid Blocks are stored in the SDFluids class 11 | 12 | public static final Map blocks = new LinkedHashMap(); 13 | 14 | public static Block campfire; 15 | public static Block rainCollector; 16 | 17 | public static Block heater; 18 | public static Block chiller; 19 | 20 | public static Block spit; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDCapabilities.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import com.charles445.simpledifficulty.api.temperature.ITemperatureCapability; 4 | import com.charles445.simpledifficulty.api.thirst.IThirstCapability; 5 | 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraftforge.common.capabilities.Capability; 8 | import net.minecraftforge.common.capabilities.CapabilityInject; 9 | 10 | public class SDCapabilities 11 | { 12 | @CapabilityInject(ITemperatureCapability.class) 13 | public static final Capability TEMPERATURE = null; 14 | 15 | public static final String TEMPERATURE_IDENTIFIER = "temperature"; 16 | 17 | @CapabilityInject(IThirstCapability.class) 18 | public static final Capability THIRST = null; 19 | 20 | public static final String THIRST_IDENTIFIER = "thirst"; 21 | 22 | /** 23 | * Gets the temperature capability for a player 24 | * @param player 25 | * @return ITemperatureCapability 26 | */ 27 | public static ITemperatureCapability getTemperatureData(EntityPlayer player) 28 | { 29 | return player.getCapability(TEMPERATURE, null); 30 | } 31 | 32 | /** 33 | * Gets the thirst capability for a player 34 | * @param player 35 | * @return IThirsteCapability 36 | */ 37 | public static IThirstCapability getThirstData(EntityPlayer player) 38 | { 39 | return player.getCapability(THIRST, null); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDCompatibility.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class SDCompatibility 7 | { 8 | /** 9 | * Whether the default thirst display should be rendered. 10 | *
11 | * Mods that replace the thirst display should set this to false! 12 | *
13 | */ 14 | public static boolean defaultThirstDisplay = true; 15 | 16 | /** 17 | * Don't change this directly, use {@link #disableBuiltInModJsonConfiguration(String) disableBuiltInModJsonConfiguration} 18 | *
19 | */ 20 | public static List disabledDefaultJson = new ArrayList(); 21 | 22 | /** 23 | * Don't change this directly, use {@link #disableBuiltInModCompatibility(String) disableBuiltInModCompatibility} 24 | *
25 | */ 26 | public static List disabledCompletely = new ArrayList(); 27 | 28 | /** 29 | * Call this in preInit or init with your mod's modid.
30 | * SimpleDifficulty won't automatically make settings for your mod.
31 | * This is useful if you want to make defaults yourself. 32 | * @param modid 33 | */ 34 | public static void disableBuiltInModJsonConfiguration(String modid) 35 | { 36 | disabledDefaultJson.add(modid); 37 | } 38 | 39 | /** 40 | * Call this in preInit or init with your mod's modid
41 | * SimpleDifficulty will stop automatically being compatible with your mod.
42 | * This is useful if you want to make the mod compatibility in your own way!
43 | * NOTE that this will disable any built in mod json configuration as well. 44 | */ 45 | public static void disableBuiltInModCompatibility(String modid) 46 | { 47 | disabledDefaultJson.add(modid); 48 | disabledCompletely.add(modid); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDDamageSources.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import net.minecraft.util.DamageSource; 4 | 5 | public class SDDamageSources 6 | { 7 | public static final DamageSource DEHYDRATION = (new DamageSource("dehydration")).setDamageBypassesArmor().setDamageIsAbsolute(); 8 | public static final DamageSource HYPERTHERMIA = (new DamageSource("hyperthermia")).setDamageBypassesArmor(); 9 | public static final DamageSource HYPOTHERMIA = (new DamageSource("hypothermia")).setDamageBypassesArmor(); 10 | public static final DamageSource PARASITES = (new DamageSource("parasites")).setDamageBypassesArmor().setMagicDamage(); 11 | 12 | //Inspirations 13 | public static final DamageSource INSPIRATIONS_CAULDRON_BURN = (new DamageSource("inspirationscauldronburn")).setDamageBypassesArmor().setFireDamage(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDEnchantments.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraft.enchantment.Enchantment; 7 | 8 | public class SDEnchantments 9 | { 10 | public static final Map enchantments = new LinkedHashMap(); 11 | 12 | public static Enchantment chilling; 13 | public static Enchantment heating; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDFluids.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraftforge.fluids.BlockFluidBase; 7 | import net.minecraftforge.fluids.Fluid; 8 | 9 | public class SDFluids 10 | { 11 | public static final Map fluids = new LinkedHashMap(); 12 | public static final Map fluidBlocks = new LinkedHashMap(); 13 | 14 | public static Fluid purifiedWater; 15 | 16 | public static BlockFluidBase blockPurifiedWater; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDItems.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraft.item.Item; 7 | import net.minecraft.item.ItemArmor.ArmorMaterial; 8 | 9 | public class SDItems 10 | { 11 | public static final Map armorMaterials = new LinkedHashMap(); 12 | public static final Map items = new LinkedHashMap(); 13 | 14 | public static ArmorMaterial woolArmorMaterial; 15 | public static ArmorMaterial iceArmorMaterial; 16 | 17 | public static Item canteen; 18 | public static Item ironCanteen; 19 | public static Item charcoalFilter; 20 | public static Item juice; 21 | public static Item purifiedWaterBottle; 22 | 23 | public static Item ice_chunk; 24 | public static Item magma_chunk; 25 | 26 | public static Item thermometer; 27 | 28 | public static Item wool_helmet; 29 | public static Item wool_chestplate; 30 | public static Item wool_leggings; 31 | public static Item wool_boots; 32 | 33 | public static Item ice_helmet; 34 | public static Item ice_chestplate; 35 | public static Item ice_leggings; 36 | public static Item ice_boots; 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/SDPotions.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | import net.minecraft.potion.Potion; 7 | import net.minecraft.potion.PotionType; 8 | 9 | public class SDPotions 10 | { 11 | public static final Map potions = new LinkedHashMap(); 12 | public static final Map potionTypes = new LinkedHashMap(); 13 | 14 | public static Potion hyperthermia; 15 | public static Potion hypothermia; 16 | public static Potion thirsty; 17 | public static Potion parasites; 18 | 19 | public static Potion cold_resist; 20 | public static Potion heat_resist; 21 | 22 | public static PotionType cold_resist_type; 23 | public static PotionType long_cold_resist_type; 24 | public static PotionType heat_resist_type; 25 | public static PotionType long_heat_resist_type; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/ClientConfig.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | public class ClientConfig extends ConfigBase 4 | { 5 | 6 | /* 7 | * Client Configuration 8 | * 9 | * Example Usage: 10 | * 11 | * boolean clientDebug = ClientConfig.instance.getBoolean(ClientOptions.DEBUG); 12 | */ 13 | 14 | public static ClientConfig instance = new ClientConfig(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/ClientOptions.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | public enum ClientOptions implements IConfigOption 4 | { 5 | /*Boolean*/ DEBUG ("debug"), 6 | /*Boolean*/ DRAW_THIRST_SATURATION ("drawThirstSaturation"), 7 | /*Boolean*/ ENABLE_THERMOMETER ("enableThermometer"), 8 | /*Boolean*/ ALTERNATE_TEMP ("alternateTemp"), 9 | /*Boolean*/ HUD_THERMOMETER ("hudThermometer"), 10 | /*Integer*/ HUD_THERMOMETERX ("hudThermometerX"), 11 | /*Integer*/ HUD_THERMOMETERY ("hudThermometerY"), 12 | /*Integer*/ TEMPERATURE_READOUT ("temperatureReadout"), 13 | /*Boolean*/ CLASSICHUD_TEMPERATURE ("classicHUDTemperature"), 14 | /*Boolean*/ CLASSICHUD_THIRST ("classicHUDThirst"), 15 | /*Boolean*/ HEATER_PARTICLES ("heaterParticles"); 16 | 17 | String name; 18 | 19 | private ClientOptions(String name) 20 | { 21 | this.name=name; 22 | } 23 | 24 | @Override 25 | public String getName() 26 | { 27 | return name; 28 | } 29 | 30 | public String toString() 31 | { 32 | return this.getName(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/ConfigBase.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public abstract class ConfigBase 7 | { 8 | public final Map values = new HashMap(); 9 | 10 | public boolean getBoolean(IConfigOption option) 11 | { 12 | return Boolean.valueOf(values.get(option.getName())); 13 | } 14 | 15 | public int getInteger(IConfigOption option) 16 | { 17 | return Integer.valueOf(values.get(option.getName())); 18 | } 19 | 20 | public void put(IConfigOption option, Object obj) 21 | { 22 | values.put(option.getName(), ""+obj); 23 | QuickConfig.updateValues(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/IConfigOption.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | public interface IConfigOption 4 | { 5 | public String getName(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/QuickConfig.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | public class QuickConfig 4 | { 5 | //Alternative for commonly used config, should be convenient and have somewhat faster performance 6 | 7 | private static boolean temperatureEnabled; 8 | private static boolean thirstEnabled; 9 | 10 | public static boolean isTemperatureEnabled() 11 | { 12 | return temperatureEnabled; 13 | } 14 | 15 | public static boolean isThirstEnabled() 16 | { 17 | return thirstEnabled; 18 | } 19 | 20 | protected static void updateValues() 21 | { 22 | temperatureEnabled = ServerConfig.instance.getBoolean(ServerOptions.TEMPERATURE_ENABLED); 23 | thirstEnabled = ServerConfig.instance.getBoolean(ServerOptions.THIRST_ENABLED); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/ServerConfig.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | public class ServerConfig extends ConfigBase 6 | { 7 | 8 | /* 9 | * Server Configuration 10 | * 11 | * Example Usage: 12 | * 13 | * boolean serverDebug = ServerConfig.instance.getBoolean(ServerOptions.DEBUG); 14 | */ 15 | 16 | public static ServerConfig instance = new ServerConfig(); 17 | 18 | /** 19 | * (Don't use this!)
20 | * Updates the ServerConfig instance with the values from the compound 21 | */ 22 | public void updateValues(NBTTagCompound compound) 23 | { 24 | for(String key : compound.getKeySet()) 25 | { 26 | if(values.containsKey(key)) 27 | { 28 | String newValue = compound.getString(key); 29 | values.put(key, newValue); 30 | } 31 | } 32 | 33 | QuickConfig.updateValues(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/ServerOptions.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config; 2 | 3 | public enum ServerOptions implements IConfigOption 4 | { 5 | /*Boolean*/ DEBUG ("debug"), 6 | /*Boolean*/ THIRST_ENABLED ("thirstEnabled"), 7 | /*Boolean*/ THIRST_DRINK_BLOCKS ("thirstDrinkBlocks"), 8 | /*Boolean*/ THIRST_DRINK_RAIN ("thirstDrinkRain"), 9 | /*Boolean*/ PEACEFUL_DANGER ("peacefulDanger"), 10 | /*Boolean*/ TEMPERATURE_ENABLED ("temperatureEnabled"), 11 | /*Boolean*/ TEMPERATURE_TE_ENABLED ("temperatureTEEnabled"), 12 | /*Integer*/ CANTEEN_DOSES ("canteenDoses"), 13 | /*Boolean*/ STRICT_HEATERS ("strictHeaters"), 14 | /*Integer*/ IRON_CANTEEN_DOSES ("ironCanteenDoses"), 15 | /*Boolean*/ INFINITE_PURIFIED_WATER ("infinitePurifiedWater"); 16 | 17 | 18 | String name; 19 | 20 | private ServerOptions(String name) 21 | { 22 | this.name=name; 23 | } 24 | 25 | @Override 26 | public String getName() 27 | { 28 | return name; 29 | } 30 | 31 | public String toString() 32 | { 33 | return this.getName(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/JsonConsumableTemperature.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json; 2 | 3 | import java.util.Locale; 4 | 5 | import javax.annotation.Nullable; 6 | 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.nbt.NBTTagCompound; 9 | 10 | public class JsonConsumableTemperature 11 | { 12 | public JsonItemIdentity identity; 13 | 14 | public String group; 15 | public float temperature; 16 | public int duration; 17 | 18 | public JsonConsumableTemperature(String group, float temperature, int duration, int metadata) 19 | { 20 | this(group, temperature, duration, new JsonItemIdentity(metadata)); 21 | } 22 | 23 | public JsonConsumableTemperature(String group, float temperature, int duration, int metadata, String nbt) 24 | { 25 | this(group,temperature,duration, new JsonItemIdentity(metadata, nbt)); 26 | } 27 | 28 | public JsonConsumableTemperature(String group, float temperature, int duration, JsonItemIdentity identity) 29 | { 30 | this.temperature = temperature; 31 | this.duration = duration; 32 | this.group = group.toLowerCase(Locale.ENGLISH); 33 | this.identity = identity; 34 | } 35 | 36 | 37 | //Identity matching 38 | 39 | public boolean matches(ItemStack stack) 40 | { 41 | return identity.matches(stack); 42 | } 43 | 44 | public boolean matches(JsonItemIdentity sentIdentity) 45 | { 46 | return identity.matches(sentIdentity); 47 | } 48 | 49 | public boolean matches(int metadata) 50 | { 51 | return identity.matches(metadata); 52 | } 53 | 54 | public boolean matches(int metadata, @Nullable NBTTagCompound compound) 55 | { 56 | return identity.matches(metadata, compound); 57 | } 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/JsonConsumableThirst.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json; 2 | 3 | import javax.annotation.Nullable; 4 | 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.nbt.NBTTagCompound; 7 | 8 | public class JsonConsumableThirst 9 | { 10 | public JsonItemIdentity identity; 11 | 12 | public int amount; 13 | public float saturation; 14 | public float thirstyChance; 15 | 16 | public JsonConsumableThirst(int amount, float saturation, float thirstyChance, int metadata) 17 | { 18 | this(amount, saturation, thirstyChance, new JsonItemIdentity(metadata)); 19 | } 20 | 21 | public JsonConsumableThirst(int amount, float saturation, float thirstyChance, int metadata, String nbt) 22 | { 23 | this(amount, saturation, thirstyChance, new JsonItemIdentity(metadata, nbt)); 24 | } 25 | 26 | public JsonConsumableThirst(int amount, float saturation, float thirstyChance, JsonItemIdentity identity) 27 | { 28 | this.amount = amount; 29 | this.saturation = saturation; 30 | this.thirstyChance = thirstyChance; 31 | this.identity = identity; 32 | } 33 | 34 | //Identity matching 35 | 36 | public boolean matches(ItemStack stack) 37 | { 38 | return identity.matches(stack); 39 | } 40 | 41 | public boolean matches(JsonItemIdentity sentIdentity) 42 | { 43 | return identity.matches(sentIdentity); 44 | } 45 | 46 | public boolean matches(int metadata) 47 | { 48 | return identity.matches(metadata); 49 | } 50 | 51 | public boolean matches(int metadata, @Nullable NBTTagCompound compound) 52 | { 53 | return identity.matches(metadata, compound); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/JsonPropertyValue.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json; 2 | 3 | public class JsonPropertyValue 4 | { 5 | public String property; 6 | public String value; 7 | 8 | public JsonPropertyValue(String property, String value) 9 | { 10 | this.property = property; 11 | this.value = value; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/JsonTemperature.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class JsonTemperature 6 | { 7 | @SerializedName("temperature") 8 | public float temperature; 9 | 10 | public JsonTemperature(float temperature) 11 | { 12 | this.temperature = temperature; 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/JsonTemperatureIdentity.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json; 2 | 3 | import javax.annotation.Nullable; 4 | 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.nbt.NBTTagCompound; 7 | 8 | public class JsonTemperatureIdentity 9 | { 10 | public JsonItemIdentity identity; 11 | 12 | public float temperature; 13 | 14 | public JsonTemperatureIdentity(float temperature, int metadata) 15 | { 16 | this(temperature, new JsonItemIdentity(metadata)); 17 | } 18 | 19 | public JsonTemperatureIdentity(float temperature, int metadata, String nbt) 20 | { 21 | this(temperature, new JsonItemIdentity(metadata, nbt)); 22 | } 23 | 24 | public JsonTemperatureIdentity(float temperature, JsonItemIdentity identity) 25 | { 26 | this.temperature = temperature; 27 | this.identity = identity; 28 | } 29 | 30 | 31 | 32 | //Identity matching 33 | 34 | public boolean matches(ItemStack stack) 35 | { 36 | return identity.matches(stack); 37 | } 38 | 39 | public boolean matches(JsonItemIdentity sentIdentity) 40 | { 41 | return identity.matches(sentIdentity); 42 | } 43 | 44 | public boolean matches(int metadata) 45 | { 46 | return identity.matches(metadata); 47 | } 48 | 49 | public boolean matches(int metadata, @Nullable NBTTagCompound compound) 50 | { 51 | return identity.matches(metadata, compound); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/migrate/JsonConsumableTemperatureMigrate.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json.migrate; 2 | 3 | import java.util.Locale; 4 | 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class JsonConsumableTemperatureMigrate 8 | { 9 | public int metadata; 10 | public String group; 11 | public float temperature; 12 | public int duration; 13 | 14 | public JsonConsumableTemperatureMigrate(String group, float temperature, int metadata, int duration) 15 | { 16 | this.temperature = temperature; 17 | this.metadata = metadata; 18 | this.duration = duration; 19 | this.group = group.toLowerCase(Locale.ENGLISH); 20 | } 21 | 22 | public boolean matches(ItemStack stack) 23 | { 24 | return metadata == -1 || metadata == 32767 || metadata == stack.getMetadata(); 25 | } 26 | 27 | public boolean matches(int meta) 28 | { 29 | return metadata == -1 || metadata == 32767 || metadata == meta; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/migrate/JsonConsumableThirstMigrate.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json.migrate; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class JsonConsumableThirstMigrate 6 | { 7 | public int metadata; 8 | public int amount; 9 | public float saturation; 10 | public float thirstyChance; 11 | 12 | public JsonConsumableThirstMigrate(int metadata, int amount, float saturation, float thirstyChance) 13 | { 14 | this.metadata = metadata; 15 | this.amount = amount; 16 | this.saturation = saturation; 17 | this.thirstyChance = thirstyChance; 18 | } 19 | 20 | public boolean matches(ItemStack stack) 21 | { 22 | return metadata == -1 || metadata == 32767 || metadata == stack.getMetadata(); 23 | } 24 | 25 | public boolean matches(int meta) 26 | { 27 | return metadata == -1 || metadata == 32767 || metadata == meta; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/config/json/migrate/JsonTemperatureMetadataMigrate.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.config.json.migrate; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class JsonTemperatureMetadataMigrate 6 | { 7 | public int metadata; 8 | public float temperature; 9 | 10 | public JsonTemperatureMetadataMigrate(int metadata, float temperature) 11 | { 12 | this.metadata = metadata; 13 | this.temperature = temperature; 14 | } 15 | 16 | public boolean matches(ItemStack stack) 17 | { 18 | return metadata == -1 || metadata == 32767 || metadata == stack.getMetadata(); 19 | } 20 | 21 | public boolean matches(int meta) 22 | { 23 | return metadata == -1 || metadata == 32767 || metadata == meta; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/ITemperatureCapability.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import com.google.common.collect.ImmutableMap; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.world.World; 7 | import net.minecraftforge.fml.common.gameevent.TickEvent; 8 | 9 | public interface ITemperatureCapability 10 | { 11 | public int getTemperatureLevel(); 12 | public int getTemperatureTickTimer(); 13 | public int getTemperatureDamageCounter(); 14 | public ImmutableMap getTemporaryModifiers(); 15 | 16 | public void setTemperatureLevel(int temperature); 17 | public void setTemperatureTickTimer(int ticktimer); 18 | public void setTemporaryModifier(String name, float temperature, int duration); 19 | public void setTemperatureDamageCounter(int damagecounter); 20 | 21 | public void addTemperatureLevel(int temperature); 22 | public void addTemperatureTickTimer(int ticktimer); 23 | public void addTemperatureDamageCounter(int damagecounter); 24 | 25 | public void clearTemporaryModifiers(); 26 | 27 | /** 28 | * Returns the capability's matching TemperatureEnum enum 29 | * @return TemperatureEnum for the temperature 30 | */ 31 | public TemperatureEnum getTemperatureEnum(); 32 | 33 | /** 34 | * (Don't use this!)
35 | * Runs a tick update for the player's temperature capability 36 | * @param player 37 | * @param world 38 | * @param phase 39 | */ 40 | public void tickUpdate(EntityPlayer player, World world, TickEvent.Phase phase); 41 | 42 | /** 43 | * (Don't use this!)
44 | * Checks if the capability needs an update 45 | * @return boolean has temperature changed 46 | */ 47 | public boolean isDirty(); 48 | /** 49 | * (Don't use this!)
50 | * Sets the capability as updated 51 | */ 52 | public void setClean(); 53 | 54 | /** 55 | * (Don't use this!)
56 | * Gets the current tick of the packet timer 57 | * @return int packetTimer 58 | */ 59 | public int getPacketTimer(); 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/ITemperatureDynamicModifier.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.world.World; 6 | 7 | /** 8 | * Temperature Modifier that runs after other modifiers.
9 | * It can take the old temperature and replace it with a new one.
10 | * This lets it make smart decisions, but should be used sparingly,
11 | * as multiple dynamic modifiers conflict and may create unexpected results! 12 | */ 13 | public interface ITemperatureDynamicModifier 14 | { 15 | /** 16 | * Temperature change that relies on the player
17 | * Takes the old temperature and replaces it with a new one 18 | * @param player 19 | * @param currentTemperature 20 | * @return newTemperature 21 | */ 22 | public float applyDynamicPlayerInfluence(EntityPlayer player, float currentTemperature); 23 | 24 | /** 25 | * Temperature change that relies on the world
26 | * Takes the old temperature and replaces it with a new one 27 | * @param world 28 | * @param pos 29 | * @return temperature influence on the world 30 | */ 31 | public float applyDynamicWorldInfluence(World world, BlockPos pos, float currentTemperature); 32 | 33 | /** 34 | * The name of the modifier, must be unique!
35 | * Adding your Mod ID to this is a good idea 36 | * @return modifier name 37 | */ 38 | public String getName(); 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/ITemperatureModifier.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import javax.annotation.Nullable; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.world.World; 8 | 9 | public interface ITemperatureModifier 10 | { 11 | /** 12 | * Temperature change that relies on the player 13 | * @param player 14 | * @return temperature influence on the player 15 | */ 16 | public float getPlayerInfluence(EntityPlayer player); 17 | 18 | /** 19 | * Temperature change that relies on the world 20 | * @param world 21 | * @param pos 22 | * @return temperature influence on the world 23 | */ 24 | public float getWorldInfluence(World world, BlockPos pos); 25 | 26 | /** 27 | * The name of the modifier, must be unique!
28 | * Adding your Mod ID to this is a good idea 29 | * @return modifier name 30 | */ 31 | public String getName(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/ITemperatureTileEntity.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | import net.minecraft.world.World; 5 | 6 | public interface ITemperatureTileEntity 7 | { 8 | /** 9 | * Returns the temperature effect this TileEntity has on the block at targetPos.
10 | * 11 | * @param targetPos The BlockPos requesting the temperature influence 12 | * @param distance The distanceSq result from the targetPos and the TileEntity's BlockPos 13 | * @return float Temperature change 14 | */ 15 | public float getInfluence(BlockPos targetPos, double distance); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/ITemperatureUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.util.math.BlockPos; 6 | import net.minecraft.world.World; 7 | 8 | public interface ITemperatureUtil 9 | { 10 | public int getPlayerTargetTemperature(EntityPlayer player); 11 | 12 | public int getWorldTemperature(World world, BlockPos pos); 13 | 14 | public int clampTemperature(int temperature); 15 | 16 | public TemperatureEnum getTemperatureEnum(int temp); 17 | 18 | public void setArmorTemperatureTag(final ItemStack stack, float temperature); 19 | 20 | public float getArmorTemperatureTag(final ItemStack stack); 21 | 22 | public void removeArmorTemperatureTag(final ItemStack stack); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/TemperatureEnum.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import net.minecraft.util.math.MathHelper; 4 | 5 | public enum TemperatureEnum 6 | { 7 | //Must be in order 8 | //temperature <= threshold is a match 9 | //For example, HOT = 15 - 19 10 | 11 | FREEZING(0,5), 12 | COLD(6,10), 13 | NORMAL(11,14), 14 | HOT(15,19), 15 | BURNING(20,25); 16 | 17 | private int lowerBound; 18 | private int upperBound; 19 | 20 | private TemperatureEnum(int lowerBound, int upperBound) 21 | { 22 | this.lowerBound=lowerBound; 23 | this.upperBound=upperBound; 24 | } 25 | 26 | /** 27 | * Returns whether the given temperature fits in the enum's boundaries 28 | * @param temperature 29 | * @return boolean 30 | *
31 | */ 32 | public boolean matches(int temperature) 33 | { 34 | return (temperature>=this.lowerBound && temperature<=this.upperBound); 35 | } 36 | 37 | public int getMiddle() 38 | { 39 | return (this.upperBound + this.lowerBound)/2; 40 | } 41 | 42 | public int getLowerBound() 43 | { 44 | return this.lowerBound; 45 | } 46 | 47 | public int getUpperBound() 48 | { 49 | return this.upperBound; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/TemperatureRegistry.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | import java.util.LinkedHashMap; 4 | 5 | public class TemperatureRegistry 6 | { 7 | /** 8 | * Map of modifiers that the temperature system uses. 9 | *
10 | * It is recommended to add modifiers with {@link #registerModifier(ITemperatureModifier) registerModifier} 11 | *
12 | */ 13 | public static LinkedHashMap modifiers = new LinkedHashMap(); 14 | 15 | 16 | /** 17 | * Map of dynamic modifiers that the temperature system uses. 18 | *
19 | * It is recommended to avoid using these if possible. 20 | *
21 | * It is recommended to add modifiers with {@link #registerDynamicModifier(ITemperatureDynamicModifier) registerDynamicModifier} 22 | *
23 | */ 24 | public static LinkedHashMap dynamicModifiers = new LinkedHashMap(); 25 | 26 | /** 27 | * Registers a modifier to be used with the temperature system 28 | *
29 | * Custom modifiers need to extend ITemperatureModifier and be registered here 30 | * @param modifier 31 | */ 32 | public static void registerModifier(ITemperatureModifier modifier) 33 | { 34 | modifiers.put(modifier.getName(), modifier); 35 | } 36 | 37 | /** 38 | * Registers a dynamic modifier to be used with the temperature system 39 | *
40 | * It is recommended to avoid using these if possible. 41 | *
42 | * Custom dynamic modifiers need to extend ITemperatureDynamicModifier and be registered here 43 | * @param modifier 44 | */ 45 | public static void registerDynamicModifier(ITemperatureDynamicModifier modifier) 46 | { 47 | dynamicModifiers.put(modifier.getName(), modifier); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/TemporaryModifier.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | public class TemporaryModifier 4 | { 5 | //Container for a temperature and a duration 6 | 7 | public float temperature; 8 | public int duration; 9 | 10 | public TemporaryModifier(float temperature, int duration) 11 | { 12 | this.temperature = temperature; 13 | this.duration = duration; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/temperature/TemporaryModifierGroupEnum.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.temperature; 2 | 3 | public enum TemporaryModifierGroupEnum 4 | { 5 | FOOD("food"), 6 | DRINK("drink"); 7 | 8 | private String group; 9 | 10 | private TemporaryModifierGroupEnum(String group) 11 | { 12 | this.group=group; 13 | } 14 | 15 | public String group() 16 | { 17 | return group; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/thirst/IThirstCapability.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.thirst; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.world.World; 5 | import net.minecraftforge.fml.common.gameevent.TickEvent; 6 | 7 | public interface IThirstCapability 8 | { 9 | public float getThirstExhaustion(); 10 | public int getThirstLevel(); 11 | public float getThirstSaturation(); 12 | public int getThirstTickTimer(); 13 | public int getThirstDamageCounter(); 14 | 15 | public void setThirstExhaustion(float exhaustion); 16 | public void setThirstLevel(int thirst); 17 | public void setThirstSaturation(float saturation); 18 | public void setThirstTickTimer(int ticktimer); 19 | public void setThirstDamageCounter(int damagecounter); 20 | 21 | public void addThirstExhaustion(float exhaustion); 22 | public void addThirstLevel(int thirst); 23 | public void addThirstSaturation(float saturation); 24 | public void addThirstTickTimer(int ticktimer); 25 | public void addThirstDamageCounter(int damagecounter); 26 | 27 | /** 28 | * Check whether the thirst level isn't maximum 29 | *
30 | * Not to be confused with the "Thirsty" effect! 31 | * @return boolean thirst isn't maximum 32 | */ 33 | public boolean isThirsty(); 34 | 35 | /** 36 | * (Don't use this!)
37 | * Checks if the capability needs an update 38 | * @return boolean has thirst changed 39 | */ 40 | public boolean isDirty(); 41 | 42 | /** 43 | * (Don't use this!)
44 | * Sets the capability as updated 45 | */ 46 | public void setClean(); 47 | 48 | /** 49 | * (Don't use this!)
50 | * Runs a tick update for the player's thirst capability 51 | * @param player 52 | * @param world 53 | * @param phase 54 | */ 55 | public void tickUpdate(EntityPlayer player, World world, TickEvent.Phase phase); 56 | 57 | 58 | /** 59 | * (Don't use this!)
60 | * Gets the current tick of the packet timer 61 | * @return int packetTimer 62 | */ 63 | public int getPacketTimer(); 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/thirst/IThirstUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.thirst; 2 | 3 | import javax.annotation.Nullable; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | 8 | public interface IThirstUtil 9 | { 10 | @Nullable 11 | public ThirstEnumBlockPos traceWater(EntityPlayer player); 12 | 13 | public void takeDrink(EntityPlayer player, int thirst, float saturation, float dirtyChance); 14 | 15 | public void takeDrink(EntityPlayer player, int thirst, float saturation); 16 | 17 | public void takeDrink(EntityPlayer player, ThirstEnum type); 18 | 19 | public ItemStack createPurifiedWaterBucket(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/thirst/ThirstEnum.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.thirst; 2 | 3 | public enum ThirstEnum 4 | { 5 | NORMAL ("normal", 3, 0.3f, 0.75f), 6 | RAIN ("rain", 1, 0.05f, 0.0f), 7 | POTION ("potion", 2, 0.2f, 0.0f), 8 | PURIFIED("purified", 6, 3.0f, 0.0f); 9 | 10 | private String name; 11 | private int thirst; 12 | private float saturation; 13 | private float dirty; 14 | 15 | private ThirstEnum(String name, int thirst, float saturation, float dirty) 16 | { 17 | this.name = name; 18 | this.thirst=thirst; 19 | this.saturation=saturation; 20 | this.dirty=dirty; 21 | } 22 | 23 | public String getName() 24 | { 25 | return this.name; 26 | } 27 | 28 | public int getThirst() 29 | { 30 | return thirst; 31 | } 32 | 33 | public float getSaturation() 34 | { 35 | return saturation; 36 | } 37 | 38 | public float getThirstyChance() 39 | { 40 | return dirty; 41 | } 42 | 43 | public String toString() 44 | { 45 | return this.getName(); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/thirst/ThirstEnumBlockPos.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.thirst; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | 5 | public class ThirstEnumBlockPos 6 | { 7 | //Container for a ThirstEnum and BlockPos 8 | //For trace results 9 | 10 | public ThirstEnum thirstEnum; 11 | public BlockPos pos; 12 | 13 | public ThirstEnumBlockPos(ThirstEnum thirstEnum, BlockPos pos) 14 | { 15 | this.thirstEnum = thirstEnum; 16 | this.pos = pos; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/api/thirst/ThirstUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.api.thirst; 2 | 3 | import javax.annotation.Nullable; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | 8 | public class ThirstUtil 9 | { 10 | public static IThirstUtil internal; 11 | 12 | /** 13 | * Ray traces the block a player is looking at and returns it as a ThirstEnumBlockPos 14 | *
15 | * Returns null if there is no trace result 16 | * @param player 17 | * @return ThirstEnumBlockPos trace result 18 | * 19 | */ 20 | @Nullable 21 | public static ThirstEnumBlockPos traceWater(EntityPlayer player) 22 | { 23 | return internal.traceWater(player); 24 | } 25 | 26 | /** 27 | * Player takes a drink with the specified values and a chance to make them thirsty 28 | * @param player 29 | * @param thirst 30 | * @param saturation 31 | * @param thirstyChance 0.0f - 1.0f 32 | */ 33 | public static void takeDrink(EntityPlayer player, int thirst, float saturation, float thirstyChance) 34 | { 35 | internal.takeDrink(player, thirst, saturation, thirstyChance); 36 | } 37 | 38 | /** 39 | * Player takes a drink with the specified values and no chance to make them thirsty 40 | * @param player 41 | * @param thirst 42 | * @param saturation 43 | */ 44 | public static void takeDrink(EntityPlayer player, int thirst, float saturation) 45 | { 46 | internal.takeDrink(player, thirst, saturation); 47 | } 48 | 49 | /** 50 | * Player takes a drink with the values of the ThirstEnum 51 | * @param player 52 | * @param thirstEnum 53 | */ 54 | public static void takeDrink(EntityPlayer player, ThirstEnum thirstEnum) 55 | { 56 | internal.takeDrink(player, thirstEnum); 57 | } 58 | 59 | /** 60 | * Returns a new Purified Water Bucket item 61 | * @return ItemStack purified water bucket 62 | */ 63 | public static ItemStack createPurifiedWaterBucket() 64 | { 65 | return internal.createPurifiedWaterBucket(); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/asm/CoreLoader.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.asm; 2 | 3 | import java.util.Map; 4 | 5 | import com.charles445.simpledifficulty.asm.helper.ObfHelper; 6 | 7 | import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; 8 | 9 | @IFMLLoadingPlugin.Name("SimpleDifficulty ASM") 10 | @IFMLLoadingPlugin.SortingIndex(1001) 11 | @IFMLLoadingPlugin.TransformerExclusions({ "com.charles445.simpledifficulty.asm", "com.charles445.simpledifficulty.asm." }) 12 | public class CoreLoader implements IFMLLoadingPlugin 13 | { 14 | 15 | @Override 16 | public String[] getASMTransformerClass() 17 | { 18 | return new String[] { "com.charles445.simpledifficulty.asm.SimpleDifficultyASM" }; 19 | } 20 | 21 | @Override 22 | public String getModContainerClass() 23 | { 24 | return null; 25 | } 26 | 27 | @Override 28 | public String getSetupClass() 29 | { 30 | return null; 31 | } 32 | 33 | @Override 34 | public void injectData(Map data) 35 | { 36 | ObfHelper.setObfuscated((Boolean) data.get("runtimeDeobfuscationEnabled")); 37 | ObfHelper.setRunsAfterDeobfRemapper(true); 38 | } 39 | 40 | @Override 41 | public String getAccessTransformerClass() 42 | { 43 | return null; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/asm/ShadowMap.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.asm; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | public class ShadowMap 7 | { 8 | public static Map ownerMap; 9 | public static Map descMap; 10 | 11 | public static void addClassShadow(String shadow, String destination) 12 | { 13 | ownerMap.put(shadow, destination); 14 | descMap.put("L"+shadow+";", "L"+destination+";"); 15 | } 16 | 17 | static 18 | { 19 | ownerMap = new ConcurrentHashMap<>(); 20 | descMap = new ConcurrentHashMap<>(); 21 | 22 | //Inspirations 23 | addClassShadow("com/charles445/simpledifficulty/compat/shadow/InspirationsShadow$ICauldronRecipe", "knightminer/inspirations/library/recipe/cauldron/ICauldronRecipe"); 24 | addClassShadow("com/charles445/simpledifficulty/compat/shadow/InspirationsShadow$ICauldronRecipe$CauldronState", "knightminer/inspirations/library/recipe/cauldron/ICauldronRecipe$CauldronState"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/asm/helper/ObfRemappingClassWriter.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.asm.helper; 2 | 3 | import org.objectweb.asm.ClassWriter; 4 | 5 | /** 6 | * From the very helpful ASMHelper pack 7 | * 8 | * https://github.com/squeek502/ASMHelper 9 | */ 10 | 11 | /** 12 | * {@link ClassWriter#getCommonSuperClass} needed to be overwritten 13 | * in order to avoid ClassNotFoundExceptions in obfuscated environments. 14 | */ 15 | public class ObfRemappingClassWriter extends ClassWriter 16 | { 17 | public ObfRemappingClassWriter(int flags) 18 | { 19 | super(flags); 20 | } 21 | 22 | @Override 23 | protected String getCommonSuperClass(final String type1, final String type2) 24 | { 25 | Class c, d; 26 | ClassLoader classLoader = getClass().getClassLoader(); 27 | try 28 | { 29 | c = Class.forName(ObfHelper.toDeobfClassName(type1.replace('/', '.')), false, classLoader); 30 | d = Class.forName(ObfHelper.toDeobfClassName(type2.replace('/', '.')), false, classLoader); 31 | } 32 | catch (Exception e) 33 | { 34 | throw new RuntimeException(e); 35 | } 36 | if (c.isAssignableFrom(d)) 37 | { 38 | return type1; 39 | } 40 | if (d.isAssignableFrom(c)) 41 | { 42 | return type2; 43 | } 44 | if (c.isInterface() || d.isInterface()) 45 | { 46 | return "java/lang/Object"; 47 | } 48 | else 49 | { 50 | do 51 | { 52 | c = c.getSuperclass(); 53 | } 54 | while (!c.isAssignableFrom(d)); 55 | return ObfHelper.toObfClassName(c.getName()).replace('.', '/'); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/block/BlockFluidBasic.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.block; 2 | 3 | import javax.annotation.Nonnull; 4 | 5 | import com.charles445.simpledifficulty.api.SDFluids; 6 | 7 | import net.minecraft.block.material.Material; 8 | import net.minecraft.block.state.IBlockState; 9 | import net.minecraft.util.math.BlockPos; 10 | import net.minecraft.world.IBlockAccess; 11 | import net.minecraftforge.fluids.BlockFluidClassic; 12 | import net.minecraftforge.fluids.Fluid; 13 | 14 | public class BlockFluidBasic extends BlockFluidClassic 15 | { 16 | public BlockFluidBasic(Fluid fluid, Material material) 17 | { 18 | super(fluid, material); 19 | setRegistryName(fluid.getName()); 20 | setUnlocalizedName(this.getRegistryName().toString()); 21 | SDFluids.fluidBlocks.put(fluid.getName(), this); 22 | } 23 | 24 | @Override 25 | public int getLightValue(@Nonnull IBlockState state, @Nonnull IBlockAccess world, @Nonnull BlockPos pos) 26 | { 27 | return 1; 28 | } 29 | 30 | @Override 31 | public int getLightValue(IBlockState state) 32 | { 33 | return 1; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/block/IBlockStateIgnore.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.block; 2 | 3 | import net.minecraft.block.properties.IProperty; 4 | 5 | public interface IBlockStateIgnore 6 | { 7 | public IProperty[] getIgnoredProperties(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/capability/TemperatureProvider.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.capability; 2 | 3 | import com.charles445.simpledifficulty.api.temperature.ITemperatureCapability; 4 | 5 | import net.minecraft.nbt.NBTBase; 6 | import net.minecraft.util.EnumFacing; 7 | import net.minecraftforge.common.capabilities.Capability; 8 | import net.minecraftforge.common.capabilities.ICapabilitySerializable; 9 | 10 | public class TemperatureProvider implements ICapabilitySerializable 11 | { 12 | final Capability capability; 13 | final ITemperatureCapability instance; 14 | 15 | public TemperatureProvider(Capability newcapability) 16 | { 17 | this.capability = newcapability; 18 | this.instance = capability.getDefaultInstance(); 19 | } 20 | 21 | @Override 22 | public boolean hasCapability(Capability requestedcapability, EnumFacing facing) 23 | { 24 | return (requestedcapability==this.capability); 25 | } 26 | 27 | @Override 28 | public T getCapability(Capability requestedcapability, EnumFacing facing) 29 | { 30 | if(requestedcapability==this.capability) 31 | { 32 | return capability.cast(this.instance); 33 | } 34 | 35 | return null; 36 | } 37 | 38 | @Override 39 | public NBTBase serializeNBT() 40 | { 41 | return this.capability.writeNBT(this.instance, null); 42 | } 43 | 44 | @Override 45 | public void deserializeNBT(NBTBase nbt) 46 | { 47 | this.capability.readNBT(this.instance, null, nbt); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/capability/ThirstProvider.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.capability; 2 | 3 | import com.charles445.simpledifficulty.api.thirst.IThirstCapability; 4 | 5 | import net.minecraft.nbt.NBTBase; 6 | import net.minecraft.util.EnumFacing; 7 | import net.minecraftforge.common.capabilities.Capability; 8 | import net.minecraftforge.common.capabilities.ICapabilitySerializable; 9 | 10 | public class ThirstProvider implements ICapabilitySerializable 11 | { 12 | final Capability capability; 13 | final IThirstCapability instance; 14 | 15 | public ThirstProvider(Capability newcapability) 16 | { 17 | this.capability = newcapability; 18 | this.instance = capability.getDefaultInstance(); 19 | } 20 | 21 | @Override 22 | public boolean hasCapability(Capability requestedcapability, EnumFacing facing) 23 | { 24 | return (requestedcapability==this.capability); 25 | } 26 | 27 | @Override 28 | public T getCapability(Capability requestedcapability, EnumFacing facing) 29 | { 30 | if(requestedcapability==this.capability) 31 | { 32 | return capability.cast(this.instance); 33 | } 34 | 35 | return null; 36 | } 37 | 38 | @Override 39 | public NBTBase serializeNBT() 40 | { 41 | return this.capability.writeNBT(this.instance, null); 42 | } 43 | 44 | @Override 45 | public void deserializeNBT(NBTBase nbt) 46 | { 47 | this.capability.readNBT(this.instance, null, nbt); 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/client/command/ClientCommandBase.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.client.command; 2 | 3 | import java.util.Collections; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | import net.minecraft.command.CommandException; 8 | import net.minecraft.command.ICommand; 9 | import net.minecraft.command.ICommandSender; 10 | import net.minecraft.server.MinecraftServer; 11 | import net.minecraft.util.math.BlockPos; 12 | import net.minecraftforge.client.IClientCommand; 13 | 14 | public abstract class ClientCommandBase implements IClientCommand 15 | { 16 | public abstract int getRequiredPermissionLevel(); 17 | 18 | @Override 19 | public abstract String getName(); 20 | 21 | @Override 22 | public abstract String getUsage(ICommandSender sender); 23 | 24 | @Override 25 | public abstract void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException; 26 | 27 | @Override 28 | public List getAliases() 29 | { 30 | return Collections.emptyList(); 31 | } 32 | 33 | @Override 34 | public List getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos targetPos) 35 | { 36 | return Collections.emptyList(); 37 | } 38 | 39 | @Override 40 | public boolean checkPermission(MinecraftServer server, ICommandSender sender) 41 | { 42 | return sender.canUseCommand(this.getRequiredPermissionLevel(), this.getName()); 43 | } 44 | 45 | @Override 46 | public boolean isUsernameIndex(String[] args, int index) 47 | { 48 | return false; 49 | } 50 | 51 | @Override 52 | public int compareTo(ICommand command) 53 | { 54 | return this.getName().compareTo(command.getName()); 55 | } 56 | 57 | @Override 58 | public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) 59 | { 60 | return false; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/client/command/ClientCommandCopy.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.client.command; 2 | 3 | import java.awt.Toolkit; 4 | import java.awt.datatransfer.Clipboard; 5 | import java.awt.datatransfer.StringSelection; 6 | 7 | import net.minecraft.command.CommandException; 8 | import net.minecraft.command.ICommandSender; 9 | import net.minecraft.server.MinecraftServer; 10 | import net.minecraft.util.text.TextComponentString; 11 | 12 | public class ClientCommandCopy extends ClientCommandBase 13 | { 14 | @Override 15 | public String getName() 16 | { 17 | return "sdcopy"; 18 | } 19 | 20 | @Override 21 | public String getUsage(ICommandSender sender) 22 | { 23 | return "/sdcopy "; 24 | } 25 | 26 | @Override 27 | public int getRequiredPermissionLevel() 28 | { 29 | return 0; 30 | } 31 | 32 | @Override 33 | public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException 34 | { 35 | StringBuilder sb = new StringBuilder(); 36 | for(String s : args) 37 | { 38 | sb.append(s); 39 | sb.append(" "); 40 | } 41 | 42 | if(sender.getEntityWorld().isRemote) 43 | { 44 | String result = sb.toString().trim(); 45 | StringSelection selection = new StringSelection(result); 46 | Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 47 | clipboard.setContents(selection, null); 48 | 49 | sender.sendMessage(new TextComponentString("Copied to clipboard!")); 50 | } 51 | else 52 | { 53 | sender.sendMessage(new TextComponentString("World was not remote, skipping copy execution!")); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/client/particle/ParticleChiller.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.client.particle; 2 | 3 | import net.minecraft.world.World; 4 | 5 | public class ParticleChiller extends ParticleTemperature 6 | { 7 | public ParticleChiller(World world, double xPos, double yPos, double zPos, double motionX, double motionY, double motionZ) 8 | { 9 | super(world, xPos, yPos, zPos, motionX, motionY, motionZ); 10 | 11 | this.particleAge = world.rand.nextInt(2); 12 | } 13 | 14 | @Override 15 | int getFrameMax() 16 | { 17 | return 8; 18 | } 19 | 20 | @Override 21 | int getParticleTextureY() 22 | { 23 | return 1; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/client/particle/ParticleHeater.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.client.particle; 2 | 3 | import net.minecraft.world.World; 4 | 5 | public class ParticleHeater extends ParticleTemperature 6 | { 7 | public ParticleHeater(World world, double xPos, double yPos, double zPos, double motionX, double motionY, double motionZ) 8 | { 9 | super(world, xPos, yPos, zPos, motionX, motionY, motionZ); 10 | 11 | this.particleAge = world.rand.nextInt(2); 12 | } 13 | 14 | @Override 15 | int getFrameMax() 16 | { 17 | return 8; 18 | } 19 | 20 | @Override 21 | int getParticleTextureY() 22 | { 23 | return 0; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/compat/HasShadows.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.compat; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface HasShadows 8 | { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/compat/ModNames.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.compat; 2 | 3 | public class ModNames 4 | { 5 | public static final String AUW = "armorunder"; 6 | public static final String BAUBLES = "baubles"; 7 | public static final String BIOMESOPLENTY = "biomesoplenty"; 8 | public static final String FIRSTAID = "firstaid"; 9 | public static final String HARVESTCRAFT = "harvestcraft"; 10 | public static final String HARVESTFESTIVAL = "harvestfestival"; 11 | public static final String INSPIRATIONS = "inspirations"; 12 | public static final String LYCANITESMOBS = "lycanitesmobs"; 13 | public static final String OREEXCAVATION = "oreexcavation"; 14 | public static final String PYROTECH = "pyrotech"; 15 | public static final String REALISTICTORCHES = "realistictorches"; 16 | public static final String RUSTIC = "rustic"; 17 | public static final String SERENESEASONS = "sereneseasons"; 18 | public static final String SIMPLECAMPFIRE = "campfire"; 19 | public static final String TINKERSCONSTRUCT = "tconstruct"; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/compat/shadow/InspirationsShadow.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.compat.shadow; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.util.SoundEvent; 5 | import net.minecraftforge.fluids.Fluid; 6 | 7 | public class InspirationsShadow 8 | { 9 | public static interface ICauldronRecipe 10 | { 11 | boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state); 12 | 13 | ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state); 14 | 15 | ItemStack getContainer(ItemStack stack); 16 | 17 | SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state); 18 | 19 | ItemStack transformInput(ItemStack stack, boolean boiling, int level, CauldronState state); 20 | 21 | int getLevel(int level); 22 | 23 | public class CauldronState 24 | { 25 | public Fluid getFluid() 26 | { 27 | return null; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/config/JsonFileName.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.config; 2 | 3 | public enum JsonFileName 4 | { 5 | armorTemperatures("armorTemperatures.json"), 6 | blockTemperatures("blockTemperatures.json"), 7 | consumableTemperature("consumableTemperature.json"), 8 | consumableThirst("consumableThirst.json"), 9 | dimensionTemperature("dimensionTemperature.json"), 10 | fluidTemperatures("fluidTemperatures.json"), 11 | heldItemTemperatures("heldItemTemperatures.json"), 12 | materialTemperature("materialTemperature.json"), 13 | extraItems("extraItems.json"), 14 | 15 | 16 | //TODO remove migration 17 | 18 | armorTemperatures_MIGRATE("armorTemperatures.json"), 19 | consumableTemperature_MIGRATE("consumableTemperature.json"), 20 | consumableThirst_MIGRATE("consumableThirst.json"), 21 | heldItemTemperatures_MIGRATE("heldItemTemperatures.json"); 22 | 23 | 24 | 25 | private String fileName; 26 | 27 | private JsonFileName(String fileName) 28 | { 29 | this.fileName = fileName; 30 | } 31 | 32 | @Override 33 | public String toString() 34 | { 35 | return this.fileName; 36 | } 37 | 38 | public String get() 39 | { 40 | return this.toString(); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/config/json/ExtraItem.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.config.json; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import javax.annotation.Nullable; 7 | 8 | public class ExtraItem 9 | { 10 | public String _comment = "Unspecified"; 11 | public boolean enabled = false; 12 | public Map settings = new HashMap<>(); 13 | 14 | public ExtraItem(String comment, boolean isEnabled) 15 | { 16 | this._comment = comment; 17 | this.enabled = isEnabled; 18 | } 19 | 20 | public ExtraItem put(String key, String value) 21 | { 22 | //Builder behavior 23 | settings.put(key, value); 24 | return this; 25 | } 26 | 27 | @Nullable 28 | public String get(String key) 29 | { 30 | return settings.get(key); 31 | } 32 | 33 | @Nullable 34 | public Integer getInteger(String key) 35 | { 36 | String val = settings.get(key); 37 | 38 | if(val == null) 39 | return null; 40 | 41 | try 42 | { 43 | return Integer.parseInt(val); 44 | } 45 | catch(NumberFormatException e) 46 | { 47 | return null; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/config/json/MaterialTemperature.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.config.json; 2 | 3 | public class MaterialTemperature 4 | { 5 | public String _comment = "Adding materials is not supported, this just changes Material.FIRE temperature"; 6 | //Temperature of Material.FIRE 7 | public float fire = 5.0f; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/debug/DebugScratchpad.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.debug; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | public class DebugScratchpad 6 | { 7 | /* 8 | public static DebugScratchpad instance = new DebugScratchpad(); 9 | 10 | public void init() 11 | { 12 | System.out.println(disableBuiltInModCompatibility("modid_goes_here")); 13 | } 14 | 15 | //preInit or init 16 | public boolean disableBuiltInModCompatibility(String modid) 17 | { 18 | try 19 | { 20 | Class SDCompatibility = Class.forName("com.charles445.simpledifficulty.api.SDCompatibility"); 21 | Method disableBuiltInModCompatibility = SDCompatibility.getDeclaredMethod("disableBuiltInModCompatibility", String.class); 22 | disableBuiltInModCompatibility.invoke(null, modid); 23 | return true; 24 | } 25 | catch(Exception e) 26 | { 27 | return false; 28 | } 29 | } 30 | */ 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/enchantment/EnchantmentArmorTemperature.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.enchantment; 2 | 3 | import net.minecraft.enchantment.Enchantment; 4 | import net.minecraft.enchantment.EnumEnchantmentType; 5 | import net.minecraft.inventory.EntityEquipmentSlot; 6 | 7 | public class EnchantmentArmorTemperature extends Enchantment 8 | { 9 | public EnchantmentArmorTemperature() 10 | { 11 | super(Enchantment.Rarity.COMMON, EnumEnchantmentType.ARMOR, 12 | new EntityEquipmentSlot[]{ 13 | EntityEquipmentSlot.CHEST, 14 | EntityEquipmentSlot.FEET, 15 | EntityEquipmentSlot.HEAD, 16 | EntityEquipmentSlot.LEGS 17 | }); 18 | } 19 | 20 | @Override 21 | protected boolean canApplyTogether(Enchantment ench) 22 | { 23 | //return this != ench; 24 | return !(ench instanceof EnchantmentArmorTemperature); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/fluid/FluidBasic.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.fluid; 2 | 3 | import com.charles445.simpledifficulty.SimpleDifficulty; 4 | import com.charles445.simpledifficulty.api.SDFluids; 5 | 6 | import net.minecraft.util.ResourceLocation; 7 | import net.minecraftforge.fluids.Fluid; 8 | import net.minecraftforge.fluids.FluidRegistry; 9 | 10 | public class FluidBasic extends Fluid 11 | { 12 | public FluidBasic(String fluidName, String still, String flowing, int ARGB) 13 | { 14 | super(fluidName, 15 | new ResourceLocation(SimpleDifficulty.MODID, "fluids/"+still), 16 | new ResourceLocation(SimpleDifficulty.MODID, "fluids/"+flowing), 17 | ARGB 18 | ); 19 | 20 | //Add to generic fluid map 21 | SDFluids.fluids.put(fluidName, this); 22 | 23 | //Register and add bucket for self 24 | FluidRegistry.registerFluid(SDFluids.fluids.get(fluidName)); 25 | FluidRegistry.addBucketForFluid(SDFluids.fluids.get(fluidName)); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/handler/BlockHandler.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.handler; 2 | 3 | import com.charles445.simpledifficulty.api.SDItems; 4 | import com.charles445.simpledifficulty.config.ModConfig; 5 | 6 | import net.minecraft.block.Block; 7 | import net.minecraft.init.Blocks; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.world.World; 10 | import net.minecraftforge.event.world.BlockEvent.HarvestDropsEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | public class BlockHandler 14 | { 15 | //Handler for net.minecraftforge.event.world.BlockEvent related events 16 | 17 | @SubscribeEvent 18 | public void onHarvestDrops(HarvestDropsEvent event) 19 | { 20 | World world = event.getWorld(); 21 | //Both Sides? 22 | 23 | if(!world.isRemote) 24 | { 25 | //Server Side 26 | 27 | if(event.getHarvester() == null || event.isSilkTouching()) 28 | return; 29 | 30 | Block block = event.getState().getBlock(); 31 | 32 | int fortune = event.getFortuneLevel(); 33 | if(fortune < 0) 34 | fortune = 0; 35 | 36 | if(block == Blocks.ICE && ModConfig.server.miscellaneous.iceDropsChunks) 37 | { 38 | event.getDrops().clear(); //TODO Consider not overriding old drops? 39 | event.getDrops().add(new ItemStack(SDItems.ice_chunk, world.rand.nextInt(fortune+1) + world.rand.nextInt(2))); 40 | } 41 | else if(block == Blocks.MAGMA && ModConfig.server.miscellaneous.magmaDropsChunks) 42 | { 43 | event.getDrops().clear(); //TODO Consider not overriding old drops? 44 | event.getDrops().add(new ItemStack(SDItems.magma_chunk, world.rand.nextInt(fortune+1) + world.rand.nextInt(3))); 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/handler/ConfigHandler.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.handler; 2 | 3 | import com.charles445.simpledifficulty.SimpleDifficulty; 4 | import com.charles445.simpledifficulty.config.JsonConfigInternal; 5 | import com.charles445.simpledifficulty.config.ModConfig; 6 | 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.entity.player.EntityPlayerMP; 9 | import net.minecraft.util.text.TextComponentString; 10 | import net.minecraft.world.World; 11 | import net.minecraftforge.event.world.WorldEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.PlayerEvent; 14 | import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; 15 | import net.minecraftforge.fml.relauncher.Side; 16 | import net.minecraftforge.fml.relauncher.SideOnly; 17 | 18 | public class ConfigHandler 19 | { 20 | //Config update when player logs in 21 | @SubscribeEvent 22 | public void onPlayerLogin(PlayerLoggedInEvent event) 23 | { 24 | EntityPlayer player = event.player; 25 | World world = player.world; 26 | 27 | if(world.isRemote) 28 | return; 29 | 30 | //Server Side 31 | //TODO Casting safety 32 | ModConfig.sendServerConfigToPlayer((EntityPlayerMP) player); 33 | } 34 | 35 | //Config update when player goes back to title screen 36 | @SubscribeEvent 37 | public void onWorldEventUnload(WorldEvent.Unload event) 38 | { 39 | if(event.getWorld().isRemote) 40 | { 41 | //Client Side 42 | Boolean connectedToServer = SimpleDifficulty.proxy.isClientConnectedToServer(); 43 | if(connectedToServer==null) 44 | { 45 | SimpleDifficulty.logger.error("Server proxy called isClientConnectedToServer while world was remote!"); 46 | return; 47 | } 48 | if(!connectedToServer.booleanValue()) 49 | { 50 | //Not connected to anyone 51 | ModConfig.sendLocalClientConfigToAPI(); 52 | ModConfig.sendLocalServerConfigToAPI(); 53 | } 54 | } 55 | } 56 | 57 | @SubscribeEvent 58 | @SideOnly(Side.CLIENT) 59 | public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) 60 | { 61 | for(String s : JsonConfigInternal.jsonErrors) 62 | { 63 | event.player.sendMessage(new TextComponentString(s)); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/handler/TemperatureHandler.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.handler; 2 | 3 | import java.util.List; 4 | 5 | import com.charles445.simpledifficulty.api.SDCapabilities; 6 | import com.charles445.simpledifficulty.api.config.JsonConfig; 7 | import com.charles445.simpledifficulty.api.config.QuickConfig; 8 | import com.charles445.simpledifficulty.api.config.json.JsonConsumableTemperature; 9 | 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraft.item.ItemStack; 12 | import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; 13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 14 | 15 | public class TemperatureHandler 16 | { 17 | //Both Sides 18 | @SubscribeEvent 19 | public void onLivingEntityUseItemFinish(LivingEntityUseItemEvent.Finish event) 20 | { 21 | if(!QuickConfig.isTemperatureEnabled()) 22 | return; 23 | 24 | if(event.getEntityLiving() instanceof EntityPlayer) 25 | { 26 | EntityPlayer player = (EntityPlayer)event.getEntityLiving(); 27 | 28 | if(player.world.isRemote) 29 | return; 30 | 31 | //Server Side 32 | 33 | ItemStack stack = event.getItem(); 34 | 35 | List consumableList = JsonConfig.consumableTemperature.get(stack.getItem().getRegistryName().toString()); 36 | 37 | if(consumableList!=null) 38 | { 39 | for(JsonConsumableTemperature jct : consumableList) 40 | { 41 | if(jct==null) 42 | continue; 43 | 44 | if(jct.matches(stack)) 45 | { 46 | SDCapabilities.getTemperatureData(player).setTemporaryModifier(jct.group, jct.temperature, jct.duration); 47 | break; 48 | } 49 | } 50 | } 51 | else 52 | { 53 | //Alternative 54 | } 55 | } 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/handler/TooltipHandler.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.handler; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | import com.charles445.simpledifficulty.api.temperature.TemperatureUtil; 6 | 7 | import net.minecraft.util.text.TextFormatting; 8 | import net.minecraftforge.event.entity.player.ItemTooltipEvent; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | public class TooltipHandler 12 | { 13 | //CLIENT only 14 | 15 | private final DecimalFormat df = new DecimalFormat("#.##"); 16 | 17 | 18 | @SubscribeEvent 19 | public void onItemTooltipEvent(ItemTooltipEvent event) 20 | { 21 | if(TemperatureUtil.getArmorTemperatureTag(event.getItemStack())!=0.0f) 22 | { 23 | //Has armor temperature tag 24 | float tempTag = TemperatureUtil.getArmorTemperatureTag(event.getItemStack()); 25 | 26 | if(tempTag>0.0f) 27 | { 28 | event.getToolTip().add(TextFormatting.DARK_RED + " Temperature +" + df.format(tempTag)); 29 | } 30 | else 31 | { 32 | event.getToolTip().add(TextFormatting.DARK_BLUE + " Temperature " + df.format(tempTag)); 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/item/ItemArmorTemperature.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.item; 2 | 3 | import net.minecraft.inventory.EntityEquipmentSlot; 4 | import net.minecraft.item.ItemArmor; 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class ItemArmorTemperature extends ItemArmor 8 | { 9 | public ItemArmorTemperature(ArmorMaterial material, EntityEquipmentSlot equipmentSlot) 10 | { 11 | //TODO what does render index do? Is that the old render passes system? 12 | 13 | super(material, 0, equipmentSlot); 14 | } 15 | 16 | @Override 17 | public boolean hasOverlay(ItemStack stack) 18 | { 19 | return false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/item/ItemIronCanteen.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.item; 2 | 3 | import com.charles445.simpledifficulty.SimpleDifficulty; 4 | import com.charles445.simpledifficulty.api.config.ServerConfig; 5 | import com.charles445.simpledifficulty.api.config.ServerOptions; 6 | import com.charles445.simpledifficulty.api.item.IItemCanteen; 7 | import com.charles445.simpledifficulty.api.thirst.ThirstEnum; 8 | import com.charles445.simpledifficulty.config.json.ExtraItem; 9 | 10 | import net.minecraft.entity.EntityLivingBase; 11 | import net.minecraft.item.IItemPropertyGetter; 12 | import net.minecraft.item.ItemStack; 13 | import net.minecraft.util.ResourceLocation; 14 | import net.minecraft.world.World; 15 | import net.minecraftforge.fml.relauncher.Side; 16 | import net.minecraftforge.fml.relauncher.SideOnly; 17 | 18 | public class ItemIronCanteen extends ItemCanteen 19 | { 20 | public ItemIronCanteen() 21 | { 22 | super(); 23 | 24 | addPropertyOverride(new ResourceLocation("contain"), new IItemPropertyGetter() 25 | { 26 | @Override 27 | @SideOnly(Side.CLIENT) 28 | public float apply(ItemStack stack, World worldIn, EntityLivingBase entityIn) 29 | { 30 | if(stack.getItem() instanceof IItemCanteen) 31 | { 32 | IItemCanteen canteen = (IItemCanteen)stack.getItem(); 33 | if(!canteen.isCanteenEmpty(stack)) 34 | return 1.0f; 35 | } 36 | 37 | return 0.0f; 38 | } 39 | }); 40 | } 41 | 42 | @Override 43 | public int getMaxDoses(ItemStack stack) 44 | { 45 | return ServerConfig.instance.getInteger(ServerOptions.IRON_CANTEEN_DOSES); 46 | } 47 | 48 | @Override 49 | public String getUnlocalizedName(ItemStack stack) 50 | { 51 | if(isCanteenEmpty(stack)) 52 | return "item."+SimpleDifficulty.MODID+":"+"iron_canteen_empty"; 53 | 54 | int type = getTypeTag(stack).getInt(); 55 | if(type>=ThirstEnum.values().length) 56 | return "item."+SimpleDifficulty.MODID+":"+"iron_canteen_broken"; 57 | 58 | return "item."+SimpleDifficulty.MODID+":"+"iron_canteen_"+ThirstEnum.values()[type].toString(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/item/ItemPurifiedWaterBottle.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.item; 2 | 3 | import com.charles445.simpledifficulty.api.thirst.ThirstEnum; 4 | 5 | import net.minecraft.item.ItemStack; 6 | 7 | public class ItemPurifiedWaterBottle extends ItemDrinkBase 8 | { 9 | @Override 10 | public int getThirstLevel(ItemStack stack) 11 | { 12 | return ThirstEnum.PURIFIED.getThirst(); 13 | } 14 | 15 | @Override 16 | public float getSaturationLevel(ItemStack stack) 17 | { 18 | return ThirstEnum.PURIFIED.getSaturation(); 19 | } 20 | 21 | @Override 22 | public float getDirtyChance(ItemStack stack) 23 | { 24 | return ThirstEnum.PURIFIED.getThirstyChance(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/network/MessageDrinkWater.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.network; 2 | 3 | import com.charles445.simpledifficulty.api.thirst.ThirstEnum; 4 | import com.charles445.simpledifficulty.api.thirst.ThirstEnumBlockPos; 5 | import com.charles445.simpledifficulty.api.thirst.ThirstUtil; 6 | import com.charles445.simpledifficulty.util.SoundUtil; 7 | import com.charles445.simpledifficulty.util.internal.ThirstUtilInternal; 8 | 9 | import io.netty.buffer.ByteBuf; 10 | import net.minecraft.entity.player.EntityPlayerMP; 11 | import net.minecraft.init.SoundEvents; 12 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 13 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 14 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 15 | import net.minecraftforge.fml.relauncher.Side; 16 | 17 | 18 | public class MessageDrinkWater implements IMessage 19 | { 20 | //Side SERVER 21 | 22 | public MessageDrinkWater() 23 | { 24 | 25 | } 26 | 27 | @Override 28 | public void fromBytes(ByteBuf buf) 29 | { 30 | //No data is shared 31 | } 32 | 33 | @Override 34 | public void toBytes(ByteBuf buf) 35 | { 36 | //No data is shared 37 | } 38 | 39 | public static class Handler implements IMessageHandler 40 | { 41 | @Override 42 | public IMessage onMessage(MessageDrinkWater message, MessageContext ctx) 43 | { 44 | if(ctx.side == Side.SERVER) 45 | { 46 | //DebugUtil.messageAll("Server received MessageDrinkWater"); 47 | 48 | EntityPlayerMP player = ctx.getServerHandler().player; 49 | if(player!=null) 50 | { 51 | player.getServerWorld().addScheduledTask(() -> 52 | { 53 | ThirstEnumBlockPos traceResult = ThirstUtilInternal.traceWaterToDrink(player); 54 | if(traceResult==null) 55 | return; 56 | 57 | ThirstEnum result = traceResult.thirstEnum; 58 | 59 | //Enum now has important values 60 | 61 | ThirstUtil.takeDrink(player, result.getThirst(), result.getSaturation(), result.getThirstyChance()); 62 | SoundUtil.commonPlayPlayerSound(player, SoundEvents.ENTITY_GENERIC_DRINK); 63 | 64 | }); 65 | } 66 | } 67 | return null; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/network/MessageUpdateConfig.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.network; 2 | 3 | import com.charles445.simpledifficulty.api.config.ServerConfig; 4 | 5 | import io.netty.buffer.ByteBuf; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.nbt.NBTTagCompound; 8 | import net.minecraftforge.fml.common.network.ByteBufUtils; 9 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 10 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 11 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 12 | import net.minecraftforge.fml.relauncher.Side; 13 | 14 | public class MessageUpdateConfig implements IMessage 15 | { 16 | //Side CLIENT 17 | 18 | private NBTTagCompound nbt; 19 | 20 | public MessageUpdateConfig() 21 | { 22 | //Necessary to avoid crash 23 | } 24 | 25 | public MessageUpdateConfig(NBTTagCompound compound) 26 | { 27 | nbt = compound; 28 | } 29 | 30 | @Override 31 | public void fromBytes(ByteBuf buf) 32 | { 33 | nbt = ByteBufUtils.readTag(buf); 34 | } 35 | 36 | @Override 37 | public void toBytes(ByteBuf buf) 38 | { 39 | ByteBufUtils.writeTag(buf, nbt); 40 | } 41 | 42 | 43 | public static class Handler implements IMessageHandler 44 | { 45 | @Override 46 | public IMessage onMessage(MessageUpdateConfig message, MessageContext ctx) 47 | { 48 | if(ctx.side == Side.CLIENT) 49 | { 50 | Minecraft.getMinecraft().addScheduledTask(() -> 51 | { 52 | ServerConfig.instance.updateValues(message.nbt); 53 | }); 54 | } 55 | return null; 56 | } 57 | } 58 | 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/network/MessageUpdateThirst.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.network; 2 | 3 | import com.charles445.simpledifficulty.api.SDCapabilities; 4 | import com.charles445.simpledifficulty.api.thirst.IThirstCapability; 5 | 6 | import io.netty.buffer.ByteBuf; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.entity.EntityPlayerSP; 9 | import net.minecraft.nbt.NBTBase; 10 | import net.minecraft.nbt.NBTTagCompound; 11 | import net.minecraftforge.common.capabilities.Capability; 12 | import net.minecraftforge.fml.common.network.ByteBufUtils; 13 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 14 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 15 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 16 | import net.minecraftforge.fml.relauncher.Side; 17 | 18 | public class MessageUpdateThirst implements IMessage 19 | { 20 | //Side CLIENT 21 | 22 | private NBTTagCompound nbt; 23 | 24 | public MessageUpdateThirst() 25 | { 26 | //Necessary to avoid crash 27 | } 28 | 29 | public MessageUpdateThirst(NBTBase nbt) 30 | { 31 | this.nbt = (NBTTagCompound)nbt; 32 | } 33 | 34 | @Override 35 | public void fromBytes(ByteBuf buf) 36 | { 37 | this.nbt = ByteBufUtils.readTag(buf); 38 | } 39 | 40 | @Override 41 | public void toBytes(ByteBuf buf) 42 | { 43 | ByteBufUtils.writeTag(buf, this.nbt); 44 | } 45 | 46 | public NBTTagCompound getNBT() 47 | { 48 | return this.nbt; 49 | } 50 | 51 | public static class Handler implements IMessageHandler 52 | { 53 | @Override 54 | public IMessage onMessage(MessageUpdateThirst message, MessageContext ctx) 55 | { 56 | if(ctx.side == Side.CLIENT) 57 | { 58 | EntityPlayerSP player = Minecraft.getMinecraft().player; 59 | if(player!=null) 60 | { 61 | Minecraft.getMinecraft().addScheduledTask(() -> 62 | { 63 | Capability capability = SDCapabilities.THIRST; 64 | capability.getStorage().readNBT(capability, player.getCapability(capability, null), null, message.getNBT()); 65 | //player.sendMessage(new TextComponentString("Received MessageUpdateThirst message")); 66 | }); 67 | } 68 | } 69 | return null; 70 | } 71 | } 72 | 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/network/PacketHandler.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.network; 2 | 3 | import com.charles445.simpledifficulty.SimpleDifficulty; 4 | 5 | import net.minecraftforge.fml.common.network.NetworkRegistry; 6 | import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; 7 | import net.minecraftforge.fml.relauncher.Side; 8 | 9 | public class PacketHandler 10 | { 11 | public static final SimpleNetworkWrapper instance = NetworkRegistry.INSTANCE.newSimpleChannel(SimpleDifficulty.MODID); 12 | 13 | public static void init() 14 | { 15 | instance.registerMessage(MessageUpdateThirst.Handler.class, MessageUpdateThirst.class, 0, Side.CLIENT); 16 | instance.registerMessage(MessageDrinkWater.Handler.class, MessageDrinkWater.class, 1, Side.SERVER); 17 | instance.registerMessage(MessageConfigLAN.Handler.class, MessageConfigLAN.class, 2, Side.SERVER); 18 | instance.registerMessage(MessageUpdateConfig.Handler.class, MessageUpdateConfig.class, 3, Side.CLIENT); 19 | instance.registerMessage(MessageUpdateTemperature.Handler.class, MessageUpdateTemperature.class, 4, Side.CLIENT); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionHyperthermia.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDDamageSources; 4 | import com.charles445.simpledifficulty.api.SDPotions; 5 | import com.charles445.simpledifficulty.config.ModConfig; 6 | import com.charles445.simpledifficulty.util.DamageUtil; 7 | 8 | import net.minecraft.entity.EntityLivingBase; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraft.util.DamageSource; 11 | import net.minecraft.util.ResourceLocation; 12 | import net.minecraft.world.World; 13 | 14 | public class PotionHyperthermia extends PotionThermia 15 | { 16 | private final ResourceLocation texture; 17 | 18 | public PotionHyperthermia() 19 | { 20 | super(true, 0xFFC85C); 21 | xOffset = 0; 22 | yOffset = 0; 23 | texture = formatTexture("hyperthermia"); 24 | } 25 | 26 | @Override 27 | public ResourceLocation getTexture() 28 | { 29 | return texture; 30 | } 31 | 32 | @Override 33 | public void attackPlayer(EntityPlayer player, float damage) 34 | { 35 | player.attackEntityFrom(SDDamageSources.HYPERTHERMIA, damage); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionHypothermia.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDDamageSources; 4 | import com.charles445.simpledifficulty.api.SDPotions; 5 | import com.charles445.simpledifficulty.util.DamageUtil; 6 | 7 | import net.minecraft.entity.EntityLivingBase; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.util.DamageSource; 10 | import net.minecraft.util.ResourceLocation; 11 | import net.minecraft.world.World; 12 | 13 | public class PotionHypothermia extends PotionThermia 14 | { 15 | private final ResourceLocation texture; 16 | 17 | public PotionHypothermia() 18 | { 19 | super(true, 0x5CEBFF); 20 | xOffset = 0; 21 | yOffset = 0; 22 | texture = formatTexture("hypothermia"); 23 | } 24 | 25 | @Override 26 | public ResourceLocation getTexture() 27 | { 28 | return texture; 29 | } 30 | 31 | @Override 32 | public void attackPlayer(EntityPlayer player, float damage) 33 | { 34 | player.attackEntityFrom(SDDamageSources.HYPOTHERMIA, damage); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionParasites.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDDamageSources; 4 | import com.charles445.simpledifficulty.config.ModConfig; 5 | import com.charles445.simpledifficulty.util.DamageUtil; 6 | 7 | import net.minecraft.entity.EntityLivingBase; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.init.MobEffects; 10 | import net.minecraft.potion.PotionEffect; 11 | import net.minecraft.util.DamageSource; 12 | import net.minecraft.util.ResourceLocation; 13 | import net.minecraft.world.World; 14 | 15 | public class PotionParasites extends PotionBase 16 | { 17 | private final ResourceLocation texture; 18 | 19 | private int savedDuration = 0; 20 | 21 | public PotionParasites() 22 | { 23 | super(false, 0xFFE1B7); 24 | xOffset = 0; 25 | yOffset = 0; 26 | texture = formatTexture("parasites"); 27 | } 28 | 29 | @Override 30 | public ResourceLocation getTexture() 31 | { 32 | return texture; 33 | } 34 | 35 | @Override 36 | public void performEffect(EntityLivingBase entity, int amplifier) 37 | { 38 | if(entity instanceof EntityPlayer) 39 | { 40 | World world = entity.getEntityWorld(); 41 | EntityPlayer player = (EntityPlayer) entity; 42 | 43 | double hunger = ModConfig.server.thirst.thirstParasitesHunger; 44 | 45 | //Hunger 46 | if(hunger > 0.0d) 47 | player.addExhaustion((float)hunger * (float)(amplifier + 1)); 48 | 49 | if(DamageUtil.isModDangerous(world) && DamageUtil.healthAboveDifficulty(world, player)) 50 | { 51 | double poison = ModConfig.server.thirst.thirstParasitesDamage; 52 | 53 | //Damage 54 | if(poison > 0.0d && isReadyVar(savedDuration, amplifier, 25) && player.getRNG().nextDouble() < poison) 55 | { 56 | player.attackEntityFrom(SDDamageSources.PARASITES, 1.0F); 57 | } 58 | } 59 | } 60 | } 61 | 62 | @Override 63 | public boolean isReady(int duration, int amplifier) 64 | { 65 | //Save a copy of the current duration for later use 66 | savedDuration = duration; 67 | 68 | return true; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionResistCold.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDPotions; 4 | 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.util.ResourceLocation; 7 | 8 | public class PotionResistCold extends PotionBase 9 | { 10 | private final ResourceLocation texture; 11 | 12 | public PotionResistCold() 13 | { 14 | super(false, 0x8EF1FF); 15 | xOffset = 0; 16 | yOffset = 0; 17 | texture = formatTexture("resist_cold"); 18 | setBeneficial(); 19 | } 20 | 21 | @Override 22 | public ResourceLocation getTexture() 23 | { 24 | return texture; 25 | } 26 | 27 | @Override 28 | public void performEffect(EntityLivingBase entity, int amplifier) 29 | { 30 | //entity.removePotionEffect(SDPotions.hypothermia); 31 | removePotionCoreEffect(entity,SDPotions.hypothermia); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionResistHeat.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDPotions; 4 | import com.charles445.simpledifficulty.api.thirst.ThirstEnum; 5 | 6 | import net.minecraft.entity.EntityLivingBase; 7 | import net.minecraft.util.ResourceLocation; 8 | 9 | public class PotionResistHeat extends PotionBase 10 | { 11 | private final ResourceLocation texture; 12 | 13 | public PotionResistHeat() 14 | { 15 | super(false, 0xFFCD72); 16 | xOffset = 0; 17 | yOffset = 0; 18 | texture = formatTexture("resist_heat"); 19 | setBeneficial(); 20 | } 21 | 22 | @Override 23 | public ResourceLocation getTexture() 24 | { 25 | return texture; 26 | } 27 | 28 | @Override 29 | public void performEffect(EntityLivingBase entity, int amplifier) 30 | { 31 | //entity.removePotionEffect(SDPotions.hyperthermia); 32 | removePotionCoreEffect(entity,SDPotions.hyperthermia); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionThermia.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDCapabilities; 4 | import com.charles445.simpledifficulty.api.SDDamageSources; 5 | import com.charles445.simpledifficulty.api.SDPotions; 6 | import com.charles445.simpledifficulty.api.temperature.ITemperatureCapability; 7 | import com.charles445.simpledifficulty.config.ModConfig; 8 | import com.charles445.simpledifficulty.util.DamageUtil; 9 | 10 | import net.minecraft.entity.EntityLivingBase; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.util.ResourceLocation; 13 | import net.minecraft.world.World; 14 | 15 | public abstract class PotionThermia extends PotionBase 16 | { 17 | public PotionThermia(boolean isBadEffect, int liquidColor) 18 | { 19 | super(isBadEffect, liquidColor); 20 | } 21 | 22 | @Override 23 | public void performEffect(EntityLivingBase entity, int amplifier) 24 | { 25 | if(entity instanceof EntityPlayer && !entity.isPotionActive(SDPotions.heat_resist)) 26 | { 27 | World world = entity.getEntityWorld(); 28 | EntityPlayer player = (EntityPlayer) entity; 29 | if(DamageUtil.isModDangerous(world) && DamageUtil.healthAboveDifficulty(world, player)) 30 | { 31 | ITemperatureCapability capability = SDCapabilities.getTemperatureData(player); 32 | float damage = 0.5f + (0.5f * (float)capability.getTemperatureDamageCounter() * (float)ModConfig.server.temperature.temperatureDamageScaling); 33 | attackPlayer(player, damage); 34 | capability.addTemperatureDamageCounter(1); 35 | } 36 | } 37 | } 38 | 39 | public abstract void attackPlayer(EntityPlayer player, float damage); 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/potion/PotionThirsty.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.potion; 2 | 3 | import com.charles445.simpledifficulty.api.SDCapabilities; 4 | import com.charles445.simpledifficulty.api.thirst.IThirstCapability; 5 | import com.charles445.simpledifficulty.capability.ThirstCapability; 6 | import com.charles445.simpledifficulty.config.ModConfig; 7 | 8 | import net.minecraft.entity.EntityLivingBase; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraft.util.ResourceLocation; 11 | 12 | public class PotionThirsty extends PotionBase 13 | { 14 | private final ResourceLocation texture; 15 | 16 | public PotionThirsty() 17 | { 18 | super(true, 0x2B9500); 19 | xOffset = 0; 20 | yOffset = 0; 21 | texture = formatTexture("thirsty"); 22 | } 23 | 24 | @Override 25 | public ResourceLocation getTexture() 26 | { 27 | return texture; 28 | } 29 | 30 | @Override 31 | public boolean isReady(int duration, int amplifier) 32 | { 33 | //Apply every tick 34 | return true; 35 | } 36 | 37 | @Override 38 | public void performEffect(EntityLivingBase entityLivingBaseIn, int amplifier) 39 | { 40 | if(entityLivingBaseIn instanceof EntityPlayer) 41 | { 42 | EntityPlayer player = (EntityPlayer)entityLivingBaseIn; 43 | IThirstCapability capability = SDCapabilities.getThirstData(player); 44 | capability.addThirstExhaustion((float)ModConfig.server.thirst.thirstyStrength * (1 + amplifier)); 45 | } 46 | } 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/proxy/IProxy.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.proxy; 2 | 3 | import java.io.File; 4 | 5 | import javax.annotation.Nullable; 6 | 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.world.World; 9 | import net.minecraftforge.fml.relauncher.Side; 10 | 11 | public interface IProxy 12 | { 13 | public void preInit(); 14 | 15 | public void init(); 16 | 17 | public void postInit(); 18 | 19 | public Side getSide(); 20 | 21 | @Nullable 22 | public EntityPlayer getClientMinecraftPlayer(); 23 | 24 | @Nullable 25 | public Boolean isClientConnectedToServer(); 26 | 27 | public void spawnClientParticle(World world, String type, double xPos, double yPos, double zPos, double motionX, double motionY, double motionZ); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/proxy/ServerProxy.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.proxy; 2 | 3 | import java.io.File; 4 | 5 | import com.charles445.simpledifficulty.SimpleDifficulty; 6 | 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraftforge.fml.relauncher.Side; 9 | 10 | public class ServerProxy extends CommonProxy 11 | { 12 | //Participation Award 13 | 14 | @Override 15 | public void preInit() 16 | { 17 | super.preInit(); 18 | } 19 | 20 | @Override 21 | public void init() 22 | { 23 | super.init(); 24 | } 25 | 26 | @Override 27 | public void postInit() 28 | { 29 | super.postInit(); 30 | } 31 | 32 | @Override 33 | public Side getSide() 34 | { 35 | return Side.SERVER; 36 | } 37 | 38 | @Override 39 | public EntityPlayer getClientMinecraftPlayer() 40 | { 41 | return null; 42 | } 43 | 44 | @Override 45 | public Boolean isClientConnectedToServer() 46 | { 47 | return null; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/register/ExtraItemNames.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.register; 2 | 3 | public class ExtraItemNames 4 | { 5 | public static final String FROST_ROD = "frost_rod"; 6 | public static final String FROST_POWDER = "frost_powder"; 7 | public static final String DRAGON_CANTEEN = "dragon_canteen"; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/register/ModCreativeTab.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.register; 2 | 3 | import com.charles445.simpledifficulty.api.SDItems; 4 | 5 | import net.minecraft.creativetab.CreativeTabs; 6 | import net.minecraft.item.ItemStack; 7 | 8 | public class ModCreativeTab extends CreativeTabs 9 | { 10 | public static final ModCreativeTab instance = new ModCreativeTab(CreativeTabs.getNextID(), "tabSimpleDifficulty"); 11 | public ModCreativeTab(int index, String label) 12 | { 13 | super(index, label); 14 | } 15 | 16 | @Override 17 | public ItemStack getTabIconItem() 18 | { 19 | //TODO better looking icon 20 | return new ItemStack(SDItems.purifiedWaterBottle); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/register/RegisterEnchantments.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.register; 2 | 3 | import static com.charles445.simpledifficulty.api.SDEnchantments.*; 4 | 5 | import com.charles445.simpledifficulty.SimpleDifficulty; 6 | import com.charles445.simpledifficulty.config.ModConfig; 7 | import com.charles445.simpledifficulty.enchantment.EnchantmentArmorTemperature; 8 | 9 | import net.minecraft.enchantment.Enchantment; 10 | import net.minecraftforge.event.RegistryEvent; 11 | import net.minecraftforge.fml.common.Mod; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.registries.IForgeRegistry; 14 | 15 | public class RegisterEnchantments 16 | { 17 | @Mod.EventBusSubscriber(modid = SimpleDifficulty.MODID) 18 | public static class Registrar 19 | { 20 | @SubscribeEvent 21 | public static void registerEnchantments(RegistryEvent.Register event) 22 | { 23 | IForgeRegistry registry = event.getRegistry(); 24 | 25 | //TODO name with mod initials? In case other mods want to use these names 26 | chilling = registerAs("chilling", new EnchantmentArmorTemperature(), registry); 27 | heating = registerAs("heating", new EnchantmentArmorTemperature(), registry); 28 | } 29 | 30 | private static Enchantment registerAs(String name, final Enchantment newEnchantment, IForgeRegistry registry) 31 | { 32 | newEnchantment.setName(name); 33 | newEnchantment.setRegistryName(SimpleDifficulty.MODID,name); 34 | 35 | if(ModConfig.server.miscellaneous.registerEnchantments) 36 | registry.register(newEnchantment); 37 | 38 | //Add to map 39 | enchantments.put(name, newEnchantment); 40 | 41 | return newEnchantment; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/register/RegisterFluids.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.register; 2 | 3 | import static com.charles445.simpledifficulty.api.SDFluids.*; 4 | 5 | import com.charles445.simpledifficulty.SimpleDifficulty; 6 | import com.charles445.simpledifficulty.block.BlockFluidBasic; 7 | import com.charles445.simpledifficulty.fluid.FluidBasic; 8 | 9 | import net.minecraft.block.Block; 10 | import net.minecraft.block.material.Material; 11 | import net.minecraft.item.Item; 12 | import net.minecraft.item.ItemBlock; 13 | import net.minecraftforge.event.RegistryEvent; 14 | import net.minecraftforge.fml.common.Mod; 15 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 16 | import net.minecraftforge.registries.IForgeRegistry; 17 | 18 | public class RegisterFluids 19 | { 20 | //TODO block placing sound 21 | 22 | @Mod.EventBusSubscriber(modid = SimpleDifficulty.MODID) 23 | public static class Registrar 24 | { 25 | @SubscribeEvent 26 | public static void registerFluidsAndFluidBlocks(RegistryEvent.Register event) 27 | { 28 | final IForgeRegistry registry = event.getRegistry(); 29 | 30 | 31 | //Create Fluids 32 | purifiedWater = new FluidBasic( 33 | "purifiedwater", 34 | "purifiedwater_still", 35 | "purifiedwater_flow", 36 | 0xFFFFFFFF); 37 | 38 | //Fluids register themselves 39 | 40 | //Create Fluid Blocks 41 | 42 | blockPurifiedWater = new BlockFluidBasic(purifiedWater, Material.WATER); 43 | 44 | for(String key : fluidBlocks.keySet()) 45 | { 46 | registry.register(fluidBlocks.get(key)); 47 | } 48 | } 49 | 50 | @SubscribeEvent 51 | public static void registerFluidItems(RegistryEvent.Register event) 52 | { 53 | final IForgeRegistry registry = event.getRegistry(); 54 | 55 | for(String key : fluidBlocks.keySet()) 56 | { 57 | registry.register(makeItemFromBlock(fluidBlocks.get(key))); 58 | } 59 | } 60 | 61 | private static ItemBlock makeItemFromBlock(Block block) 62 | { 63 | ItemBlock itemblock = new ItemBlock(block); 64 | itemblock.setRegistryName(block.getRegistryName()); 65 | itemblock.setCreativeTab(ModCreativeTab.instance); 66 | return itemblock; 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/register/crafting/FixedBrewingOreRecipe.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.register.crafting; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | 6 | import javax.annotation.Nonnull; 7 | 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraftforge.common.brewing.AbstractBrewingRecipe; 10 | import net.minecraftforge.common.brewing.BrewingOreRecipe; 11 | import net.minecraftforge.oredict.OreDictionary; 12 | 13 | public class FixedBrewingOreRecipe extends AbstractBrewingRecipe 14 | { 15 | //I wasn't expecting this to actually be a problem but it is 16 | //BrewingRecipe and BrewingOreRecipe are set up to handle OreDict items well, but not anything NBT related 17 | 18 | public FixedBrewingOreRecipe(ItemStack input, ItemStack ingredient, ItemStack output) 19 | { 20 | super(input, ingredient, output); 21 | } 22 | 23 | @Override 24 | public boolean isInput(@Nonnull ItemStack stack) 25 | { 26 | return super.isInput(stack) && ItemStack.areItemStackTagsEqual(getInput(), stack); 27 | } 28 | 29 | @Override 30 | public boolean isIngredient(ItemStack ingredient) 31 | { 32 | return OreDictionary.itemMatches(this.getIngredient(), ingredient, false); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierAltitude.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.config.ModConfig; 4 | 5 | import net.minecraft.util.math.BlockPos; 6 | import net.minecraft.world.World; 7 | 8 | public class ModifierAltitude extends ModifierBase 9 | { 10 | public ModifierAltitude() 11 | { 12 | super("Altitude"); 13 | } 14 | 15 | @Override 16 | public float getWorldInfluence(World world, BlockPos pos) 17 | { 18 | if(!world.provider.isSurfaceWorld()) 19 | return 0.0f; 20 | 21 | //0 - 64 = (1 to 0) * multiplier + 1 (-4 to -1) 22 | //64 - 128 = (0 to -1) * multiplier + 1 (-1 to -2) 23 | //128 - 192 = (-1 to -2) * multiplier + 1 (-2 to -5) 24 | //192 - 256 = (-2 to -3) * multiplier + 1 (-5 to -8) 25 | 26 | return -1.0f * (Math.abs(((64.0f - pos.getY()) / 64.0f * ModConfig.server.temperature.altitudeMultiplier) + 1.0f)); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierBiome.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.config.ModConfig; 4 | import com.charles445.simpledifficulty.debug.DebugUtil; 5 | 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.util.math.MathHelper; 8 | import net.minecraft.world.World; 9 | import net.minecraft.world.biome.Biome; 10 | 11 | public class ModifierBiome extends ModifierBase 12 | { 13 | public ModifierBiome() 14 | { 15 | super("Biome"); 16 | } 17 | 18 | @Override 19 | public float getWorldInfluence(World world, BlockPos pos) 20 | { 21 | //Takes 9 points in an octagon shape around the player (and where they're standing) and averages the biome temperature 22 | //This allows for biome temperatures to blend at their borders 23 | 24 | float biomeAverage = 25 | (getTempForBiome(world.getBiome(pos.add(10,0,0))) + 26 | getTempForBiome(world.getBiome(pos.add(-10,0,0))) + 27 | getTempForBiome(world.getBiome(pos.add(0,0,10))) + 28 | getTempForBiome(world.getBiome(pos.add(0,0,-10)))+ 29 | getTempForBiome(world.getBiome(pos.add(7,0,7)))+ 30 | getTempForBiome(world.getBiome(pos.add(7,0,-7)))+ 31 | getTempForBiome(world.getBiome(pos.add(-7,0,7)))+ 32 | getTempForBiome(world.getBiome(pos.add(-7,0,-7)))+ 33 | getTempForBiome(world.getBiome(pos)))/9.0f; 34 | 35 | //Turn the range 0 - 1 into the range -1 - 1 and apply the config multiplier 36 | return applyUndergroundEffect(normalizeToPlusMinus(biomeAverage) * ModConfig.server.temperature.biomeMultiplier, world, pos); 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierDefault.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.api.temperature.TemperatureEnum; 4 | 5 | import net.minecraft.util.math.BlockPos; 6 | import net.minecraft.world.World; 7 | 8 | public class ModifierDefault extends ModifierBase 9 | { 10 | public ModifierDefault() 11 | { 12 | super("Default"); 13 | } 14 | 15 | @Override 16 | public float getWorldInfluence(World world, BlockPos pos) 17 | { 18 | //Default 19 | return defaultTemperature; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierDimension.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.api.config.JsonConfig; 4 | import com.charles445.simpledifficulty.api.config.json.JsonTemperature; 5 | 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.world.World; 8 | 9 | public class ModifierDimension extends ModifierBase 10 | { 11 | public ModifierDimension() 12 | { 13 | super("Dimension"); 14 | } 15 | 16 | @Override 17 | public float getWorldInfluence(World world, BlockPos pos) 18 | { 19 | JsonTemperature tempInfo = JsonConfig.dimensionTemperature.get(""+world.provider.getDimension()); 20 | if(tempInfo!=null) 21 | { 22 | return tempInfo.temperature; 23 | } 24 | 25 | //TODO something with dimension names for ease of use 26 | 27 | return 0.0f; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierDynamicBase.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.api.temperature.ITemperatureDynamicModifier; 4 | import com.charles445.simpledifficulty.api.temperature.TemperatureEnum; 5 | 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.util.math.BlockPos; 8 | import net.minecraft.world.World; 9 | 10 | public abstract class ModifierDynamicBase implements ITemperatureDynamicModifier 11 | { 12 | private final String name; 13 | protected final float defaultTemperature; 14 | 15 | protected ModifierDynamicBase(String name) 16 | { 17 | this.name=name; 18 | this.defaultTemperature = (TemperatureEnum.NORMAL.getUpperBound() + TemperatureEnum.COLD.getUpperBound()) / 2; 19 | } 20 | 21 | @Override 22 | public float applyDynamicPlayerInfluence(EntityPlayer player, float currentTemperature) 23 | { 24 | return currentTemperature; 25 | } 26 | 27 | @Override 28 | public float applyDynamicWorldInfluence(World world, BlockPos pos, float currentTemperature) 29 | { 30 | return currentTemperature; 31 | } 32 | 33 | @Override 34 | public String getName() 35 | { 36 | return name; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierHeldItems.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import java.util.List; 4 | 5 | import com.charles445.simpledifficulty.api.config.JsonConfig; 6 | import com.charles445.simpledifficulty.api.config.json.JsonTemperatureIdentity; 7 | 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.item.ItemStack; 10 | 11 | public class ModifierHeldItems extends ModifierBase 12 | { 13 | public ModifierHeldItems() 14 | { 15 | super("HeldItems"); 16 | } 17 | 18 | @Override 19 | public float getPlayerInfluence(EntityPlayer player) 20 | { 21 | ItemStack mainHand = player.getHeldItemMainhand(); 22 | ItemStack offHand = player.getHeldItemOffhand(); 23 | 24 | float sum = 0.0f; 25 | 26 | if(!mainHand.isEmpty()) 27 | { 28 | sum += processStack(mainHand); 29 | } 30 | 31 | if(!offHand.isEmpty()) 32 | { 33 | sum += processStack(offHand); 34 | } 35 | 36 | return sum; 37 | } 38 | 39 | private float processStack(ItemStack stack) 40 | { 41 | List heldItemList = JsonConfig.heldItemTemperatures.get(stack.getItem().getRegistryName().toString()); 42 | 43 | if(heldItemList!=null) 44 | { 45 | for(JsonTemperatureIdentity jtm : heldItemList) 46 | { 47 | if(jtm==null) 48 | continue; 49 | 50 | if(jtm.matches(stack)) 51 | { 52 | return jtm.temperature; 53 | } 54 | } 55 | } 56 | 57 | return 0.0f; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierSnow.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.config.ModConfig; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.world.World; 8 | import net.minecraft.world.biome.Biome; 9 | 10 | public class ModifierSnow extends ModifierBase 11 | { 12 | public ModifierSnow() 13 | { 14 | super("Snow"); 15 | } 16 | 17 | //TODO I didn't check Serene Seasons compatibility with this, I should get around to that 18 | 19 | @Override 20 | public float getWorldInfluence(World world, BlockPos pos) 21 | { 22 | if(world.isRaining() && world.canSeeSky(pos)) 23 | { 24 | Biome biome = world.getBiome(pos); 25 | if(biome.getEnableSnow()) 26 | { 27 | //Snow enabled variant 28 | return ModConfig.server.temperature.snowValue; 29 | } 30 | else 31 | { 32 | //Relies on canSnowAt instead 33 | if(world.canSnowAt(pos, false)) 34 | return ModConfig.server.temperature.snowValue; 35 | else 36 | return 0.0f; 37 | } 38 | } 39 | else 40 | { 41 | return 0.0f; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierSprint.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.config.ModConfig; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.world.World; 8 | 9 | public class ModifierSprint extends ModifierBase 10 | { 11 | public ModifierSprint() 12 | { 13 | super("Sprint"); 14 | } 15 | 16 | @Override 17 | public float getPlayerInfluence(EntityPlayer player) 18 | { 19 | if(player.isSprinting()) 20 | return ModConfig.server.temperature.sprintingValue; 21 | else 22 | return 0.0f; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierTemporary.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import java.util.Map; 4 | 5 | import com.charles445.simpledifficulty.api.SDCapabilities; 6 | import com.charles445.simpledifficulty.api.temperature.TemporaryModifier; 7 | 8 | import net.minecraft.entity.player.EntityPlayer; 9 | 10 | public class ModifierTemporary extends ModifierBase 11 | { 12 | public ModifierTemporary() 13 | { 14 | super("Temporary"); 15 | } 16 | 17 | @Override 18 | public float getPlayerInfluence(EntityPlayer player) 19 | { 20 | float sum = 0.0f; 21 | for(TemporaryModifier tm : SDCapabilities.getTemperatureData(player).getTemporaryModifiers().values()) 22 | { 23 | sum += tm.temperature; 24 | } 25 | return sum; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/temperature/ModifierWet.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.temperature; 2 | 3 | import com.charles445.simpledifficulty.api.config.JsonConfig; 4 | import com.charles445.simpledifficulty.api.config.json.JsonTemperature; 5 | import com.charles445.simpledifficulty.config.ModConfig; 6 | 7 | import net.minecraft.block.Block; 8 | import net.minecraft.block.material.Material; 9 | import net.minecraft.block.state.IBlockState; 10 | import net.minecraft.util.math.BlockPos; 11 | import net.minecraft.world.World; 12 | import net.minecraftforge.fluids.Fluid; 13 | import net.minecraftforge.fluids.IFluidBlock; 14 | 15 | public class ModifierWet extends ModifierBase 16 | { 17 | public ModifierWet() 18 | { 19 | super("Wet"); 20 | } 21 | 22 | /* 23 | @Override 24 | public float getPlayerInfluence(EntityPlayer player) 25 | { 26 | if(player.isWet()) 27 | return ModConfig.server.temperature.wetValue; 28 | else 29 | return 0.0f; 30 | } 31 | */ 32 | 33 | @Override 34 | public float getWorldInfluence(World world, BlockPos pos) 35 | { 36 | //TODO isRainingAt is currently tricked by trap doors and doors 37 | 38 | //Optifine + Serene Seasons = misleading particle effects 39 | //Nothing I can do about that... 40 | 41 | IBlockState state = world.getBlockState(pos); 42 | Block block = state.getBlock(); 43 | 44 | if(block instanceof IFluidBlock) 45 | { 46 | //Modded fluid 47 | Fluid fluid = ((IFluidBlock)block).getFluid(); 48 | if(fluid != null) 49 | { 50 | JsonTemperature tempInfo = JsonConfig.fluidTemperatures.get(fluid.getName()); 51 | if(tempInfo!=null) 52 | { 53 | //Overridden mod fluid 54 | return tempInfo.temperature; 55 | } 56 | } 57 | } 58 | 59 | //Vanilla fluid, or modded fluid with no override, or no fluid at all 60 | 61 | if(state.getMaterial() == Material.WATER) 62 | { 63 | return ModConfig.server.temperature.wetValue; 64 | } 65 | else if(world.isRainingAt(pos)) 66 | { 67 | //Rain 68 | return ModConfig.server.temperature.wetValue; 69 | } 70 | else 71 | { 72 | return 0.0f; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/CompatUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.charles445.simpledifficulty.SimpleDifficulty; 6 | import com.charles445.simpledifficulty.api.SDCompatibility; 7 | 8 | import net.minecraftforge.common.MinecraftForge; 9 | import net.minecraftforge.fml.common.Loader; 10 | import net.minecraftforge.fml.common.ModContainer; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | import net.minecraftforge.fml.relauncher.ReflectionHelper; 13 | 14 | public class CompatUtil 15 | { 16 | private static CompatUtil instance; 17 | 18 | //EventBus 19 | private Class EventBus; 20 | private Method m_register; 21 | 22 | public static boolean canUseMod(String modid) 23 | { 24 | return Loader.isModLoaded(modid) && !SDCompatibility.disabledCompletely.contains(modid); 25 | } 26 | 27 | 28 | /** Manual EVENT_BUS registering 29 | * Don't forget to add the SubscribeEvent annotation 30 | * But do not register the whole class to the event bus! 31 | * 32 | * @param clazz (Event) Event Class 33 | * @param thiz (this) Event Handler Object 34 | * @param thiz_toCall (this.onEvent(Object event)) Method to be invoked 35 | * @return 36 | */ 37 | public static boolean subscribeEventManually(Class clazz, Object thiz, Method thiz_toCall) 38 | { 39 | try 40 | { 41 | if(instance==null) 42 | { 43 | instance = new CompatUtil(); 44 | instance.EventBus = Class.forName("net.minecraftforge.fml.common.eventhandler.EventBus"); 45 | instance.m_register = instance.EventBus.getDeclaredMethod("register", Class.class, Object.class, Method.class, ModContainer.class); 46 | instance.m_register.setAccessible(true); 47 | } 48 | 49 | if(!thiz_toCall.isAnnotationPresent(SubscribeEvent.class)) 50 | { 51 | SimpleDifficulty.logger.error("Method needs a SubscribeEvent annotation, go add one."); 52 | return false; 53 | } 54 | 55 | instance.m_register.invoke(MinecraftForge.EVENT_BUS, clazz, thiz, thiz_toCall, Loader.instance().getMinecraftModContainer()); 56 | 57 | return true; 58 | } 59 | catch(Exception e) 60 | { 61 | SimpleDifficulty.logger.error("subscribeEventManually error.",e); 62 | return false; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/DamageUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import com.charles445.simpledifficulty.api.config.ServerConfig; 4 | import com.charles445.simpledifficulty.api.config.ServerOptions; 5 | 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.world.EnumDifficulty; 8 | import net.minecraft.world.World; 9 | 10 | public class DamageUtil 11 | { 12 | //Utility for damaging players safely based on difficulty and settings 13 | 14 | public static boolean isModDangerous(World world) 15 | { 16 | //Whether to do thirst or health damage to the player or not 17 | 18 | //Return false only if the world is peaceful, and the peaceful danger config is set to false 19 | if(world.getDifficulty() != EnumDifficulty.PEACEFUL || ServerConfig.instance.getBoolean(ServerOptions.PEACEFUL_DANGER)) 20 | return true; 21 | return false; 22 | } 23 | 24 | public static boolean healthAboveDifficulty(World world, EntityPlayer player) 25 | { 26 | //Check if difficulty allows for damage 27 | 28 | EnumDifficulty difficulty = world.getDifficulty(); 29 | if(difficulty==EnumDifficulty.HARD || 30 | (difficulty==EnumDifficulty.NORMAL && player.getHealth()>1.0f) || 31 | (difficulty==EnumDifficulty.EASY && player.getHealth()>10.0f) || 32 | (difficulty==EnumDifficulty.PEACEFUL && player.getHealth()>10.0f) 33 | ) 34 | { 35 | return true; 36 | } 37 | else 38 | { 39 | return false; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/OreDictUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import javax.annotation.Nonnull; 4 | 5 | import com.charles445.simpledifficulty.debug.DebugUtil; 6 | 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.NonNullList; 9 | import net.minecraftforge.oredict.OreDictionary; 10 | 11 | public class OreDictUtil 12 | { 13 | public static final NonNullList listAlljuice = OreDictionary.getOres("listAlljuice"); 14 | public static final NonNullList listAllsmoothie = OreDictionary.getOres("listAllsmoothie"); 15 | public static final NonNullList listAllsoda = OreDictionary.getOres("listAllsoda"); 16 | 17 | public static final NonNullList logWood = OreDictionary.getOres("logWood"); 18 | public static final NonNullList stick = OreDictionary.getOres("stickWood"); 19 | 20 | public static boolean isOre(NonNullList stackList, ItemStack stackCheck) 21 | { 22 | return OreDictUtil.containsMatch(false,stackList,stackCheck); 23 | } 24 | 25 | public static boolean containsMatch(boolean strict, NonNullList inputs, @Nonnull ItemStack... targets) 26 | { 27 | for (ItemStack input : inputs) 28 | { 29 | for (ItemStack target : targets) 30 | { 31 | //SWAPPED INPUT AND TARGET 32 | //Why is it like this 33 | if (OreDictionary.itemMatches(input, target, strict)) 34 | { 35 | return true; 36 | } 37 | } 38 | } 39 | return false; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/QuadConsumer.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import java.util.Objects; 4 | 5 | @FunctionalInterface 6 | public interface QuadConsumer 7 | { 8 | void accept(A a, B b, C c, D d); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/ReflectUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import java.lang.reflect.Array; 4 | import java.lang.reflect.Field; 5 | import java.lang.reflect.Method; 6 | import java.util.Arrays; 7 | 8 | public class ReflectUtil 9 | { 10 | public static Method findMethod(Class clazz, String name) throws Exception 11 | { 12 | //Desc is not specified 13 | for(Method m : clazz.getDeclaredMethods()) 14 | { 15 | if(m.getName().equals(name)) 16 | { 17 | m.setAccessible(true); 18 | return m; 19 | } 20 | } 21 | 22 | throw new NoSuchMethodException(name); 23 | } 24 | 25 | public static Method findMethodAny(Class clazz, String nameA, String nameB, Class... params) throws Exception 26 | { 27 | try 28 | { 29 | return findMethod(clazz, nameA, params); 30 | } 31 | catch(Exception e) 32 | { 33 | return findMethod(clazz, nameB, params); 34 | } 35 | } 36 | 37 | public static Method findMethod(Class clazz, String name, Class... params) throws Exception 38 | { 39 | Method m = clazz.getDeclaredMethod(name, params); 40 | m.setAccessible(true); 41 | return m; 42 | } 43 | 44 | public static Field findField(Class clazz, String name) throws Exception 45 | { 46 | Field f = clazz.getDeclaredField(name); 47 | f.setAccessible(true); 48 | return f; 49 | } 50 | 51 | public static Field findFieldAny(Class clazz, String nameA, String nameB) throws Exception 52 | { 53 | try 54 | { 55 | return findField(clazz, nameA); 56 | } 57 | catch(Exception e) 58 | { 59 | return findField(clazz, nameB); 60 | } 61 | } 62 | 63 | public static Field[] findFields(Class clazz, String... names) throws Exception 64 | { 65 | Field[] fields = new Field[names.length]; 66 | 67 | for(int i = 0; i < fields.length; i++) 68 | { 69 | fields[i] = findField(clazz,names[i]); 70 | } 71 | 72 | return fields; 73 | } 74 | 75 | public static Object[] createCastedArray(Class clazz, Object[] inputArray) 76 | { 77 | Class arrayClazz = Array.newInstance(clazz, 0).getClass(); 78 | return Arrays.copyOf(inputArray, inputArray.length, arrayClazz); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/RenderUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import org.lwjgl.opengl.GL11; 4 | 5 | import net.minecraft.client.renderer.BufferBuilder; 6 | import net.minecraft.client.renderer.Tessellator; 7 | import net.minecraft.client.renderer.vertex.DefaultVertexFormats; 8 | 9 | public class RenderUtil 10 | { 11 | // 12 | // Essentially a static version of net.minecraft.client.gui.Gui.drawTexturedModalRect 13 | // 14 | 15 | public static void drawTexturedModalRect(float x, float y, int texX, int texY, int width, int height) 16 | { 17 | float f = 0.00390625F; 18 | float f1 = 0.00390625F; 19 | double z = 0.0D; 20 | 21 | Tessellator tessellator = Tessellator.getInstance(); 22 | BufferBuilder bufferbuilder = tessellator.getBuffer(); 23 | bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); 24 | bufferbuilder.pos(x, y + height, z) 25 | .tex((texX * f), (texY + height) * f1).endVertex(); 26 | bufferbuilder.pos((x + width), y + height, z) 27 | .tex((texX + width) * f, (texY + height) * f1).endVertex(); 28 | bufferbuilder.pos((x + width), y, z) 29 | .tex((texX + width) * f,(texY * f1)).endVertex(); 30 | bufferbuilder.pos(x, y, z) 31 | .tex((texX * f), (texY * f1)).endVertex(); 32 | tessellator.draw(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/SoundUtil.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.init.SoundEvents; 5 | import net.minecraft.util.SoundCategory; 6 | import net.minecraft.util.SoundEvent; 7 | import net.minecraft.util.math.BlockPos; 8 | import net.minecraft.world.World; 9 | 10 | public class SoundUtil 11 | { 12 | /** 13 | * Must be run on both sides to work as intended 14 | */ 15 | public static void commonPlayPlayerSound(EntityPlayer player, SoundEvent sound) 16 | { 17 | player.playSound(sound, 0.5f, 1.0f); 18 | } 19 | 20 | public static void serverPlayBlockSound(World world, BlockPos pos, SoundEvent sound) 21 | { 22 | if(!world.isRemote) 23 | { 24 | float volume = 0.75f; 25 | 26 | if(sound==SoundEvents.ENTITY_GENERIC_DRINK) 27 | volume = 0.5f; 28 | 29 | world.playSound(null, pos, sound, SoundCategory.BLOCKS, volume, 1.0f); 30 | } 31 | } 32 | 33 | public static void serverPlayBlockSound(World world, BlockPos pos, SoundEvent sound, float volume) 34 | { 35 | if(!world.isRemote) 36 | { 37 | world.playSound(null, pos, sound, SoundCategory.BLOCKS, volume, 1.0f); 38 | } 39 | } 40 | 41 | public static void serverPlayBlockSound(World world, BlockPos pos, SoundEvent sound, float volume, float pitch) 42 | { 43 | if(!world.isRemote) 44 | { 45 | world.playSound(null, pos, sound, SoundCategory.BLOCKS, volume, pitch); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/TriConsumer.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | import java.util.Objects; 4 | 5 | @FunctionalInterface 6 | public interface TriConsumer 7 | { 8 | void accept(A a, B b, C c); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/charles445/simpledifficulty/util/VersionDelimiter.java: -------------------------------------------------------------------------------- 1 | package com.charles445.simpledifficulty.util; 2 | 3 | public class VersionDelimiter 4 | { 5 | public int major; 6 | public int minor; 7 | public int patch; 8 | 9 | public VersionDelimiter(String ss) 10 | { 11 | if(ss==null || ss.isEmpty()) 12 | { 13 | wipeVersion(); 14 | return; 15 | } 16 | 17 | String[] split = ss.split("\\."); 18 | 19 | if(split.length!=3) 20 | { 21 | wipeVersion(); 22 | return; 23 | } 24 | 25 | try 26 | { 27 | this.major = Integer.parseInt(split[0]); 28 | this.minor = Integer.parseInt(split[1]); 29 | this.patch = Integer.parseInt(split[2]); 30 | } 31 | catch(NumberFormatException e) 32 | { 33 | wipeVersion(); 34 | return; 35 | } 36 | } 37 | 38 | public VersionDelimiter(int major, int minor, int patch) 39 | { 40 | this.major = major; 41 | this.minor = minor; 42 | this.patch = patch; 43 | } 44 | 45 | public boolean isSameOrNewerVersion(VersionDelimiter vd) 46 | { 47 | return isSameOrNewerVersion(vd.major, vd.minor, vd.patch); 48 | } 49 | 50 | public boolean isSameOrNewerVersion(int major, int minor) 51 | { 52 | return isSameOrNewerVersion(major, minor, 0); 53 | } 54 | 55 | public boolean isSameOrNewerVersion(int major, int minor, int patch) 56 | { 57 | if(this.major>major) 58 | { 59 | return true; 60 | } 61 | else if(this.major==major) 62 | { 63 | if(this.minor>minor) 64 | { 65 | return true; 66 | } 67 | else if(this.minor==minor) 68 | { 69 | if(this.patch>=patch) 70 | { 71 | return true; 72 | } 73 | } 74 | } 75 | return false; 76 | } 77 | 78 | private void wipeVersion() 79 | { 80 | this.major = 0; 81 | this.minor = 0; 82 | this.patch = 0; 83 | } 84 | 85 | @Override 86 | public String toString() 87 | { 88 | return ""+major+"."+minor+"."+patch; 89 | } 90 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/campfire.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "defaults": { 4 | "model": "simpledifficulty:campfire" 5 | }, 6 | "variants": { 7 | "age=0": { "model": "simpledifficulty:campfire"}, 8 | "age=1": { "model": "simpledifficulty:campfire"}, 9 | "age=2": { "model": "simpledifficulty:campfire"}, 10 | "age=3": { "model": "simpledifficulty:campfire_half"}, 11 | "age=4": { "model": "simpledifficulty:campfire_half"}, 12 | "age=5": { "model": "simpledifficulty:campfire_half"}, 13 | "age=6": { "model": "simpledifficulty:campfire_burnt"}, 14 | "age=7": { "model": "simpledifficulty:campfire_burnt"} 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/chiller.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "variants": { 4 | "enabled=true": { "model": "simpledifficulty:temper_chill_on"}, 5 | "enabled=false": { "model": "simpledifficulty:temper_chill_off"} 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/fluids.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "defaults": { 4 | "model": "forge:fluid" 5 | }, 6 | "variants": { 7 | "purifiedwater": [{ 8 | "custom": { "fluid": "purifiedwater" } 9 | }] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/heater.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "variants": { 4 | "enabled=true": { "model": "simpledifficulty:temper_heat_on"}, 5 | "enabled=false": { "model": "simpledifficulty:temper_heat_off"} 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/purifiedwater.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "variants": { 4 | "normal": [{}], 5 | "inventory": [{}], 6 | "level": { 7 | "0": { }, 8 | "1": { }, 9 | "2": { }, 10 | "3": { }, 11 | "4": { }, 12 | "5": { }, 13 | "6": { }, 14 | "7": { }, 15 | "8": { }, 16 | "9": { }, 17 | "10": { }, 18 | "11": { }, 19 | "12": { }, 20 | "13": { }, 21 | "14": { }, 22 | "15": { } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/rain_collector.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "variants": { 4 | "level=0": {"model": "simpledifficulty:rain_collector_0"}, 5 | "level=1": {"model": "simpledifficulty:rain_collector_1"}, 6 | "level=2": {"model": "simpledifficulty:rain_collector_2"}, 7 | "level=3": {"model": "simpledifficulty:rain_collector_3"} 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/blockstates/spit.json: -------------------------------------------------------------------------------- 1 | { 2 | "forge_marker": 1, 3 | "defaults": { 4 | "model": "simpledifficulty:spit" 5 | }, 6 | "variants": { 7 | "normal": { "model": "simpledifficulty:spit"} 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/campfire.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "simpledifficulty:block/campfire" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/canteen.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/canteen" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/charcoal_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/charcoal_filter" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/chiller.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "simpledifficulty:block/temper_chill_on" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/dragon_canteen.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/dragon_canteen" 5 | }, 6 | "overrides": [ 7 | { "predicate": { "contain": 0.00 }, "model": "simpledifficulty:item/dragon_canteen" }, 8 | { "predicate": { "contain": 0.99 }, "model": "simpledifficulty:item/dragon_canteen_full" } 9 | ] 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/dragon_canteen_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/dragon_canteen_full" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/frost_powder.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/frost_powder" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/frost_rod.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/frost_rod" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/heater.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "simpledifficulty:block/temper_heat_on" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/ice_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/ice_boots" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/ice_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/ice_chestplate" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/ice_chunk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/ice_chunk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/ice_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/ice_helmet" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/ice_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/ice_leggings" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/iron_canteen.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/iron_canteen" 5 | }, 6 | "overrides": [ 7 | { "predicate": { "contain": 0.00 }, "model": "simpledifficulty:item/iron_canteen" }, 8 | { "predicate": { "contain": 0.99 }, "model": "simpledifficulty:item/iron_canteen_full" } 9 | ] 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/iron_canteen_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/iron_canteen_full" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice" 5 | }, 6 | "overrides": [ 7 | {"predicate":{"simpledifficulty:type": 0}, "model": "simpledifficulty:item/juice/juice_apple"}, 8 | {"predicate":{"simpledifficulty:type": 1}, "model": "simpledifficulty:item/juice/juice_beetroot"}, 9 | {"predicate":{"simpledifficulty:type": 2}, "model": "simpledifficulty:item/juice/juice_cactus"}, 10 | {"predicate":{"simpledifficulty:type": 3}, "model": "simpledifficulty:item/juice/juice_carrot"}, 11 | {"predicate":{"simpledifficulty:type": 4}, "model": "simpledifficulty:item/juice/juice_chorus_fruit"}, 12 | {"predicate":{"simpledifficulty:type": 5}, "model": "simpledifficulty:item/juice/juice_golden_apple"}, 13 | {"predicate":{"simpledifficulty:type": 6}, "model": "simpledifficulty:item/juice/juice_golden_carrot"}, 14 | {"predicate":{"simpledifficulty:type": 7}, "model": "simpledifficulty:item/juice/juice_golden_melon"}, 15 | {"predicate":{"simpledifficulty:type": 8}, "model": "simpledifficulty:item/juice/juice_melon"}, 16 | {"predicate":{"simpledifficulty:type": 9}, "model": "simpledifficulty:item/juice/juice_pumpkin"} 17 | ] 18 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_apple.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_apple" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_beetroot.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_beetroot" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_cactus.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_cactus" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_carrot.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_carrot" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_chorus_fruit.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_chorus_fruit" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_golden_apple.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_golden_apple" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_golden_carrot.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_golden_carrot" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_golden_melon.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_golden_melon" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_melon.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_melon" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/juice/juice_pumpkin.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/juice/juice_pumpkin" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/magma_chunk.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/magma_chunk" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/purified_water_bottle.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/purified_water_bottle" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/rain_collector.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "simpledifficulty:block/rain_collector_0" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/spit.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "simpledifficulty:block/spit" 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_01.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_01" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_02.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_02" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_03.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_03" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_04.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_04" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_05.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_05" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_06.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_06" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_07.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_07" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_08.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_08" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_09.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_09" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_10.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_10" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_11.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_11" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_12.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_12" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_13.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_13" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_14.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_14" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_15.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_15" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_16.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_16" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_17.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_17" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_18.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_18" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_19.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_19" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_20.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_20" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_21.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_21" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_22.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_22" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_23.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_23" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_24.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_24" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/thermometer_25.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/thermometer_25" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/wool_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/wool_boots" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/wool_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/wool_chestplate" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/wool_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/wool_helmet" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/models/item/wool_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "simpledifficulty:items/wool_leggings" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/_constants.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"name": "BUCKET", "ingredient": {"item": "minecraft:bucket"}}, 3 | {"name": "CHARCOAL", "ingredient": {"item": "minecraft:coal", "data": 1}}, 4 | {"name": "GOLDEN_APPLE", "ingredient": {"item": "minecraft:golden_apple", "data": 0}}, 5 | {"name": "SUGAR", "ingredient": {"item": "minecraft:sugar"}}, 6 | 7 | {"name": "CHARCOAL_FILTER", "ingredient": {"item": "simpledifficulty:charcoal_filter"}}, 8 | {"name": "ICE_CHUNK", "ingredient": {"item": "simpledifficulty:ice_chunk"}}, 9 | {"name": "MAGMA_CHUNK", "ingredient": {"item": "simpledifficulty:magma_chunk"}}, 10 | {"name": "JUICE_APPLE", "ingredient": {"item": "simpledifficulty:juice", "data": 0}}, 11 | {"name": "JUICE_BEETROOT", "ingredient": {"item": "simpledifficulty:juice", "data": 1}}, 12 | {"name": "JUICE_CACTUS", "ingredient": {"item": "simpledifficulty:juice", "data": 2}}, 13 | {"name": "JUICE_CARROT", "ingredient": {"item": "simpledifficulty:juice", "data": 3}}, 14 | {"name": "JUICE_CHORUS_FRUIT", "ingredient": {"item": "simpledifficulty:juice", "data": 4}}, 15 | {"name": "JUICE_GOLDEN_APPLE", "ingredient": {"item": "simpledifficulty:juice", "data": 5}}, 16 | {"name": "JUICE_GOLDEN_CARROT", "ingredient": {"item": "simpledifficulty:juice", "data": 6}}, 17 | {"name": "JUICE_GOLDEN_MELON", "ingredient": {"item": "simpledifficulty:juice", "data": 7}}, 18 | {"name": "JUICE_MELON", "ingredient": {"item": "simpledifficulty:juice", "data": 8}}, 19 | {"name": "JUICE_PUMPKIN", "ingredient": {"item": "simpledifficulty:juice", "data": 9}}, 20 | {"name": "PURIFIED_WATER_BOTTLE", "ingredient": {"item": "simpledifficulty:purified_water_bottle"}} 21 | ] -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/_factories.json: -------------------------------------------------------------------------------- 1 | { 2 | "recipes": { 3 | "canteen_charcoal_recipe": "com.charles445.simpledifficulty.register.crafting.CanteenCharcoalRecipe$Factory" 4 | } 5 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/block_ice.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "MM", 6 | "MM" 7 | ], 8 | "key": 9 | { 10 | "M": 11 | { 12 | "item": "#ICE_CHUNK" 13 | } 14 | }, 15 | "result": 16 | { 17 | "item": "minecraft:ice" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/block_ice_packed.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "MMM", 6 | "MMM", 7 | "MMM" 8 | ], 9 | "key": 10 | { 11 | "M": 12 | { 13 | "item": "#ICE_CHUNK" 14 | } 15 | }, 16 | "result": 17 | { 18 | "item": "minecraft:packed_ice" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/block_magma.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "MM", 6 | "MM" 7 | ], 8 | "key": 9 | { 10 | "M": 11 | { 12 | "item": "#MAGMA_CHUNK" 13 | } 14 | }, 15 | "result": 16 | { 17 | "item": "minecraft:magma" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/campfire.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | " L ", 6 | "LLL", 7 | "WWW" 8 | ], 9 | "key": 10 | { 11 | "W": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "plankWood" 15 | }, 16 | "L": 17 | { 18 | "type": "forge:ore_dict", 19 | "ore": "logWood" 20 | } 21 | }, 22 | "result": 23 | { 24 | "item": "simpledifficulty:campfire" 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/canteen_dumped.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients":[ 4 | { 5 | "item": "simpledifficulty:canteen", 6 | "data": 32767 7 | }], 8 | "result": 9 | { 10 | "type": "minecraft:item_nbt", 11 | "item": "simpledifficulty:canteen", 12 | "count": 1, 13 | "nbt": 14 | { 15 | "Doses": 0, 16 | "CanteenType": 0 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/canteen_empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | " x ", 6 | "x x", 7 | "xxx" 8 | ], 9 | "key": 10 | { 11 | "x": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "leather" 15 | } 16 | }, 17 | "result": 18 | { 19 | "type": "minecraft:item_nbt", 20 | "item": "simpledifficulty:canteen", 21 | "count": 1, 22 | "nbt": 23 | { 24 | "Doses": 0, 25 | "CanteenType": 0 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/canteen_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "simpledifficulty:canteen_charcoal_recipe", 3 | "ingredients":[ 4 | { 5 | "item": "simpledifficulty:canteen", 6 | "data": 32767 7 | }, 8 | { 9 | "item": "#CHARCOAL_FILTER" 10 | }], 11 | "result": 12 | { 13 | "type": "minecraft:item_nbt", 14 | "item": "simpledifficulty:canteen", 15 | "count": 1, 16 | "nbt": 17 | { 18 | "Doses": 0, 19 | "CanteenType": 0 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/charcoal_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "p", 6 | "x", 7 | "p" 8 | ], 9 | "key": 10 | { 11 | "p": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "paper" 15 | }, 16 | "x": 17 | { 18 | "item": "#CHARCOAL" 19 | } 20 | }, 21 | "result": 22 | { 23 | "item": "simpledifficulty:charcoal_filter", 24 | "count": 3 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/chiller.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "C C", 6 | "CSC", 7 | "SRS" 8 | ], 9 | "key": 10 | { 11 | "C": 12 | { 13 | "item": "#ICE_CHUNK" 14 | }, 15 | "S": 16 | { 17 | "type": "forge:ore_dict", 18 | "ore": "cobblestone" 19 | }, 20 | "R": 21 | { 22 | "type": "forge:ore_dict", 23 | "ore": "dustRedstone" 24 | } 25 | }, 26 | "result": 27 | { 28 | "item": "simpledifficulty:chiller" 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/heater.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "C C", 6 | "CSC", 7 | "SRS" 8 | ], 9 | "key": 10 | { 11 | "C": 12 | { 13 | "item": "#MAGMA_CHUNK" 14 | }, 15 | "S": 16 | { 17 | "type": "forge:ore_dict", 18 | "ore": "cobblestone" 19 | }, 20 | "R": 21 | { 22 | "type": "forge:ore_dict", 23 | "ore": "dustRedstone" 24 | } 25 | }, 26 | "result": 27 | { 28 | "item": "simpledifficulty:heater" 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/ice_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "S S", 6 | "S S" 7 | ], 8 | "key": 9 | { 10 | "S": 11 | { 12 | "item": "#ICE_CHUNK" 13 | } 14 | }, 15 | "result": 16 | { 17 | "item": "simpledifficulty:ice_boots" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/ice_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "S S", 6 | "SSS", 7 | "SSS" 8 | ], 9 | "key": 10 | { 11 | "S": 12 | { 13 | "item": "#ICE_CHUNK" 14 | } 15 | }, 16 | "result": 17 | { 18 | "item": "simpledifficulty:ice_chestplate" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/ice_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "SSS", 6 | "S S" 7 | ], 8 | "key": 9 | { 10 | "S": 11 | { 12 | "item": "#ICE_CHUNK" 13 | } 14 | }, 15 | "result": 16 | { 17 | "item": "simpledifficulty:ice_helmet" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/ice_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "SSS", 6 | "S S", 7 | "S S" 8 | ], 9 | "key": 10 | { 11 | "S": 12 | { 13 | "item": "#ICE_CHUNK" 14 | } 15 | }, 16 | "result": 17 | { 18 | "item": "simpledifficulty:ice_leggings" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/iron_canteen_dumped.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients":[ 4 | { 5 | "item": "simpledifficulty:iron_canteen", 6 | "data": 32767 7 | }], 8 | "result": 9 | { 10 | "type": "minecraft:item_nbt", 11 | "item": "simpledifficulty:iron_canteen", 12 | "count": 1, 13 | "nbt": 14 | { 15 | "Doses": 0, 16 | "CanteenType": 0 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/iron_canteen_empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | " I ", 6 | "ICI", 7 | "III" 8 | ], 9 | "key": 10 | { 11 | "C": 12 | { 13 | "item": "simpledifficulty:canteen" 14 | }, 15 | "I": 16 | { 17 | "type": "forge:ore_dict", 18 | "ore": "ingotIron" 19 | } 20 | }, 21 | "result": 22 | { 23 | "type": "minecraft:item_nbt", 24 | "item": "simpledifficulty:iron_canteen", 25 | "count": 1, 26 | "nbt": 27 | { 28 | "Doses": 0, 29 | "CanteenType": 0 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/iron_canteen_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "simpledifficulty:canteen_charcoal_recipe", 3 | "ingredients":[ 4 | { 5 | "item": "simpledifficulty:iron_canteen", 6 | "data": 32767 7 | }, 8 | { 9 | "item": "#CHARCOAL_FILTER" 10 | }], 11 | "result": 12 | { 13 | "type": "minecraft:item_nbt", 14 | "item": "simpledifficulty:iron_canteen", 15 | "count": 1, 16 | "nbt": 17 | { 18 | "Doses": 0, 19 | "CanteenType": 0 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_apple.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:apple" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 0 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_beetroot.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:beetroot" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 1 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_cactus.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:cactus" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 2 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_carrot.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:carrot" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 3 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_chorus_fruit.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:chorus_fruit" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 4 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_golden_apple.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "#GOLDEN_APPLE" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 5 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_golden_carrot.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:golden_carrot" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 6 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_golden_melon.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:speckled_melon" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 7 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_melon.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:melon" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 8 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/juice_pumpkin.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients": [{"item": "#SUGAR"},{"item": "#PURIFIED_WATER_BOTTLE"}, 4 | { 5 | "item": "minecraft:pumpkin" 6 | } 7 | 8 | ], 9 | "result": 10 | { 11 | "item": "simpledifficulty:juice", 12 | "data": 9 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/potion_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shapeless", 3 | "ingredients":[ 4 | { 5 | "item": "minecraft:potion" 6 | }, 7 | { 8 | "item": "#CHARCOAL_FILTER" 9 | }], 10 | "result": 11 | { 12 | "item": "simpledifficulty:purified_water_bottle" 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/rain_collector.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "RSR", 6 | "CBC", 7 | "CCC" 8 | ], 9 | "key": 10 | { 11 | "S": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "string" 15 | }, 16 | "C": 17 | { 18 | "type": "forge:ore_dict", 19 | "ore": "cobblestone" 20 | }, 21 | "R": 22 | { 23 | "type": "forge:ore_dict", 24 | "ore": "ingotIron" 25 | }, 26 | "B": 27 | { 28 | "item": "#BUCKET" 29 | } 30 | }, 31 | "result": 32 | { 33 | "item": "simpledifficulty:rain_collector" 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/spit.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "pxp" 6 | ], 7 | "key": 8 | { 9 | "p": 10 | { 11 | "type": "forge:ore_dict", 12 | "ore": "stickWood" 13 | }, 14 | "x": 15 | { 16 | "type": "forge:ore_dict", 17 | "ore": "cobblestone" 18 | } 19 | }, 20 | "result": 21 | { 22 | "item": "simpledifficulty:spit", 23 | "count": 1 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/thermometer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | " G ", 6 | "GRG", 7 | " G " 8 | ], 9 | "key": 10 | { 11 | "G": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "blockGlass" 15 | }, 16 | "R": 17 | { 18 | "type": "forge:ore_dict", 19 | "ore": "dustRedstone" 20 | } 21 | }, 22 | "result": 23 | { 24 | "item": "simpledifficulty:thermometer" 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/wool_boots.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "S S", 6 | "S S" 7 | ], 8 | "key": 9 | { 10 | "S": 11 | { 12 | "type": "forge:ore_dict", 13 | "ore": "wool" 14 | } 15 | }, 16 | "result": 17 | { 18 | "item": "simpledifficulty:wool_boots" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/wool_chestplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "S S", 6 | "SSS", 7 | "SSS" 8 | ], 9 | "key": 10 | { 11 | "S": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "wool" 15 | } 16 | }, 17 | "result": 18 | { 19 | "item": "simpledifficulty:wool_chestplate" 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/wool_helmet.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "SSS", 6 | "S S" 7 | ], 8 | "key": 9 | { 10 | "S": 11 | { 12 | "type": "forge:ore_dict", 13 | "ore": "wool" 14 | } 15 | }, 16 | "result": 17 | { 18 | "item": "simpledifficulty:wool_helmet" 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/recipes/wool_leggings.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "forge:ore_shaped", 3 | "pattern": 4 | [ 5 | "SSS", 6 | "S S", 7 | "S S" 8 | ], 9 | "key": 10 | { 11 | "S": 12 | { 13 | "type": "forge:ore_dict", 14 | "ore": "wool" 15 | } 16 | }, 17 | "result": 18 | { 19 | "item": "simpledifficulty:wool_leggings" 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_burnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_burnt.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_burnt_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_burnt_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_half.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_half.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_half_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_half_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_oak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_oak.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_oak_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_oak_top.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/campfire_stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/campfire_stone.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_b.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_s.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_t.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/rain_collector_tt.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/spit_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/spit_all.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/spit_part.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/spit_part.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_base.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chill_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chill_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chill_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chill_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_off2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_off2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_on2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_chillsmooth_on2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_cut.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heat_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heat_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heat_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heat_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_off2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_off2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_on2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/blocks/temper_heatsmooth_on2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_flow.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_flow.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": {} 3 | } -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_still.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_still.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/fluids/purifiedwater_still.png.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "animation": { 3 | "frametime": 2 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/gui/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/gui/icons.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/gui/temphud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/gui/temphud.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/gui/thirsthud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/gui/thirsthud.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/canteen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/canteen.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/charcoal_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/charcoal_filter.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/dragon_canteen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/dragon_canteen.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/dragon_canteen_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/dragon_canteen_full.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/frost_powder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/frost_powder.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/frost_rod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/frost_rod.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/ice_boots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/ice_boots.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/ice_chestplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/ice_chestplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/ice_chunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/ice_chunk.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/ice_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/ice_helmet.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/ice_leggings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/ice_leggings.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/iron_canteen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/iron_canteen.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/iron_canteen_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/iron_canteen_full.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_apple.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_beetroot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_beetroot.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_cactus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_cactus.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_carrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_carrot.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_chorus_fruit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_chorus_fruit.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_apple.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_carrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_carrot.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_melon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_golden_melon.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_melon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_melon.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/juice/juice_pumpkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/juice/juice_pumpkin.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/magma_chunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/magma_chunk.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/purified_water_bottle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/purified_water_bottle.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_00.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_01.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_02.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_03.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_04.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_05.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_06.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_07.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_08.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_09.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_10.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_11.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_12.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_13.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_14.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_15.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_16.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_17.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_18.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_19.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_20.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_21.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_22.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_23.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_24.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/thermometer_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/thermometer_25.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/wool_boots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/wool_boots.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/wool_chestplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/wool_chestplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/wool_helmet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/wool_helmet.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/items/wool_leggings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/items/wool_leggings.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/models/armor/ice_layer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/models/armor/ice_layer_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/models/armor/ice_layer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/models/armor/ice_layer_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/models/armor/wool_layer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/models/armor/wool_layer_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/models/armor/wool_layer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/models/armor/wool_layer_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/particles/particles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/particles/particles.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/default.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/hyperthermia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/hyperthermia.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/hypothermia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/hypothermia.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/parasites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/parasites.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/resist_cold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/resist_cold.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/resist_heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/resist_heat.png -------------------------------------------------------------------------------- /src/main/resources/assets/simpledifficulty/textures/potions/thirsty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Charles445/SimpleDifficulty/828a7749c27c60cfd81e4f68f9bf9f8eca46bec3/src/main/resources/assets/simpledifficulty/textures/potions/thirsty.png -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "simpledifficulty", 4 | "name": "SimpleDifficulty", 5 | "description": "Mod that adds temperature and thirst mechanics based on Tough As Nails", 6 | "version": "${version}", 7 | "mcversion": "${mcversion}", 8 | "url": "", 9 | "updateUrl": "", 10 | "authorList": ["Charles445"], 11 | "credits": "", 12 | "logoFile": "", 13 | "screenshots": [], 14 | "dependencies": [] 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "SimpleDifficulty resources", 4 | "pack_format": 3 5 | } 6 | } 7 | --------------------------------------------------------------------------------