From a86024b91b71d7ef96599fa7073ea5171f4a66af Mon Sep 17 00:00:00 2001 From: Majrusz Date: Sun, 13 Aug 2023 19:43:52 +0200 Subject: [PATCH] Merged 1.8.0 release --- build.gradle | 1 + gradle.properties | 6 +- libs/majrusz-library-1.18.2-4.3.2.jar | Bin 379452 -> 0 bytes libs/majrusz-library-1.18.2-5.0.0.jar | Bin 0 -> 386071 bytes .../com/majruszsdifficulty/GameDataSaver.java | 20 +- .../MajruszsDifficulty.java | 3 - .../majruszsdifficulty/MajruszsHelper.java | 38 --- .../com/majruszsdifficulty/PacketHandler.java | 27 -- .../com/majruszsdifficulty/Registries.java | 61 ++-- .../majruszsdifficulty/RegistriesClient.java | 25 +- .../blocks/EndShardOre.java | 2 +- .../blocks/EnderiumBlock.java | 2 +- .../blocks/InfestedEndStone.java | 2 +- .../commands/SummonMobGroupCommand.java | 62 ++++ .../configs => config}/BleedingConfig.java | 10 +- .../configs => config}/MobGroupConfig.java | 50 ++-- .../ProgressiveEffectConfig.java | 4 +- .../StageProgressConfig.java | 2 +- .../configs => config}/TreasureBagConfig.java | 2 +- .../contexts/OnBleedingCheck.java | 12 +- .../contexts/OnBleedingTooltip.java | 47 +++ .../contexts/OnGameStageChange.java | 6 +- .../contexts/OnSoulJarMultiplier.java | 8 +- .../contexts/OnTreasureBagOpened.java | 8 +- .../base}/CustomConditions.java | 10 +- .../effects/BleedingEffect.java | 92 ++---- .../effects/BleedingImmunityEffect.java | 15 +- .../effects/GlassRegenerationEffect.java | 51 ++++ .../entities/BlackWidowEntity.java | 108 ------- .../entities/CerberusEntity.java | 80 ++--- .../entities/CreeperlingEntity.java | 8 +- .../entities/CursedArmorEntity.java | 180 +++++++----- .../entities/GiantEntity.java | 177 +++++++++++ .../entities/TankEntity.java | 12 +- .../events/TreasureBagOpenedEvent.java | 22 -- .../BlockIllusionerFromJoiningRaids.java | 10 +- .../CreeperChainReaction.java | 12 +- .../CreeperExplodeBehindWall.java | 12 +- .../CreeperExplosionImmunity.java | 12 +- .../CreeperSpawnCharged.java | 12 +- .../CreeperSpawnDebuffed.java | 14 +- .../CreeperSplitIntoCreeperlings.java | 20 +- .../list => features}/DoubleLoot.java | 25 +- .../DrownedLightningAttack.java | 12 +- .../EndermanTeleportAttack.java | 16 +- .../list => features}/EvokerWithTotem.java | 12 +- .../list => features}/ExperienceBonus.java | 12 +- .../list => features}/JockeySpawn.java | 14 +- .../list => features}/MobsSpawnStronger.java | 16 +- .../PhantomLevitationAttack.java | 14 +- .../list => features}/PowerfulExplosions.java | 10 +- .../ShulkerBlindnessAttack.java | 14 +- .../SlimeSlownessAttack.java | 14 +- .../features/SpawnBlocker.java | 44 +++ .../features/SpawnKillerBunny.java | 33 +++ .../list => features}/SpawnPlayerZombie.java | 14 +- .../features/SpawnRateIncreaser.java | 36 +++ .../list => features}/SpiderPoisonAttack.java | 14 +- .../features/bleeding/ArmorBleeding.java | 109 +++++++ .../features/bleeding/ArrowBleeding.java | 44 +++ .../features/bleeding/BiteBleeding.java | 36 +++ .../features/bleeding/CactusBleeding.java | 26 ++ .../features/bleeding/ToolsBleeding.java | 130 +++++++++ .../groups/PiglinsInGroup.java | 23 +- .../groups/SkeletonsInGroup.java | 25 +- .../groups/ZombiesInGroup.java | 23 +- .../gamemodifiers/list/BiteBleeding.java | 39 --- .../gamemodifiers/list/CactusBleeding.java | 29 -- .../gamemodifiers/list/DrownDebuffs.java | 39 --- .../gamemodifiers/list/FallDebuffs.java | 41 --- .../list/SharpToolsBleeding.java | 62 ---- .../gamemodifiers/list/SpawnBlocker.java | 34 --- .../list/ThrowableWeaponsBleeding.java | 29 -- .../list/TurnSkeletonIntoWitherSkeleton.java | 72 ----- .../gamestage/GameStage.java | 2 +- .../ClampedRegionalDifficultyGetCommand.java | 2 +- .../commands/GameStageChangeCommand.java | 2 +- .../commands/GameStageGetCommand.java | 2 +- .../handlers/AdvancementProvider.java | 6 +- .../gamestage/handlers/ChatMessageSender.java | 19 +- .../ClampedRegionalDifficultyIncreaser.java | 6 +- .../handlers/GameStageIncreaser.java | 25 +- .../goals/UndeadArmyForgiveTeammateGoal.java | 6 +- .../majruszsdifficulty/gui/BleedingGui.java | 2 +- .../items/BadOmenPotionItem.java | 72 ----- .../majruszsdifficulty/items/BandageItem.java | 27 +- .../items/EnderPouchItem.java | 6 +- .../items/EnderiumHoeItem.java | 8 +- .../items/EvokerFangScrollItem.java | 115 ++++++++ .../items/RecallPotionItem.java | 5 - .../majruszsdifficulty/items/ScrollItem.java | 79 +++++ .../majruszsdifficulty/items/SoulJarItem.java | 96 ++++-- .../items/TatteredArmorItem.java | 6 + .../items/TreasureBagItem.java | 23 +- .../items/UndeadBattleStandardItem.java | 9 +- .../items/WitherSwordItem.java | 87 +++++- .../itemsets/EnderiumSet.java | 14 +- .../itemsets/UndeadSet.java | 12 +- .../models/BlackWidowModel.java | 52 ---- .../models/CerberusModel.java | 148 +++------- .../majruszsdifficulty/models/GiantModel.java | 24 ++ .../particles/ParticleUtil.java | 19 -- .../renderers/BlackWidowEyesLayer.java | 24 -- .../renderers/BlackWidowRenderer.java | 43 --- .../renderers/GiantRenderer.java | 39 +++ .../treasurebags/TreasureBagManager.java | 18 +- .../TreasureBagProgressManager.java | 21 +- .../TreasureBagResetProgressCommand.java | 2 +- .../commands/TreasureBagUnlockAllCommand.java | 2 +- .../treasurebags/data/LootData.java | 6 +- .../treasurebags/data/LootProgressData.java | 9 +- .../treasurebags/data/TreasureBagData.java | 9 +- .../triggers/BandageTrigger.java | 59 ---- .../majruszsdifficulty/undeadarmy/Config.java | 77 +++-- .../undeadarmy/UndeadArmy.java | 18 +- .../undeadarmy/UndeadArmyManager.java | 8 +- .../undeadarmy/UndeadArmyPatrol.java | 26 +- .../commands/UndeadArmyHighlightCommand.java | 2 +- .../commands/UndeadArmyKillAllCommand.java | 2 +- .../commands/UndeadArmyListAllCommand.java | 2 +- .../UndeadArmyPersonalProgressCommand.java | 2 +- .../commands/UndeadArmyStartCommand.java | 2 +- .../commands/UndeadArmyStopCommand.java | 2 +- .../components/AdvancementsController.java | 2 +- .../undeadarmy/components/Components.java | 1 + .../components/LightningSpawner.java | 34 +++ .../undeadarmy/components/MobSpawner.java | 6 +- .../components/RewardsController.java | 9 + .../undeadarmy/data/ExtraLootInfo.java | 12 +- .../undeadarmy/data/MobDef.java | 6 +- .../undeadarmy/data/MobInfo.java | 10 +- .../undeadarmy/data/Phase.java | 8 +- .../undeadarmy/data/UndeadArmyInfo.java | 8 +- .../undeadarmy/data/WaveDef.java | 10 +- .../undeadarmy/data/WavesDef.java | 8 +- .../assets/majruszsdifficulty/lang/de_de.json | 191 ++++++++++++ .../assets/majruszsdifficulty/lang/en_us.json | 17 +- .../assets/majruszsdifficulty/lang/es_es.json | 4 - .../assets/majruszsdifficulty/lang/fr_fr.json | 274 +++++++++++++----- .../assets/majruszsdifficulty/lang/pl_pl.json | 17 +- .../assets/majruszsdifficulty/lang/uk_ua.json | 1 - .../assets/majruszsdifficulty/lang/zh_cn.json | 4 - .../assets/majruszsdifficulty/lang/zh_tw.json | 191 ++++++++++++ .../models/item/bad_omen_potion.json | 6 - .../models/item/black_widow_spawn_egg.json | 3 - .../models/item/enderium_boots.json | 62 ++++ .../models/item/enderium_chestplate.json | 62 ++++ .../models/item/enderium_helmet.json | 62 ++++ .../models/item/enderium_leggings.json | 62 ++++ .../models/item/evoker_fang_scroll.json | 6 + .../models/item/sonic_boom_scroll.json | 6 + .../models/item/soul_jar.json | 5 +- .../trim/enderium_boots_amethyst_trim.json | 7 + .../item/trim/enderium_boots_copper_trim.json | 7 + .../trim/enderium_boots_diamond_trim.json | 7 + .../trim/enderium_boots_emerald_trim.json | 7 + .../item/trim/enderium_boots_gold_trim.json | 7 + .../item/trim/enderium_boots_iron_trim.json | 7 + .../item/trim/enderium_boots_lapis_trim.json | 7 + .../trim/enderium_boots_netherite_trim.json | 7 + .../item/trim/enderium_boots_quartz_trim.json | 7 + .../trim/enderium_boots_redstone_trim.json | 7 + .../enderium_chestplate_amethyst_trim.json | 7 + .../trim/enderium_chestplate_copper_trim.json | 7 + .../enderium_chestplate_diamond_trim.json | 7 + .../enderium_chestplate_emerald_trim.json | 7 + .../trim/enderium_chestplate_gold_trim.json | 7 + .../trim/enderium_chestplate_iron_trim.json | 7 + .../trim/enderium_chestplate_lapis_trim.json | 7 + .../enderium_chestplate_netherite_trim.json | 7 + .../trim/enderium_chestplate_quartz_trim.json | 7 + .../enderium_chestplate_redstone_trim.json | 7 + .../trim/enderium_helmet_amethyst_trim.json | 7 + .../trim/enderium_helmet_copper_trim.json | 7 + .../trim/enderium_helmet_diamond_trim.json | 7 + .../trim/enderium_helmet_emerald_trim.json | 7 + .../item/trim/enderium_helmet_gold_trim.json | 7 + .../item/trim/enderium_helmet_iron_trim.json | 7 + .../item/trim/enderium_helmet_lapis_trim.json | 7 + .../trim/enderium_helmet_netherite_trim.json | 7 + .../trim/enderium_helmet_quartz_trim.json | 7 + .../trim/enderium_helmet_redstone_trim.json | 7 + .../trim/enderium_leggings_amethyst_trim.json | 7 + .../trim/enderium_leggings_copper_trim.json | 7 + .../trim/enderium_leggings_diamond_trim.json | 7 + .../trim/enderium_leggings_emerald_trim.json | 7 + .../trim/enderium_leggings_gold_trim.json | 7 + .../trim/enderium_leggings_iron_trim.json | 7 + .../trim/enderium_leggings_lapis_trim.json | 7 + .../enderium_leggings_netherite_trim.json | 7 + .../trim/enderium_leggings_quartz_trim.json | 7 + .../trim/enderium_leggings_redstone_trim.json | 7 + .../textures/entity/black_widow.png | Bin 675 -> 0 bytes .../textures/entity/black_widow_eyes.png | Bin 139 -> 0 bytes .../textures/entity/cerberus.png | Bin 2115 -> 2384 bytes .../textures/entity/giant.png | Bin 0 -> 1007 bytes .../textures/item/bad_omen_potion.png | Bin 303 -> 0 bytes .../textures/item/evoker_fang_scroll.png | Bin 0 -> 421 bytes .../textures/item/sonic_boom_scroll.png | Bin 0 -> 388 bytes .../textures/item/soul_jar.png | Bin 1047 -> 244 bytes .../textures/item/soul_jar_soul1.png | Bin 0 -> 272 bytes ...r.png.mcmeta => soul_jar_soul1.png.mcmeta} | 2 +- .../textures/item/soul_jar_soul2.png | Bin 0 -> 272 bytes .../textures/item/soul_jar_soul2.png.mcmeta | 8 + .../textures/item/soul_jar_soul3.png | Bin 0 -> 270 bytes .../textures/item/soul_jar_soul3.png.mcmeta | 8 + .../mob_effect/glass_regeneration.png | Bin 0 -> 182 bytes .../textures/mob_effect/regenerative_wrap.png | Bin 0 -> 182 bytes .../bleeding_healed.json | 5 +- .../bleeding_healed_other.json | 5 +- .../custom/bleeding_armor.json | 18 ++ .../custom/bleeding_tools.json | 46 +++ .../custom/cursed_armor_locations.json | 48 +++ .../game_stage_messages.json} | 5 + .../undead_army_waves.json} | 56 +++- .../biome_modifier/nether_mobs_modifier.json | 12 + .../loot_tables/entities/giant.json | 31 ++ ...on_loot.json => cursed_armor_dungeon.json} | 6 - ...or_end_loot.json => cursed_armor_end.json} | 6 - ...tal_loot.json => cursed_armor_nether.json} | 6 - ...her_loot.json => cursed_armor_portal.json} | 12 - ...loot.json => cursed_armor_stronghold.json} | 10 - ....json => treasure_bag_elder_guardian.json} | 1 - ...ot.json => treasure_bag_ender_dragon.json} | 1 - ...re_loot.json => treasure_bag_fishing.json} | 1 - ...e_loot.json => treasure_bag_pillager.json} | 24 +- ...oot.json => treasure_bag_undead_army.json} | 1 - ...ure_loot.json => treasure_bag_wither.json} | 1 - .../loot_tables/mob_groups/piglin_leader.json | 1 - .../mob_groups/piglin_sidekick.json | 1 - .../mob_groups/skeleton_leader.json | 1 - .../mob_groups/skeleton_sidekick.json | 1 - .../loot_tables/mob_groups/zombie_leader.json | 1 - .../mob_groups/zombie_sidekick.json | 1 - .../equipment_wave_2_skeleton.json | 54 ---- .../equipment_wave_3_skeleton.json | 23 +- .../equipment_wave_4_skeleton.json | 23 +- .../equipment_wave_5_skeleton.json | 23 +- .../equipment_wave_5_wither_skeleton.json | 34 --- .../undead_army/equipment_wave_6.json | 97 +++++++ ...on.json => equipment_wave_6_skeleton.json} | 5 +- ... => equipment_wave_6_wither_skeleton.json} | 5 +- .../tags/damage_type/bypasses_armor.json | 5 + .../minecraft/tags/items/trimmable_armor.json | 8 + 244 files changed, 3533 insertions(+), 1983 deletions(-) delete mode 100644 libs/majrusz-library-1.18.2-4.3.2.jar create mode 100644 libs/majrusz-library-1.18.2-5.0.0.jar delete mode 100644 src/main/java/com/majruszsdifficulty/MajruszsHelper.java delete mode 100644 src/main/java/com/majruszsdifficulty/PacketHandler.java create mode 100644 src/main/java/com/majruszsdifficulty/commands/SummonMobGroupCommand.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers/configs => config}/BleedingConfig.java (79%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/configs => config}/MobGroupConfig.java (65%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/configs => config}/ProgressiveEffectConfig.java (94%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/configs => config}/StageProgressConfig.java (95%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/configs => config}/TreasureBagConfig.java (89%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers => }/contexts/OnBleedingCheck.java (75%) create mode 100644 src/main/java/com/majruszsdifficulty/contexts/OnBleedingTooltip.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers => }/contexts/OnGameStageChange.java (87%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers => }/contexts/OnSoulJarMultiplier.java (84%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers => }/contexts/OnTreasureBagOpened.java (85%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers => contexts/base}/CustomConditions.java (87%) create mode 100644 src/main/java/com/majruszsdifficulty/effects/GlassRegenerationEffect.java delete mode 100644 src/main/java/com/majruszsdifficulty/entities/BlackWidowEntity.java create mode 100644 src/main/java/com/majruszsdifficulty/entities/GiantEntity.java delete mode 100644 src/main/java/com/majruszsdifficulty/events/TreasureBagOpenedEvent.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/BlockIllusionerFromJoiningRaids.java (76%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperChainReaction.java (75%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperExplodeBehindWall.java (78%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperExplosionImmunity.java (80%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperSpawnCharged.java (81%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperSpawnDebuffed.java (81%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/CreeperSplitIntoCreeperlings.java (84%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/DoubleLoot.java (81%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/DrownedLightningAttack.java (84%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/EndermanTeleportAttack.java (74%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/EvokerWithTotem.java (80%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/ExperienceBonus.java (72%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/JockeySpawn.java (72%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/MobsSpawnStronger.java (90%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/PhantomLevitationAttack.java (76%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/PowerfulExplosions.java (88%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/ShulkerBlindnessAttack.java (74%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/SlimeSlownessAttack.java (75%) create mode 100644 src/main/java/com/majruszsdifficulty/features/SpawnBlocker.java create mode 100644 src/main/java/com/majruszsdifficulty/features/SpawnKillerBunny.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/SpawnPlayerZombie.java (90%) create mode 100644 src/main/java/com/majruszsdifficulty/features/SpawnRateIncreaser.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/SpiderPoisonAttack.java (76%) create mode 100644 src/main/java/com/majruszsdifficulty/features/bleeding/ArmorBleeding.java create mode 100644 src/main/java/com/majruszsdifficulty/features/bleeding/ArrowBleeding.java create mode 100644 src/main/java/com/majruszsdifficulty/features/bleeding/BiteBleeding.java create mode 100644 src/main/java/com/majruszsdifficulty/features/bleeding/CactusBleeding.java create mode 100644 src/main/java/com/majruszsdifficulty/features/bleeding/ToolsBleeding.java rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/groups/PiglinsInGroup.java (73%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/groups/SkeletonsInGroup.java (71%) rename src/main/java/com/majruszsdifficulty/{gamemodifiers/list => features}/groups/ZombiesInGroup.java (76%) delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/BiteBleeding.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/CactusBleeding.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownDebuffs.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/FallDebuffs.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/SharpToolsBleeding.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnBlocker.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/ThrowableWeaponsBleeding.java delete mode 100644 src/main/java/com/majruszsdifficulty/gamemodifiers/list/TurnSkeletonIntoWitherSkeleton.java delete mode 100644 src/main/java/com/majruszsdifficulty/items/BadOmenPotionItem.java create mode 100644 src/main/java/com/majruszsdifficulty/items/EvokerFangScrollItem.java create mode 100644 src/main/java/com/majruszsdifficulty/items/ScrollItem.java delete mode 100644 src/main/java/com/majruszsdifficulty/models/BlackWidowModel.java create mode 100644 src/main/java/com/majruszsdifficulty/models/GiantModel.java delete mode 100644 src/main/java/com/majruszsdifficulty/particles/ParticleUtil.java delete mode 100644 src/main/java/com/majruszsdifficulty/renderers/BlackWidowEyesLayer.java delete mode 100644 src/main/java/com/majruszsdifficulty/renderers/BlackWidowRenderer.java create mode 100644 src/main/java/com/majruszsdifficulty/renderers/GiantRenderer.java delete mode 100644 src/main/java/com/majruszsdifficulty/triggers/BandageTrigger.java create mode 100644 src/main/java/com/majruszsdifficulty/undeadarmy/components/LightningSpawner.java create mode 100644 src/main/resources/assets/majruszsdifficulty/lang/de_de.json create mode 100644 src/main/resources/assets/majruszsdifficulty/lang/zh_tw.json delete mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/bad_omen_potion.json delete mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/black_widow_spawn_egg.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/evoker_fang_scroll.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/sonic_boom_scroll.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_amethyst_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_copper_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_diamond_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_emerald_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_gold_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_iron_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_lapis_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_netherite_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_quartz_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_redstone_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_amethyst_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_copper_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_diamond_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_emerald_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_gold_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_iron_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_lapis_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_netherite_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_quartz_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_redstone_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_amethyst_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_copper_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_diamond_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_emerald_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_gold_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_iron_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_lapis_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_netherite_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_quartz_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_redstone_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_amethyst_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_copper_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_diamond_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_emerald_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_gold_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_iron_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_lapis_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_netherite_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_quartz_trim.json create mode 100644 src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_redstone_trim.json delete mode 100644 src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow.png delete mode 100644 src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow_eyes.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/entity/giant.png delete mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/bad_omen_potion.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/evoker_fang_scroll.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/sonic_boom_scroll.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul1.png rename src/main/resources/assets/majruszsdifficulty/textures/item/{soul_jar.png.mcmeta => soul_jar_soul1.png.mcmeta} (81%) create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul2.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul2.png.mcmeta create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul3.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul3.png.mcmeta create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/mob_effect/glass_regeneration.png create mode 100644 src/main/resources/assets/majruszsdifficulty/textures/mob_effect/regenerative_wrap.png create mode 100644 src/main/resources/data/majruszsdifficulty/custom/bleeding_armor.json create mode 100644 src/main/resources/data/majruszsdifficulty/custom/bleeding_tools.json create mode 100644 src/main/resources/data/majruszsdifficulty/custom/cursed_armor_locations.json rename src/main/resources/data/majruszsdifficulty/{game_stages/messages.json => custom/game_stage_messages.json} (71%) rename src/main/resources/data/majruszsdifficulty/{undead_army/waves.json => custom/undead_army_waves.json} (79%) create mode 100644 src/main/resources/data/majruszsdifficulty/forge/biome_modifier/nether_mobs_modifier.json create mode 100644 src/main/resources/data/majruszsdifficulty/loot_tables/entities/giant.json rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{cursed_armor_dungeon_loot.json => cursed_armor_dungeon.json} (92%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{cursed_armor_end_loot.json => cursed_armor_end.json} (93%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{cursed_armor_portal_loot.json => cursed_armor_nether.json} (92%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{cursed_armor_nether_loot.json => cursed_armor_portal.json} (86%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{cursed_armor_stronghold_loot.json => cursed_armor_stronghold.json} (88%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{elder_guardian_treasure_loot.json => treasure_bag_elder_guardian.json} (96%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{ender_dragon_treasure_loot.json => treasure_bag_ender_dragon.json} (94%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{fishing_treasure_loot.json => treasure_bag_fishing.json} (98%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{pillager_treasure_loot.json => treasure_bag_pillager.json} (82%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{undead_army_treasure_loot.json => treasure_bag_undead_army.json} (97%) rename src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/{wither_treasure_loot.json => treasure_bag_wither.json} (95%) delete mode 100644 src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_2_skeleton.json delete mode 100644 src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_wither_skeleton.json create mode 100644 src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6.json rename src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/{equipment_wave_1_skeleton.json => equipment_wave_6_skeleton.json} (88%) rename src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/{equipment_wave_4_wither_skeleton.json => equipment_wave_6_wither_skeleton.json} (88%) create mode 100644 src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json create mode 100644 src/main/resources/data/minecraft/tags/items/trimmable_armor.json diff --git a/build.gradle b/build.gradle index 123be683e..2212c1ea4 100644 --- a/build.gradle +++ b/build.gradle @@ -78,6 +78,7 @@ processResources { filesMatching('META-INF/mods.toml') { expand project.properties } + outputs.upToDateWhen { false } } dependencies { diff --git a/gradle.properties b/gradle.properties index b7bc068da..8a796c2af 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,6 +6,6 @@ versions_minecraft=1.18.2 versions_minecraft_range=[1.18.2,1.19) versions_forge=40.2.0 versions_forge_range=[40.2.0,) -versions_mod=1.7.7 -versions_mlib=4.3.2 -versions_mlib_range=[4.3.2,5.0.0) \ No newline at end of file +versions_mod=1.8.0 +versions_mlib=5.0.0 +versions_mlib_range=[5.0.0,6.0.0) diff --git a/libs/majrusz-library-1.18.2-4.3.2.jar b/libs/majrusz-library-1.18.2-4.3.2.jar deleted file mode 100644 index 640edda362ddc63776ea9467b2da0f7829b96b9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379452 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%0Ap?2}#P7z};3*zQ4J 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®2D2wMiV-V0C9`G@U7SG&%wv*>ik#UZz8ty8 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 diff --git a/libs/majrusz-library-1.18.2-5.0.0.jar b/libs/majrusz-library-1.18.2-5.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..5980477758458defe7d9ccc57113e34c0207f370 GIT binary patch literal 386071 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

IJX81g$)WjX2*?21$o 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 g8{*hnD?R+p%WT!SyFKu8~R?ZhKt~H;^ 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 literal 0 HcmV?d00001 diff --git a/src/main/java/com/majruszsdifficulty/GameDataSaver.java b/src/main/java/com/majruszsdifficulty/GameDataSaver.java index 95dbbb176..55dcb6541 100644 --- a/src/main/java/com/majruszsdifficulty/GameDataSaver.java +++ b/src/main/java/com/majruszsdifficulty/GameDataSaver.java @@ -1,10 +1,11 @@ package com.majruszsdifficulty; -import com.majruszsdifficulty.gamestage.handlers.GameStageIncreaser; import com.majruszsdifficulty.gamestage.GameStage; +import com.majruszsdifficulty.gamestage.handlers.GameStageIncreaser; import com.majruszsdifficulty.treasurebags.TreasureBagProgressManager; import com.majruszsdifficulty.undeadarmy.Config; import com.majruszsdifficulty.undeadarmy.UndeadArmyManager; +import com.mlib.data.SerializableHelper; import com.mlib.data.SerializableStructure; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; @@ -27,9 +28,7 @@ public GameDataSaver( ServerLevel overworld, CompoundTag tag ) { @Override public CompoundTag save( CompoundTag tag ) { - this.data.write( tag ); - - return tag; + return SerializableHelper.write( ()->this.data, tag ); } public UndeadArmyManager getUndeadArmyManager() { @@ -41,18 +40,19 @@ public TreasureBagProgressManager getTreasureBagProgressManager() { } public static class Data extends SerializableStructure { - final UndeadArmyManager undeadArmyManager; - final TreasureBagProgressManager treasureBagProgressManager; + UndeadArmyManager undeadArmyManager; + TreasureBagProgressManager treasureBagProgressManager; public Data( ServerLevel overworld ) { super( "MajruszsDifficulty" ); - this.undeadArmyManager = new UndeadArmyManager( overworld, Registries.ANNOTATION_HANDLER.getInstance( Config.class ) ); + Config config = Registries.HELPER.findInstance( Config.class ).orElseThrow(); + this.undeadArmyManager = new UndeadArmyManager( overworld, config ); this.treasureBagProgressManager = new TreasureBagProgressManager(); - this.define( "GameStage", GameStage::getCurrentStage, gameStage->GameStage.changeStage( gameStage, null ), GameStage::values ); - this.define( "UndeadArmy", ()->this.undeadArmyManager ); - this.define( "TreasureBags", ()->this.treasureBagProgressManager ); + this.defineEnum( "GameStage", GameStage::getCurrentStage, gameStage->GameStage.changeStage( gameStage, null ), GameStage::values ); + this.defineCustom( "UndeadArmy", ()->this.undeadArmyManager, x->this.undeadArmyManager = x, ()->new UndeadArmyManager( overworld, config ) ); + this.defineCustom( "TreasureBags", ()->this.treasureBagProgressManager, x->this.treasureBagProgressManager = x, TreasureBagProgressManager::new ); } } } diff --git a/src/main/java/com/majruszsdifficulty/MajruszsDifficulty.java b/src/main/java/com/majruszsdifficulty/MajruszsDifficulty.java index 0815b4880..9d08f4798 100644 --- a/src/main/java/com/majruszsdifficulty/MajruszsDifficulty.java +++ b/src/main/java/com/majruszsdifficulty/MajruszsDifficulty.java @@ -1,16 +1,13 @@ package com.majruszsdifficulty; -import com.mlib.config.ConfigHandler; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; /** Main modification class. */ @Mod( MajruszsDifficulty.MOD_ID ) public class MajruszsDifficulty { public static final String MOD_ID = "majruszsdifficulty"; public static final String NAME = "Majrusz's Progressive Difficulty"; - public static final ConfigHandler SERVER_CONFIG = new ConfigHandler( ModConfig.Type.SERVER ); public MajruszsDifficulty() { com.majruszsdifficulty.Registries.initialize(); diff --git a/src/main/java/com/majruszsdifficulty/MajruszsHelper.java b/src/main/java/com/majruszsdifficulty/MajruszsHelper.java deleted file mode 100644 index f0c82c7e7..000000000 --- a/src/main/java/com/majruszsdifficulty/MajruszsHelper.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.majruszsdifficulty; - -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.*; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.world.item.TooltipFlag; - -import java.util.List; - -@Deprecated( forRemoval = true ) -public class MajruszsHelper { - public static void addTranslatableText( List< Component > tooltip, String translationKey ) { - tooltip.add( new TranslatableComponent( translationKey ).withStyle( ChatFormatting.GRAY ) ); - } - - public static void addTranslatableTexts( List< Component > tooltip, String... translationKeys ) { - for( String translationKey : translationKeys ) - addTranslatableText( tooltip, translationKey ); - } - - /** Adds tooltip to list if advanced tooltips are enabled. */ - public static void addAdvancedTranslatableText( List< Component > tooltip, TooltipFlag flag, String translationKey ) { - if( flag.isAdvanced() ) - addTranslatableText( tooltip, translationKey ); - } - - /** Adds multiple tooltips to list if advanced tooltips are enabled. */ - public static void addAdvancedTranslatableTexts( List< Component > tooltip, TooltipFlag flag, String... translationKeys ) { - if( flag.isAdvanced() ) - for( String translationKey : translationKeys ) - addAdvancedTranslatableText( tooltip, flag, translationKey ); - } - - /** Returns formatted text with information that item is disabled. */ - public static MutableComponent getDisabledItemComponent() { - return new TranslatableComponent( "majruszsdifficulty.items.disabled_tooltip" ).withStyle( ChatFormatting.RED, ChatFormatting.BOLD ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/PacketHandler.java b/src/main/java/com/majruszsdifficulty/PacketHandler.java deleted file mode 100644 index ddfa7afca..000000000 --- a/src/main/java/com/majruszsdifficulty/PacketHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.majruszsdifficulty; - -import com.majruszsdifficulty.effects.BleedingEffect; -import com.majruszsdifficulty.entities.CerberusEntity; -import com.majruszsdifficulty.entities.CursedArmorEntity; -import com.majruszsdifficulty.entities.TankEntity; -import com.majruszsdifficulty.treasurebags.data.LootProgressData; -import com.mlib.data.SerializableStructure; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.simple.SimpleChannel; - -/** Handling connection between server and client. */ -public class PacketHandler { - private static final String PROTOCOL_VERSION = "1"; - public static SimpleChannel CHANNEL; - - public static void registerPacket( final FMLCommonSetupEvent event ) { - CHANNEL = NetworkRegistry.newSimpleChannel( Registries.getLocation( "main" ), ()->PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); - SerializableStructure.register( CHANNEL, 0, TankEntity.SkillMessage.class, TankEntity.SkillMessage::new ); - SerializableStructure.register( CHANNEL, 1, CursedArmorEntity.AssembleMessage.class, CursedArmorEntity.AssembleMessage::new ); - SerializableStructure.register( CHANNEL, 2, LootProgressData.class, LootProgressData::new ); - SerializableStructure.register( CHANNEL, 3, BleedingEffect.BloodMessage.class, BleedingEffect.BloodMessage::new ); - SerializableStructure.register( CHANNEL, 4, CerberusEntity.SkillMessage.class, CerberusEntity.SkillMessage::new ); - SerializableStructure.register( CHANNEL, 5, CerberusEntity.TargetMessage.class, CerberusEntity.TargetMessage::new ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/Registries.java b/src/main/java/com/majruszsdifficulty/Registries.java index 464c4bc37..5e5e8e31e 100644 --- a/src/main/java/com/majruszsdifficulty/Registries.java +++ b/src/main/java/com/majruszsdifficulty/Registries.java @@ -5,22 +5,24 @@ import com.majruszsdifficulty.blocks.InfestedEndStone; import com.majruszsdifficulty.effects.BleedingEffect; import com.majruszsdifficulty.effects.BleedingImmunityEffect; +import com.majruszsdifficulty.effects.GlassRegenerationEffect; import com.majruszsdifficulty.entities.*; +import com.majruszsdifficulty.features.bleeding.ArmorBleeding; +import com.majruszsdifficulty.features.bleeding.ToolsBleeding; import com.majruszsdifficulty.items.*; import com.majruszsdifficulty.loot.CurseRandomlyFunction; import com.majruszsdifficulty.treasurebags.TreasureBagManager; import com.majruszsdifficulty.treasurebags.TreasureBagProgressManager; -import com.majruszsdifficulty.triggers.BandageTrigger; +import com.majruszsdifficulty.treasurebags.data.LootProgressData; import com.majruszsdifficulty.triggers.GameStageTrigger; import com.majruszsdifficulty.triggers.TreasureBagTrigger; import com.majruszsdifficulty.undeadarmy.UndeadArmyManager; import com.majruszsdifficulty.world.WorldGenHelper; import com.mlib.Utility; -import com.mlib.annotations.AnnotationHandler; import com.mlib.items.CreativeModeTabHelper; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.registries.RegistryHelper; -import com.mlib.triggers.BasicTrigger; +import com.mlib.config.ConfigHandler; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.modhelper.ModHelper; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.renderer.RenderType; @@ -59,7 +61,7 @@ import net.minecraftforge.event.entity.EntityAttributeCreationEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @@ -71,20 +73,22 @@ import java.util.function.Supplier; import java.util.stream.Stream; -import static com.majruszsdifficulty.MajruszsDifficulty.MOD_ID; -import static com.majruszsdifficulty.MajruszsDifficulty.SERVER_CONFIG; import static net.minecraft.core.Registry.LOOT_FUNCTION_REGISTRY; import static net.minecraft.core.Registry.LOOT_FUNCTION_TYPE; public class Registries { - private static final RegistryHelper HELPER = new RegistryHelper( MajruszsDifficulty.MOD_ID ); + public static final ModHelper HELPER = ModHelper.create( MajruszsDifficulty.MOD_ID ); + + // Configs + public static final ConfigHandler SERVER_CONFIG = HELPER.createConfig( ModConfig.Type.SERVER ); static { - ModConfigs.init( SERVER_CONFIG, Groups.DEFAULT ).name( "GameModifiers" ); + ModConfigs.init( SERVER_CONFIG, Groups.DEFAULT ).name( "Features" ); ModConfigs.init( SERVER_CONFIG, Groups.UNDEAD_ARMY ).name( "UndeadArmy" ); ModConfigs.init( SERVER_CONFIG, Groups.GAME_STAGE ).name( "GameStage" ); ModConfigs.init( SERVER_CONFIG, Groups.TREASURE_BAG ).name( "TreasureBag" ); ModConfigs.init( SERVER_CONFIG, Groups.MOBS ).name( "Mobs" ); + ModConfigs.init( SERVER_CONFIG, Groups.BLEEDING ).name( "Bleeding" ); } // Groups @@ -104,7 +108,7 @@ public class Registries { public static final RegistryObject< EntityType< TankEntity > > TANK = ENTITY_TYPES.register( "tank", TankEntity.createSupplier() ); public static final RegistryObject< EntityType< CursedArmorEntity > > CURSED_ARMOR = ENTITY_TYPES.register( "cursed_armor", CursedArmorEntity.createSupplier() ); public static final RegistryObject< EntityType< CerberusEntity > > CERBERUS = ENTITY_TYPES.register( "cerberus", CerberusEntity.createSupplier() ); - public static final RegistryObject< EntityType< BlackWidowEntity > > BLACK_WIDOW = ENTITY_TYPES.register( "black_widow", BlackWidowEntity.createSupplier() ); + public static final RegistryObject< EntityType< GiantEntity > > GIANT = ENTITY_TYPES.register( "giant", GiantEntity.createSupplier() ); // Items public static final RegistryObject< BandageItem > BANDAGE = ITEMS.register( "bandage", BandageItem::new ); @@ -131,7 +135,7 @@ public class Registries { public static final RegistryObject< EnderPouchItem > ENDER_POUCH = ITEMS.register( "ender_pouch", EnderPouchItem::new ); public static final RegistryObject< WitherSwordItem > WITHER_SWORD = ITEMS.register( "wither_sword", WitherSwordItem::new ); public static final RegistryObject< RecallPotionItem > RECALL_POTION = ITEMS.register( "recall_potion", RecallPotionItem::new ); - public static final RegistryObject< BadOmenPotionItem > BAD_OMEN_POTION = ITEMS.register( "bad_omen_potion", BadOmenPotionItem::new ); + public static final RegistryObject< EvokerFangScrollItem > EVOKER_FANG_SCROLL = ITEMS.register( "evoker_fang_scroll", EvokerFangScrollItem::new ); public static final RegistryObject< SoulJarItem > SOUL_JAR = ITEMS.register( "soul_jar", SoulJarItem::new ); // Potions @@ -158,7 +162,7 @@ public class Registries { public static final RegistryObject< SpawnEggItem > TANK_SPAWN_EGG = ITEMS.register( "tank_spawn_egg", createEggSupplier( TANK, 0xc1c1c1, 0x949494 ) ); public static final RegistryObject< SpawnEggItem > CURSED_ARMOR_SPAWN_EGG = ITEMS.register( "cursed_armor_spawn_egg", createEggSupplier( CURSED_ARMOR, 0x808080, 0xe1e1e1 ) ); public static final RegistryObject< SpawnEggItem > CERBERUS_SPAWN_EGG = ITEMS.register( "cerberus_spawn_egg", createEggSupplier( CERBERUS, 0x212121, 0xe0e0e0 ) ); - public static final RegistryObject< SpawnEggItem > BLACK_WIDOW_SPAWN_EGG = ITEMS.register( "black_widow_spawn_egg", createEggSupplier( BLACK_WIDOW, 0x212121, 0xe12121 ) ); + public static final RegistryObject< SpawnEggItem > GIANT_SPAWN_EGG = ITEMS.register( "giant_spawn_egg", createEggSupplier( GIANT, 0x00afaf, 0x799c65 ) ); static Supplier< SpawnEggItem > createEggSupplier( Supplier< ? extends EntityType< ? extends Mob > > type, int backgroundColor, int highlightColor @@ -180,6 +184,7 @@ static Supplier< SpawnEggItem > createEggSupplier( Supplier< ? extends EntityTyp // Effects public static final RegistryObject< BleedingEffect > BLEEDING = MOB_EFFECTS.register( "bleeding", BleedingEffect::new ); public static final RegistryObject< BleedingImmunityEffect > BLEEDING_IMMUNITY = MOB_EFFECTS.register( "bleeding_immunity", BleedingImmunityEffect::new ); + public static final RegistryObject< GlassRegenerationEffect > GLASS_REGENERATION = MOB_EFFECTS.register( "glass_regeneration", GlassRegenerationEffect::new ); // Damage Sources public static final DamageSource BLEEDING_SOURCE = new DamageSource( "bleeding" ).bypassArmor(); @@ -194,8 +199,6 @@ static Supplier< SpawnEggItem > createEggSupplier( Supplier< ? extends EntityTyp // Triggers public static final GameStageTrigger GAME_STATE_TRIGGER = CriteriaTriggers.register( new GameStageTrigger() ); public static final TreasureBagTrigger TREASURE_BAG_TRIGGER = CriteriaTriggers.register( new TreasureBagTrigger() ); - public static final BandageTrigger BANDAGE_TRIGGER = CriteriaTriggers.register( new BandageTrigger() ); - public static final BasicTrigger BASIC_TRIGGER = HELPER.registerBasicTrigger(); // Sounds public static final RegistryObject< SoundEvent > UNDEAD_ARMY_APPROACHING = register( "undead_army.approaching" ); @@ -208,8 +211,17 @@ static RegistryObject< SoundEvent > register( String name ) { // Loot Functions public static final RegistryObject< LootItemFunctionType > CURSE_RANDOMLY = LOOT_FUNCTIONS.register( "curse_randomly", CurseRandomlyFunction::newType ); - // Game Modifiers - public static final AnnotationHandler ANNOTATION_HANDLER = new AnnotationHandler( MajruszsDifficulty.MOD_ID ); + // Network + static { + HELPER.createMessage( TankEntity.SkillMessage.class, TankEntity.SkillMessage::new ); + HELPER.createMessage( CursedArmorEntity.AssembleMessage.class, CursedArmorEntity.AssembleMessage::new ); + HELPER.createMessage( LootProgressData.class, LootProgressData::new ); + HELPER.createMessage( BleedingEffect.BloodMessage.class, BleedingEffect.BloodMessage::new ); + HELPER.createMessage( CerberusEntity.SkillMessage.class, CerberusEntity.SkillMessage::new ); + HELPER.createMessage( ToolsBleeding.ToolsDef.class, ToolsBleeding.ToolsDef::new ); + HELPER.createMessage( ArmorBleeding.ArmorsDef.class, ArmorBleeding.ArmorsDef::new ); + HELPER.createMessage( CursedArmorEntity.LocationsDef.class, CursedArmorEntity.LocationsDef::new ); + } // Configured Feature public static final RegistryObject< ConfiguredFeature< ?, ? > > ENDERIUM_ORE_SMALL_CONFIGURED = CONFIGURED_FEATURES.register( "enderium_ore_small", ()->WorldGenHelper.getEndConfigured( ENDERIUM_SHARD_ORE, 2, 0.99f ) ); @@ -250,20 +262,16 @@ public static RenderType getEyesRenderType( String register ) { } public static void initialize() { - FMLJavaModLoadingContext loadingContext = FMLJavaModLoadingContext.get(); - final IEventBus modEventBus = loadingContext.getModEventBus(); - - HELPER.registerAll(); + final IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener( Registries::setup ); modEventBus.addListener( Registries::setupClient ); modEventBus.addListener( Registries::setupEntities ); - modEventBus.addListener( PacketHandler::registerPacket ); IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; forgeEventBus.addListener( Registries::onLoadingLevel ); forgeEventBus.addListener( Registries::onSavingLevel ); - SERVER_CONFIG.register( ModLoadingContext.get() ); + HELPER.register(); } private static void setupClient( final FMLClientSetupEvent event ) { @@ -273,18 +281,18 @@ private static void setupClient( final FMLClientSetupEvent event ) { public static void setupEntities( EntityAttributeCreationEvent event ) { event.put( CREEPERLING.get(), CreeperlingEntity.getAttributeMap() ); event.put( TANK.get(), TankEntity.getAttributeMap() ); - event.put( BLACK_WIDOW.get(), BlackWidowEntity.getAttributeMap() ); event.put( CURSED_ARMOR.get(), CursedArmorEntity.getAttributeMap() ); event.put( CERBERUS.get(), CerberusEntity.getAttributeMap() ); + event.put( GIANT.get(), GiantEntity.getAttributeMap() ); } private static void setup( final FMLCommonSetupEvent event ) { // FORGE: use SpawnPlacementRegisterEvent to register and modify spawn placements SpawnPlacements.register( CREEPERLING.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CreeperlingEntity::checkMobSpawnRules ); SpawnPlacements.register( TANK.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, TankEntity::checkMonsterSpawnRules ); - SpawnPlacements.register( BLACK_WIDOW.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BlackWidowEntity::checkMonsterSpawnRules ); SpawnPlacements.register( CURSED_ARMOR.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CursedArmorEntity::checkMonsterSpawnRules ); - SpawnPlacements.register( CERBERUS.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CursedArmorEntity::checkMonsterSpawnRules ); + SpawnPlacements.register( CERBERUS.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CerberusEntity::checkMonsterSpawnRules ); + SpawnPlacements.register( GIANT.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, GiantEntity::checkMonsterSpawnRules ); event.enqueueWork( ()->{ addPotionRecipe( ()->Potions.WATER, CERBERUS_FANG, ()->Potions.MUNDANE ); @@ -349,5 +357,6 @@ public static class Groups { public static final String GAME_STAGE = Registries.getLocationString( "game_stage" ); public static final String TREASURE_BAG = Registries.getLocationString( "treasure_bag" ); public static final String MOBS = Registries.getLocationString( "mobs" ); + public static final String BLEEDING = Registries.getLocationString( "bleeding" ); } } diff --git a/src/main/java/com/majruszsdifficulty/RegistriesClient.java b/src/main/java/com/majruszsdifficulty/RegistriesClient.java index d31b8cf49..234674ff4 100644 --- a/src/main/java/com/majruszsdifficulty/RegistriesClient.java +++ b/src/main/java/com/majruszsdifficulty/RegistriesClient.java @@ -2,8 +2,12 @@ import com.majruszsdifficulty.gui.BleedingGui; import com.majruszsdifficulty.items.EndShardLocatorItem; +import com.majruszsdifficulty.items.SoulJarItem; import com.majruszsdifficulty.models.*; +import com.majruszsdifficulty.particles.BloodParticle; import com.majruszsdifficulty.renderers.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.color.item.ItemColor; import net.minecraft.client.model.geom.LayerDefinitions; import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.LayerDefinition; @@ -13,28 +17,45 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.event.ColorHandlerEvent; +import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; import net.minecraftforge.client.gui.OverlayRegistry; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; @Deprecated( forRemoval = true ) @OnlyIn( Dist.CLIENT ) +@Mod.EventBusSubscriber( modid = MajruszsDifficulty.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT ) public class RegistriesClient { public static void setup() { ForgeHooksClient.registerLayerDefinition( CreeperlingRenderer.LAYER, ()->CreeperlingModel.createBodyLayer( CubeDeformation.NONE ) ); ForgeHooksClient.registerLayerDefinition( TankRenderer.LAYER, ()->TankModel.createBodyLayer( CubeDeformation.NONE ) ); - ForgeHooksClient.registerLayerDefinition( BlackWidowRenderer.LAYER, BlackWidowModel::createBodyLayer ); ForgeHooksClient.registerLayerDefinition( CursedArmorRenderer.INNER_ARMOR_LAYER, ()->LayerDefinition.create( CursedArmorModel.createMesh( LayerDefinitions.INNER_ARMOR_DEFORMATION, 0.0f ), 64, 32 ) ); ForgeHooksClient.registerLayerDefinition( CursedArmorRenderer.OUTER_ARMOR_LAYER, ()->LayerDefinition.create( CursedArmorModel.createMesh( LayerDefinitions.OUTER_ARMOR_DEFORMATION, 0.0f ), 64, 32 ) ); ForgeHooksClient.registerLayerDefinition( CursedArmorRenderer.MAIN_LAYER, ()->LayerDefinition.create( CursedArmorModel.createMesh( CubeDeformation.NONE, 0.0f ), 64, 64 ) ); ForgeHooksClient.registerLayerDefinition( CerberusRenderer.LAYER, CerberusModel::createBodyLayer ); + ForgeHooksClient.registerLayerDefinition( GiantRenderer.LAYER, ()->LayerDefinition.create( GiantModel.createMesh( CubeDeformation.NONE, 0.0f ), 64, 64 ) ); EntityRenderers.register( Registries.CREEPERLING.get(), CreeperlingRenderer::new ); EntityRenderers.register( Registries.TANK.get(), TankRenderer::new ); - EntityRenderers.register( Registries.BLACK_WIDOW.get(), BlackWidowRenderer::new ); EntityRenderers.register( Registries.CURSED_ARMOR.get(), CursedArmorRenderer::new ); EntityRenderers.register( Registries.CERBERUS.get(), CerberusRenderer::new ); + EntityRenderers.register( Registries.GIANT.get(), GiantRenderer::new ); ItemProperties.register( Registries.ENDERIUM_SHARD_LOCATOR.get(), new ResourceLocation( "shard_distance" ), EndShardLocatorItem::calculateDistanceToEndShard ); OverlayRegistry.registerOverlayBottom( "bleeding", new BleedingGui.Overlay() ); } + + @OnlyIn( Dist.CLIENT ) + @SubscribeEvent + public static void registerParticles( ParticleFactoryRegisterEvent event ) { + Minecraft.getInstance().particleEngine.register( Registries.BLOOD.get(), BloodParticle.Factory::new ); + } + + @OnlyIn( Dist.CLIENT ) + @SubscribeEvent + public static void registerItemColors( ColorHandlerEvent.Item event ) { + event.getItemColors().register( new SoulJarItem.ItemColor(), Registries.SOUL_JAR.get() ); + } } diff --git a/src/main/java/com/majruszsdifficulty/blocks/EndShardOre.java b/src/main/java/com/majruszsdifficulty/blocks/EndShardOre.java index 764240acf..7961db02d 100644 --- a/src/main/java/com/majruszsdifficulty/blocks/EndShardOre.java +++ b/src/main/java/com/majruszsdifficulty/blocks/EndShardOre.java @@ -32,7 +32,7 @@ public int getExpDrop( BlockState state, net.minecraft.world.level.LevelReader r public static class EndShardOreItem extends BlockItem { public EndShardOreItem() { - super( Registries.ENDERIUM_SHARD_ORE.get(), new Properties().stacksTo( 64 ) ); + super( Registries.ENDERIUM_SHARD_ORE.get(), new Properties().tab( Registries.ITEM_GROUP ).stacksTo( 64 ) ); } } } diff --git a/src/main/java/com/majruszsdifficulty/blocks/EnderiumBlock.java b/src/main/java/com/majruszsdifficulty/blocks/EnderiumBlock.java index 703024441..e50058644 100644 --- a/src/main/java/com/majruszsdifficulty/blocks/EnderiumBlock.java +++ b/src/main/java/com/majruszsdifficulty/blocks/EnderiumBlock.java @@ -15,7 +15,7 @@ public EnderiumBlock() { public static class EndBlockItem extends BlockItem { public EndBlockItem() { - super( Registries.ENDERIUM_BLOCK.get(), new Properties().stacksTo( 64 ).rarity( Rarity.UNCOMMON ) ); + super( Registries.ENDERIUM_BLOCK.get(), new Properties().tab( Registries.ITEM_GROUP ).stacksTo( 64 ).rarity( Rarity.UNCOMMON ) ); } } } diff --git a/src/main/java/com/majruszsdifficulty/blocks/InfestedEndStone.java b/src/main/java/com/majruszsdifficulty/blocks/InfestedEndStone.java index 5b565b6f2..0422435cd 100644 --- a/src/main/java/com/majruszsdifficulty/blocks/InfestedEndStone.java +++ b/src/main/java/com/majruszsdifficulty/blocks/InfestedEndStone.java @@ -51,7 +51,7 @@ private void spawnEndermite( ServerLevel world, BlockPos position ) { public static class InfestedEndStoneItem extends BlockItem { public InfestedEndStoneItem() { - super( Registries.INFESTED_END_STONE.get(), ( new Properties() ).stacksTo( 64 ) ); + super( Registries.INFESTED_END_STONE.get(), ( new Properties() ).tab( Registries.ITEM_GROUP ).stacksTo( 64 ) ); } } } diff --git a/src/main/java/com/majruszsdifficulty/commands/SummonMobGroupCommand.java b/src/main/java/com/majruszsdifficulty/commands/SummonMobGroupCommand.java new file mode 100644 index 000000000..1d4c7e3ee --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/commands/SummonMobGroupCommand.java @@ -0,0 +1,62 @@ +package com.majruszsdifficulty.commands; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.config.MobGroupConfig; +import com.majruszsdifficulty.features.groups.PiglinsInGroup; +import com.majruszsdifficulty.features.groups.SkeletonsInGroup; +import com.majruszsdifficulty.features.groups.ZombiesInGroup; +import com.majruszsdifficulty.undeadarmy.UndeadArmyPatrol; +import com.mlib.modhelper.AutoInstance; +import com.mlib.commands.Command; +import com.mlib.commands.CommandData; +import com.mlib.entities.EntityHelper; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.PathfinderMob; + +import java.util.function.Supplier; + +@AutoInstance +public class SummonMobGroupCommand extends Command { + public SummonMobGroupCommand() { + this.newBuilder() + .literal( "summongroup" ) + .enumeration( GroupType.class ) + .hasPermission( 4 ) + .execute( this::handle ); + } + + private int handle( CommandData data ) throws CommandSyntaxException { + Entity entity = this.getOptionalEntityOrPlayer( data ); + if( entity.level instanceof ServerLevel level ) { + GroupType groupType = this.getEnumeration( data, GroupType.class ); + PathfinderMob mob = EntityHelper.createSpawner( groupType.entityType, level ) + .position( entity.position() ) + .mobSpawnType( MobSpawnType.COMMAND ) + .spawn(); + if( mob != null ) { + Registries.HELPER.findInstance( groupType.clazz ).ifPresent( instance->instance.get().spawn( mob ) ); + } + } + + return 0; + } + + enum GroupType { + ZOMBIE( EntityType.ZOMBIE, ZombiesInGroup.class ), + SKELETONS( EntityType.SKELETON, SkeletonsInGroup.class ), + PIGLINS( EntityType.PIGLIN, PiglinsInGroup.class ), + UNDEAD_ARMY( EntityType.SKELETON, UndeadArmyPatrol.class ); + + final EntityType< ? extends PathfinderMob > entityType; + final Class< ? extends Supplier< MobGroupConfig > > clazz; + + GroupType( EntityType< ? extends PathfinderMob > entityType, Class< ? extends Supplier< MobGroupConfig > > clazz ) { + this.entityType = entityType; + this.clazz = clazz; + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/BleedingConfig.java b/src/main/java/com/majruszsdifficulty/config/BleedingConfig.java similarity index 79% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/configs/BleedingConfig.java rename to src/main/java/com/majruszsdifficulty/config/BleedingConfig.java index 269ca0a26..283d4839e 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/BleedingConfig.java +++ b/src/main/java/com/majruszsdifficulty/config/BleedingConfig.java @@ -1,10 +1,10 @@ -package com.majruszsdifficulty.gamemodifiers.configs; +package com.majruszsdifficulty.config; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.effects.BleedingEffect; import com.mlib.mobeffects.MobEffectHelper; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.OnDamaged; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; @@ -32,13 +32,13 @@ public boolean apply( OnDamaged.Data data ) { return false; if( target instanceof ServerPlayer targetPlayer ) { - Registries.BASIC_TRIGGER.trigger( targetPlayer, "bleeding_received" ); + Registries.HELPER.triggerAchievement( targetPlayer, "bleeding_received" ); if( data.source.equals( DamageSource.CACTUS ) ) { - Registries.BASIC_TRIGGER.trigger( targetPlayer, "cactus_bleeding" ); + Registries.HELPER.triggerAchievement( targetPlayer, "cactus_bleeding" ); } } if( attacker instanceof ServerPlayer attackerPlayer ) { - Registries.BASIC_TRIGGER.trigger( attackerPlayer, "bleeding_inflicted" ); + Registries.HELPER.triggerAchievement( attackerPlayer, "bleeding_inflicted" ); } return true; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/MobGroupConfig.java b/src/main/java/com/majruszsdifficulty/config/MobGroupConfig.java similarity index 65% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/configs/MobGroupConfig.java rename to src/main/java/com/majruszsdifficulty/config/MobGroupConfig.java index eb4fc1cd8..93293a2cd 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/MobGroupConfig.java +++ b/src/main/java/com/majruszsdifficulty/config/MobGroupConfig.java @@ -1,4 +1,4 @@ -package com.majruszsdifficulty.gamemodifiers.configs; +package com.majruszsdifficulty.config; import com.majruszsdifficulty.goals.FollowGroupLeaderGoal; import com.majruszsdifficulty.goals.TargetAsLeaderGoal; @@ -7,15 +7,22 @@ import com.mlib.config.IntegerConfig; import com.mlib.entities.EntityHelper; import com.mlib.items.ItemHelper; +import com.mlib.levels.LevelHelper; import com.mlib.loot.LootHelper; +import com.mlib.math.AnyPos; import com.mlib.math.Range; +import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.*; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.function.Supplier; public class MobGroupConfig extends ConfigGroup { @@ -37,29 +44,27 @@ public MobGroupConfig( Supplier< EntityType< ? extends PathfinderMob > > mob, Ra this.leaderSet = leaderSet; this.sidekickSet = sidekickSet; - this.addConfig( this.min.name( "min_count" ).comment( "Minimum amount of mobs to spawn (leader is not considered)." ) ); - this.addConfig( this.max.name( "max_count" ).comment( "Maximum amount of mobs to spawn (leader is not considered)." ) ); + this.addConfig( this.min.name( "min_count" ).comment( "Minimum amount of extra mobs to spawn." ) ); + this.addConfig( this.max.name( "max_count" ).comment( "Maximum amount of extra mobs to spawn." ) ); } public List< PathfinderMob > spawn( PathfinderMob leader ) { int sidekickAmount = Random.nextInt( this.getMinCount(), this.getMaxCount() + 1 ); - Vec3 spawnPosition = leader.position(); - List< PathfinderMob > sidekicks = new ArrayList<>(); - for( int sidekickIdx = 0; sidekickIdx < sidekickAmount; sidekickIdx++ ) { - PathfinderMob sidekick = EntityHelper.spawn( this.getMob(), leader.level, mob->{ - this.addSidekickGoals( mob, leader ); - this.markAsSidekick( mob ); - this.applyArmorSet( this.sidekickSet, mob ); - this.randomizePosition( mob, spawnPosition ); - } ); + for( int idx = 0; idx < sidekickAmount; idx++ ) { + PathfinderMob sidekick = EntityHelper.createSpawner( this.getMob(), leader.level ) + .position( this.getRandomizedPosition( leader.level, leader.position() ) ) + .spawn(); if( sidekick != null ) { + this.addSidekickGoals( sidekick, leader ); + this.markAsSidekick( sidekick ); + this.applyArmorSet( sidekick, this.sidekickSet ); sidekicks.add( sidekick ); } } this.markAsLeader( leader ); - this.applyArmorSet( this.leaderSet, leader ); + this.applyArmorSet( leader, this.leaderSet ); return sidekicks; } @@ -89,9 +94,10 @@ private void markAsLeader( PathfinderMob leader ) { leader.getPersistentData().putBoolean( LEADER_TAG, true ); } - private void applyArmorSet( ResourceLocation location, PathfinderMob mob ) { - if( location == null ) + private void applyArmorSet( PathfinderMob mob, ResourceLocation location ) { + if( location == null ) { return; + } LootHelper.getLootTable( location ) .getRandomItems( LootHelper.toGiftContext( mob ) ) @@ -101,7 +107,15 @@ private void applyArmorSet( ResourceLocation location, PathfinderMob mob ) { .forEach( slot->mob.setDropChance( slot, 0.05f ) ); } - private void randomizePosition( PathfinderMob sidekick, Vec3 position ) { - sidekick.setPos( position.x + Random.nextInt( -3, 4 ), position.y + 0.5, position.z + Random.nextInt( -3, 4 ) ); + private Vec3 getRandomizedPosition( Level level, Vec3 position ) { + for( int idx = 0; idx < 3; ++idx ) { + Vec3 newPosition = AnyPos.from( position ).add( Random.nextInt( -3, 4 ), 0.0, Random.nextInt( -3, 4 ) ).vec3(); + Optional< BlockPos > spawnPoint = LevelHelper.findBlockPosOnGround( level, newPosition.x, new Range<>( newPosition.y - 3, newPosition.y + 3 ), newPosition.z ); + if( spawnPoint.isPresent() ) { + return AnyPos.from( spawnPoint.get() ).add( 0.5, 0.0, 0.5 ).vec3(); + } + } + + return position; } } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/ProgressiveEffectConfig.java b/src/main/java/com/majruszsdifficulty/config/ProgressiveEffectConfig.java similarity index 94% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/configs/ProgressiveEffectConfig.java rename to src/main/java/com/majruszsdifficulty/config/ProgressiveEffectConfig.java index 9a8727a88..7a518846c 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/ProgressiveEffectConfig.java +++ b/src/main/java/com/majruszsdifficulty/config/ProgressiveEffectConfig.java @@ -1,8 +1,6 @@ -package com.majruszsdifficulty.gamemodifiers.configs; +package com.majruszsdifficulty.config; import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.config.GameStageDoubleConfig; -import com.majruszsdifficulty.config.GameStageIntegerConfig; import com.mlib.Utility; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/StageProgressConfig.java b/src/main/java/com/majruszsdifficulty/config/StageProgressConfig.java similarity index 95% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/configs/StageProgressConfig.java rename to src/main/java/com/majruszsdifficulty/config/StageProgressConfig.java index b6fd5b5cf..037ae90d1 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/StageProgressConfig.java +++ b/src/main/java/com/majruszsdifficulty/config/StageProgressConfig.java @@ -1,4 +1,4 @@ -package com.majruszsdifficulty.gamemodifiers.configs; +package com.majruszsdifficulty.config; import com.mlib.config.ConfigGroup; import com.mlib.config.StringListConfig; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/TreasureBagConfig.java b/src/main/java/com/majruszsdifficulty/config/TreasureBagConfig.java similarity index 89% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/configs/TreasureBagConfig.java rename to src/main/java/com/majruszsdifficulty/config/TreasureBagConfig.java index 948699b03..3dd8cc116 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/configs/TreasureBagConfig.java +++ b/src/main/java/com/majruszsdifficulty/config/TreasureBagConfig.java @@ -1,4 +1,4 @@ -package com.majruszsdifficulty.gamemodifiers.configs; +package com.majruszsdifficulty.config; import com.mlib.config.BooleanConfig; import com.mlib.config.ConfigGroup; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnBleedingCheck.java b/src/main/java/com/majruszsdifficulty/contexts/OnBleedingCheck.java similarity index 75% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnBleedingCheck.java rename to src/main/java/com/majruszsdifficulty/contexts/OnBleedingCheck.java index 7bc25fa2a..2f3d426ce 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnBleedingCheck.java +++ b/src/main/java/com/majruszsdifficulty/contexts/OnBleedingCheck.java @@ -1,8 +1,8 @@ -package com.majruszsdifficulty.gamemodifiers.contexts; +package com.majruszsdifficulty.contexts; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.Contexts; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.Contexts; +import com.mlib.contexts.OnDamaged; import net.minecraftforge.event.entity.living.LivingHurtEvent; import java.util.function.Consumer; @@ -27,6 +27,10 @@ public void trigger() { this.isTriggered = true; } + public void cancel() { + this.isTriggered = false; + } + public boolean isEffectTriggered() { return this.isTriggered; } diff --git a/src/main/java/com/majruszsdifficulty/contexts/OnBleedingTooltip.java b/src/main/java/com/majruszsdifficulty/contexts/OnBleedingTooltip.java new file mode 100644 index 000000000..8b3b2f2a9 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/contexts/OnBleedingTooltip.java @@ -0,0 +1,47 @@ +package com.majruszsdifficulty.contexts; + +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.Contexts; +import com.mlib.contexts.OnItemAttributeTooltip; +import com.mlib.text.TextHelper; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; + +import java.util.function.Consumer; + +public class OnBleedingTooltip { + public static Context< Data > listen( Consumer< Data > consumer ) { + return Contexts.get( Data.class ).add( consumer ); + } + + public static Data dispatch( ItemStack itemStack, int amplifier ) { + return Contexts.get( Data.class ).dispatch( new Data( itemStack, amplifier ) ); + } + + public static class Data extends OnItemAttributeTooltip.Data { + final int amplifier; + + public Data( ItemStack itemStack, int amplifier ) { + super( itemStack ); + + this.amplifier = amplifier; + } + + public void addItem( double chance ) { + this.add( EquipmentSlot.MAINHAND, new TranslatableComponent( "effect.majruszsdifficulty.bleeding.item_tooltip", TextHelper.percent( ( float )chance ), TextHelper.toRoman( this.amplifier + 1 ) ) + .withStyle( ChatFormatting.DARK_GREEN ) ); + } + + public void addArmor( EquipmentSlot slot, double chanceMultiplier ) { + this.add( slot, new TranslatableComponent( "effect.majruszsdifficulty.bleeding.armor_tooltip", TextHelper.minPrecision( chanceMultiplier ) ) + .withStyle( ChatFormatting.BLUE ) ); + } + + public void addAll( OnItemAttributeTooltip.Data data ) { + this.components.forEach( ( slot, components )->components.forEach( component->data.add( slot, component ) ) ); + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnGameStageChange.java b/src/main/java/com/majruszsdifficulty/contexts/OnGameStageChange.java similarity index 87% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnGameStageChange.java rename to src/main/java/com/majruszsdifficulty/contexts/OnGameStageChange.java index 60fdaaa78..a63d50984 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnGameStageChange.java +++ b/src/main/java/com/majruszsdifficulty/contexts/OnGameStageChange.java @@ -1,8 +1,8 @@ -package com.majruszsdifficulty.gamemodifiers.contexts; +package com.majruszsdifficulty.contexts; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.Contexts; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.Contexts; import net.minecraft.server.MinecraftServer; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnSoulJarMultiplier.java b/src/main/java/com/majruszsdifficulty/contexts/OnSoulJarMultiplier.java similarity index 84% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnSoulJarMultiplier.java rename to src/main/java/com/majruszsdifficulty/contexts/OnSoulJarMultiplier.java index 39abdffcd..327019962 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnSoulJarMultiplier.java +++ b/src/main/java/com/majruszsdifficulty/contexts/OnSoulJarMultiplier.java @@ -1,8 +1,8 @@ -package com.majruszsdifficulty.gamemodifiers.contexts; +package com.majruszsdifficulty.contexts; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.Contexts; -import com.mlib.gamemodifiers.data.ILevelData; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.Contexts; +import com.mlib.contexts.data.ILevelData; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnTreasureBagOpened.java b/src/main/java/com/majruszsdifficulty/contexts/OnTreasureBagOpened.java similarity index 85% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnTreasureBagOpened.java rename to src/main/java/com/majruszsdifficulty/contexts/OnTreasureBagOpened.java index 47cde0482..3ec4c6e9d 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/contexts/OnTreasureBagOpened.java +++ b/src/main/java/com/majruszsdifficulty/contexts/OnTreasureBagOpened.java @@ -1,9 +1,9 @@ -package com.majruszsdifficulty.gamemodifiers.contexts; +package com.majruszsdifficulty.contexts; import com.majruszsdifficulty.items.TreasureBagItem; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.Contexts; -import com.mlib.gamemodifiers.data.ILevelData; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.Contexts; +import com.mlib.contexts.data.ILevelData; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/CustomConditions.java b/src/main/java/com/majruszsdifficulty/contexts/base/CustomConditions.java similarity index 87% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/CustomConditions.java rename to src/main/java/com/majruszsdifficulty/contexts/base/CustomConditions.java index 90bf26f5a..e762c30bd 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/CustomConditions.java +++ b/src/main/java/com/majruszsdifficulty/contexts/base/CustomConditions.java @@ -1,10 +1,10 @@ -package com.majruszsdifficulty.gamemodifiers; +package com.majruszsdifficulty.contexts.base; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; import com.mlib.config.StringListConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.Priority; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.Priority; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.PathfinderMob; @@ -12,8 +12,8 @@ import java.util.function.Predicate; import java.util.stream.Stream; -import static com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig.LEADER_TAG; -import static com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig.SIDEKICK_TAG; +import static com.majruszsdifficulty.config.MobGroupConfig.LEADER_TAG; +import static com.majruszsdifficulty.config.MobGroupConfig.SIDEKICK_TAG; public class CustomConditions { public static < DataType > Condition< DataType > gameStage( GameStage... defaultGameStages ) { diff --git a/src/main/java/com/majruszsdifficulty/effects/BleedingEffect.java b/src/main/java/com/majruszsdifficulty/effects/BleedingEffect.java index 6f709ed38..6c87e7b96 100644 --- a/src/main/java/com/majruszsdifficulty/effects/BleedingEffect.java +++ b/src/main/java/com/majruszsdifficulty/effects/BleedingEffect.java @@ -1,27 +1,23 @@ package com.majruszsdifficulty.effects; -import com.majruszsdifficulty.PacketHandler; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.configs.BleedingConfig; -import com.majruszsdifficulty.gamemodifiers.contexts.OnBleedingCheck; +import com.majruszsdifficulty.config.BleedingConfig; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.majruszsdifficulty.contexts.OnBleedingTooltip; import com.majruszsdifficulty.gui.BleedingGui; -import com.mlib.EquipmentSlots; import com.mlib.Random; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.BooleanConfig; import com.mlib.config.ConfigGroup; -import com.mlib.config.DoubleConfig; import com.mlib.config.StringListConfig; import com.mlib.data.SerializableStructure; import com.mlib.effects.ParticleHandler; import com.mlib.entities.EntityHelper; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.*; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.*; import com.mlib.mobeffects.MobEffectHelper; -import com.mlib.text.TextHelper; -import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.*; import net.minecraft.server.level.ServerLevel; @@ -30,10 +26,7 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; @@ -50,18 +43,6 @@ import java.util.function.Supplier; public class BleedingEffect extends MobEffect { - static Supplier< Boolean > IS_ENABLED = ()->true; - static Supplier< Integer > GET_AMPLIFIER = ()->0; - static Function< EquipmentSlot, Float > GET_ARMOR_MULTIPLIER = slot->1.0f; - - public static boolean isEnabled() { - return IS_ENABLED.get(); - } - - public static int getAmplifier() { - return GET_AMPLIFIER.get(); - } - public BleedingEffect() { super( MobEffectCategory.HARMFUL, 0xffdd5555 ); } @@ -83,10 +64,10 @@ public List< ItemStack > getCurativeItems() { } /** Bleeding damage source that stores information about the causer of bleeding. (required for converting villager to zombie villager etc.) */ - public static class EntityBleedingDamageSource extends DamageSource { + public static class DamageSource extends net.minecraft.world.damagesource.DamageSource { @Nullable protected final Entity damageSourceEntity; - public EntityBleedingDamageSource( @Nullable Entity damageSourceEntity ) { + public DamageSource( @Nullable Entity damageSourceEntity ) { super( Registries.BLEEDING_SOURCE.msgId ); this.damageSourceEntity = damageSourceEntity; @@ -120,16 +101,19 @@ public MobEffectInstance( int duration, int amplifier, boolean ambient, @Nullabl @AutoInstance public static class Bleeding { static final ParticleHandler PARTICLES = new ParticleHandler( Registries.BLOOD, ()->new Vec3( 0.2, 0.5, 0.2 ), ParticleHandler.speed( 0.075f ) ); - static final String ATTRIBUTE_ID = "effect.majruszsdifficulty.bleeding.armor_tooltip"; static final int BLOOD_TICK_COOLDOWN = Utility.secondsToTicks( 4.0 ); + final BooleanConfig availability = Condition.DefaultConfigs.excludable( true ); final StringListConfig immuneMobs = new StringListConfig( "minecraft:skeleton_horse", "minecraft:zombie_horse" ); final BleedingConfig effect = new BleedingConfig(); final HashMap< Integer, Integer > entityTicks = new HashMap<>(); public Bleeding() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "Bleeding" ) - .comment( "Common config for all Bleeding effects." ); + ConfigGroup group = ModConfigs.getGroup( Registries.Groups.BLEEDING ) + .addConfig( this.availability ) + .addConfig( this.immuneMobs + .name( "immune_mobs" ) + .comment( "Specifies which mobs should not be affected by Bleeding (all undead mobs are immune by default)." ) + ).addConfig( this.effect ); OnEntityTick.listen( this::spawnParticles ) .addCondition( Condition.isServer() ) @@ -148,47 +132,33 @@ public Bleeding() { .insertTo( group ); OnEffectApplicable.listen( this::cancelEffect ) - .addCondition( Condition.predicate( data->!BleedingEffect.isEnabled() ) ) + .addCondition( Condition.predicate( data->this.availability.isDisabled() ) ) .addCondition( Condition.predicate( data->data.effect.equals( Registries.BLEEDING_IMMUNITY.get() ) ) ) .insertTo( group ); - var excludable = Condition.< OnDamaged.Data > excludable(); - IS_ENABLED = ()->( ( BooleanConfig )excludable.getConfigs().get( 0 ) ).isEnabled(); // TODO: refactor - var armorChance = Condition.< OnDamaged.Data > armorDependentChance( 0.8, 0.6, 0.7, 0.9, data->data.target ); - GET_ARMOR_MULTIPLIER = slot->( ( DoubleConfig )( ( ConfigGroup )armorChance.getConfigs().get( 0 ) ).getConfigs() - .get( 3 - slot.getIndex() ) - ).asFloat(); // TODO: refactor OnDamaged.listen( this::applyBleeding ) .addCondition( Condition.isServer() ) - .addCondition( excludable ) - .addCondition( armorChance ) + .addCondition( Condition.predicate( data->this.availability.isEnabled() ) ) .addCondition( Condition.predicate( this::isNotImmune ) ) .addCondition( OnDamaged.dealtAnyDamage() ) - .addConfig( this.immuneMobs - .name( "immune_mobs" ) - .comment( "Specifies which mobs should not be affected by Bleeding (all undead mobs are immune by default)." ) - ).addConfig( this.effect ) .insertTo( group ); - OnItemAttributeTooltip.listen( this::addChanceTooltip ) - .addCondition( Condition.predicate( data->data.item instanceof ArmorItem ) ) - .addCondition( Condition.predicate( data->BleedingEffect.isEnabled() ) ) + OnItemAttributeTooltip.listen( this::addCustomTooltip ) + .addCondition( Condition.predicate( data->this.availability.isEnabled() ) ) .insertTo( group ); - - GET_AMPLIFIER = this.effect::getAmplifier; } private void spawnParticles( OnEntityTick.Data data ) { int amplifier = MobEffectHelper.getAmplifier( data.entity, Registries.BLEEDING.get() ); float walkDistanceDelta = EntityHelper.getWalkDistanceDelta( data.entity ); - this.spawnParticles( data.getServerLevel(), data.entity, Random.roundRandomly( 1.0 + ( 15.0 + amplifier ) * walkDistanceDelta ) ); + this.spawnParticles( data.getServerLevel(), data.entity, Random.round( 1.0 + ( 15.0 + amplifier ) * walkDistanceDelta ) ); } private void tick( OnEntityTick.Data data ) { LivingEntity entity = data.entity; int amplifier = MobEffectHelper.getAmplifier( entity, Registries.BLEEDING.get() ); - int extraDuration = Random.roundRandomly( 0.3 * ( amplifier + 2 ) * ( 7.26 * EntityHelper.getWalkDistanceDelta( entity ) + 1 ) ); + int extraDuration = Random.round( 0.3 * ( amplifier + 2 ) * ( 7.26 * EntityHelper.getWalkDistanceDelta( entity ) + 1 ) ); int duration = this.entityTicks.getOrDefault( entity.getId(), 0 ) + extraDuration; if( duration >= BLOOD_TICK_COOLDOWN ) { this.dealDamage( entity ); @@ -201,13 +171,13 @@ private void tick( OnEntityTick.Data data ) { private void dealDamage( LivingEntity entity ) { if( entity.getEffect( Registries.BLEEDING.get() ) instanceof MobEffectInstance effectInstance ) { Vec3 motion = entity.getDeltaMovement(); - entity.hurt( new EntityBleedingDamageSource( effectInstance.damageSourceEntity ), 1.0f ); + entity.hurt( new DamageSource( effectInstance.damageSourceEntity ), 1.0f ); entity.setDeltaMovement( motion ); // sets previous motion to avoid any knockback from bleeding } else { entity.hurt( Registries.BLEEDING_SOURCE, 1.0f ); } if( entity instanceof ServerPlayer player ) { - PacketHandler.CHANNEL.send( PacketDistributor.PLAYER.with( ()->player ), new BloodMessage( player ) ); + Registries.HELPER.sendMessage( PacketDistributor.PLAYER.with( ()->player ), new BloodMessage( player ) ); } this.entityTicks.put( entity.getId(), 0 ); @@ -228,7 +198,7 @@ private void cancelEffect( OnEffectApplicable.Data data ) { private void applyBleeding( OnDamaged.Data data ) { OnBleedingCheck.Data bleedingData = OnBleedingCheck.dispatch( data.event ); - if( bleedingData.isEffectTriggered() && this.effect.apply( data ) ) { + if( bleedingData.dealtAnyDamage() && bleedingData.isEffectTriggered() && this.effect.apply( data ) ) { this.dealDamage( data.target ); } } @@ -237,14 +207,8 @@ private boolean isNotImmune( OnDamaged.Data data ) { return !this.immuneMobs.contains( Utility.getRegistryString( data.target ) ); } - private void addChanceTooltip( OnItemAttributeTooltip.Data data ) { - for( EquipmentSlot slot : EquipmentSlots.ARMOR ) { - if( !data.itemStack.getAttributeModifiers( slot ).containsKey( Attributes.ARMOR ) ) - continue; - - String multiplier = TextHelper.minPrecision( GET_ARMOR_MULTIPLIER.apply( slot ) ); - data.add( slot, new TranslatableComponent( ATTRIBUTE_ID, multiplier ).withStyle( ChatFormatting.BLUE ) ); - } + private void addCustomTooltip( OnItemAttributeTooltip.Data data ) { + OnBleedingTooltip.dispatch( data.itemStack, this.effect.getAmplifier() ).addAll( data ); } } @@ -252,7 +216,7 @@ public static class BloodMessage extends SerializableStructure { int entityId; public BloodMessage() { - this.define( null, ()->this.entityId, x->this.entityId = x ); + this.defineInteger( "id", ()->this.entityId, x->this.entityId = x ); } public BloodMessage( Entity entity ) { diff --git a/src/main/java/com/majruszsdifficulty/effects/BleedingImmunityEffect.java b/src/main/java/com/majruszsdifficulty/effects/BleedingImmunityEffect.java index fafd87697..29686a992 100644 --- a/src/main/java/com/majruszsdifficulty/effects/BleedingImmunityEffect.java +++ b/src/main/java/com/majruszsdifficulty/effects/BleedingImmunityEffect.java @@ -1,11 +1,9 @@ package com.majruszsdifficulty.effects; import com.majruszsdifficulty.Registries; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnEffectApplicable; +import com.mlib.modhelper.AutoInstance; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnEffectApplicable; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.Entity; @@ -37,14 +35,9 @@ public boolean isDurationEffectTick( int duration, int amplifier ) { @AutoInstance public static class BleedingImmunity { public BleedingImmunity() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "BleedingImmunity" ) - .comment( "Config for Bleeding Immunity effect." ); - OnEffectApplicable.listen( this::cancelBleeding ) .addCondition( Condition.hasEffect( Registries.BLEEDING_IMMUNITY, data->data.entity ) ) - .addCondition( Condition.predicate( data->data.effect.equals( Registries.BLEEDING.get() ) ) ) - .insertTo( group ); + .addCondition( Condition.predicate( data->data.effect.equals( Registries.BLEEDING.get() ) ) ); } private void cancelBleeding( OnEffectApplicable.Data data ) { diff --git a/src/main/java/com/majruszsdifficulty/effects/GlassRegenerationEffect.java b/src/main/java/com/majruszsdifficulty/effects/GlassRegenerationEffect.java new file mode 100644 index 000000000..ef769c74f --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/effects/GlassRegenerationEffect.java @@ -0,0 +1,51 @@ +package com.majruszsdifficulty.effects; + +import com.majruszsdifficulty.Registries; +import com.mlib.Utility; +import com.mlib.modhelper.AutoInstance; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnDamaged; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; + +import javax.annotation.Nullable; + +public class GlassRegenerationEffect extends MobEffect { + public GlassRegenerationEffect() { + super( MobEffectCategory.BENEFICIAL, 0xffcd5cab ); + } + + @Override + public void applyEffectTick( LivingEntity entity, int amplifier ) { + if( entity.getHealth() < entity.getMaxHealth() ) { + entity.heal( 1.0f ); + } + } + + @Override + public void applyInstantenousEffect( @Nullable Entity source, @Nullable Entity indirectSource, LivingEntity entity, int amplifier, double health ) { + this.applyEffectTick( entity, amplifier ); + } + + @Override + public boolean isDurationEffectTick( int duration, int amplifier ) { + int cooldown = Utility.secondsToTicks( 8.0 ) >> amplifier; + + return cooldown <= 0 || duration % cooldown == 0; + } + + @AutoInstance + public static class GlassRegeneration { + public GlassRegeneration() { + OnDamaged.listen( this::removeEffect ) + .addCondition( Condition.hasEffect( Registries.GLASS_REGENERATION, data->data.target ) ) + .addCondition( OnDamaged.dealtAnyDamage() ); + } + + private void removeEffect( OnDamaged.Data data ) { + data.target.removeEffect( Registries.GLASS_REGENERATION.get() ); + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/entities/BlackWidowEntity.java b/src/main/java/com/majruszsdifficulty/entities/BlackWidowEntity.java deleted file mode 100644 index 959f68683..000000000 --- a/src/main/java/com/majruszsdifficulty/entities/BlackWidowEntity.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.majruszsdifficulty.entities; - -import com.majruszsdifficulty.Registries; -import com.mlib.Random; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.config.DoubleConfig; -import com.mlib.effects.SoundHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnEntityTick; -import com.mlib.gamemodifiers.contexts.OnItemTooltip; -import com.mlib.math.Range; -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.*; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.entity.*; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.entity.monster.Spider; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Blocks; - -import java.util.function.Supplier; - -public class BlackWidowEntity extends Spider { - public static Supplier< EntityType< BlackWidowEntity > > createSupplier() { - return ()->EntityType.Builder.of( BlackWidowEntity::new, MobCategory.MONSTER ) - .sized( 0.7f, 0.35f ) - .build( "black_widow" ); - } - - public static AttributeSupplier getAttributeMap() { - return Monster.createMobAttributes() - .add( Attributes.MAX_HEALTH, 12.0 ) - .add( Attributes.MOVEMENT_SPEED, 0.3 ) - .add( Attributes.ATTACK_DAMAGE, 4.0 ) - .build(); - } - - public BlackWidowEntity( EntityType< ? extends BlackWidowEntity > type, Level world ) { - super( type, world ); - } - - @Override - public int getExperienceReward( Player player ) { - return Random.nextInt( 3 ); - } - - @Override - public void playSound( SoundEvent sound, float volume, float pitch ) { - if( this.isSilent() ) { - return; - } - float randomizedVolume = SoundHandler.randomized( volume * 0.6f ).get(); - float randomizedPitch = SoundHandler.randomized( pitch * 1.4f ).get(); - - this.level.playSound( null, this.getX(), this.getY(), this.getZ(), sound, this.getSoundSource(), randomizedVolume, randomizedPitch ); - } - - @Override - protected float getStandingEyeHeight( Pose pose, EntityDimensions dimensions ) { - return 0.2f; - } - - @AutoInstance - public static class WebAbility { - final DoubleConfig delay = new DoubleConfig( 30.0, new Range<>( 5.0, 600.0 ) ); - - public WebAbility() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "BlackWidowWebAbility" ) - .comment( "Black Widow spawns the web when in combat." ); - - OnEntityTick.listen( this::spawnWeb ) - .addCondition( Condition.isServer() ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.predicate( data->data.entity instanceof BlackWidowEntity ) ) - .addCondition( Condition.predicate( this::ticksHavePassed ) ) - .addConfig( this.delay.name( "delay" ).comment( "Duration between creating a new web (in seconds)." ) ) - .insertTo( group ); - } - - private void spawnWeb( OnEntityTick.Data data ) { - data.getServerLevel().setBlock( data.entity.blockPosition(), Blocks.COBWEB.defaultBlockState(), 3 ); - } - - private boolean ticksHavePassed( OnEntityTick.Data data ) { - return data.entity.tickCount % this.delay.asTicks() == 0; - } - } - - @Deprecated - @AutoInstance - public static class TempTooltip { - public TempTooltip() { - OnItemTooltip.listen( this::addTooltip ) - .addCondition( Condition.predicate( data->data.itemStack.getItem().equals( Registries.BLACK_WIDOW_SPAWN_EGG.get() ) ) ); - } - - private void addTooltip( OnItemTooltip.Data data ) { - data.tooltip.add( new TextComponent( "This mob is not finished yet, coming soon in the next major update!" ) - .withStyle( ChatFormatting.RED ) ); - } - } -} diff --git a/src/main/java/com/majruszsdifficulty/entities/CerberusEntity.java b/src/main/java/com/majruszsdifficulty/entities/CerberusEntity.java index 04b0dcea6..65d7366f1 100644 --- a/src/main/java/com/majruszsdifficulty/entities/CerberusEntity.java +++ b/src/main/java/com/majruszsdifficulty/entities/CerberusEntity.java @@ -1,27 +1,23 @@ package com.majruszsdifficulty.entities; -import com.majruszsdifficulty.PacketHandler; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.undeadarmy.UndeadArmyManager; import com.mlib.Random; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.EffectConfig; -import com.mlib.data.SerializableStructure; import com.mlib.effects.ParticleHandler; import com.mlib.effects.SoundHandler; import com.mlib.entities.CustomSkills; import com.mlib.entities.EntityHelper; import com.mlib.entities.ICustomSkillProvider; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import com.mlib.gamemodifiers.contexts.OnEffectApplicable; -import com.mlib.gamemodifiers.contexts.OnEntityTick; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; +import com.mlib.contexts.OnEffectApplicable; +import com.mlib.contexts.OnEntityTick; import com.mlib.goals.CustomMeleeGoal; import com.mlib.math.AnyPos; -import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -45,27 +41,23 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.network.NetworkEvent; -import net.minecraftforge.network.PacketDistributor; import java.util.List; import java.util.function.Supplier; public class CerberusEntity extends Monster implements ICustomSkillProvider< CerberusEntity.Skills > { - static final String GROUP_ID = "Cerberus"; + static final String GROUP_ID = Registries.getLocationString( "cerberus" ); static { ModConfigs.init( Registries.Groups.MOBS, GROUP_ID ).name( "Cerberus" ); } public final Skills skills = new Skills( this ); - public boolean hasTarget = false; public static Supplier< EntityType< CerberusEntity > > createSupplier() { - return ()->EntityType.Builder.of( CerberusEntity::new, MobCategory.MONSTER ).sized( 1.0f, 1.99f ).build( "cerberus" ); + return ()->EntityType.Builder.of( CerberusEntity::new, MobCategory.MONSTER ).sized( 1.2f, 1.75f ).build( "cerberus" ); } public static AttributeSupplier getAttributeMap() { @@ -75,12 +67,14 @@ public static AttributeSupplier getAttributeMap() { .add( Attributes.ATTACK_DAMAGE, 8.0 ) .add( Attributes.FOLLOW_RANGE, 30.0 ) .add( Attributes.KNOCKBACK_RESISTANCE, 0.5 ) - .add( ForgeMod.STEP_HEIGHT_ADDITION.get(), 1.0 ) + .add( ForgeMod.STEP_HEIGHT_ADDITION.get(), 0.5 ) .build(); } public CerberusEntity( EntityType< ? extends CerberusEntity > type, Level world ) { super( type, world ); + + this.maxUpStep = 1.0f; } @Override @@ -114,11 +108,6 @@ public void tick() { super.tick(); this.skills.tick(); - boolean hasTarget = this.getTarget() != null; - if( hasTarget != this.hasTarget && !this.level.isClientSide ) { - this.hasTarget = hasTarget; - PacketHandler.CHANNEL.send( PacketDistributor.DIMENSION.with( ()->this.level.dimension() ), new TargetMessage( this ) ); - } if( this.isSunBurnTick() ) { this.setSecondsOnFire( 8 ); } @@ -126,7 +115,7 @@ public void tick() { @Override protected void registerGoals() { - this.goalSelector.addGoal( 1, new CustomMeleeGoal<>( this, 1.5, false ) ); + this.goalSelector.addGoal( 1, new CustomMeleeGoal<>( this, 1.5, true ) ); this.goalSelector.addGoal( 7, new WaterAvoidingRandomStrollGoal( this, 1.0 ) ); this.goalSelector.addGoal( 8, new LookAtPlayerGoal( this, Player.class, 8.0f, 1.0f ) ); this.goalSelector.addGoal( 8, new RandomLookAroundGoal( this ) ); @@ -143,7 +132,7 @@ protected SoundEvent getAmbientSound() { @Override protected float getStandingEyeHeight( Pose poseIn, EntityDimensions sizeIn ) { - return 1.8f; + return 1.6f; } @Override @@ -162,17 +151,15 @@ protected void playStepSound( BlockPos blockPos, BlockState blockState ) { } private boolean isValidTarget( LivingEntity entity ) { - UndeadArmyManager undeadArmyManager = Registries.getUndeadArmyManager(); - - return !undeadArmyManager.isPartOfUndeadArmy( this ) - || !undeadArmyManager.isPartOfUndeadArmy( entity ) && undeadArmyManager.findNearestUndeadArmy( entity.blockPosition() ) != null; + return !entity.getMobType().equals( MobType.UNDEAD ) + && !Registries.getUndeadArmyManager().isPartOfUndeadArmy( entity ); } public static class Skills extends CustomSkills< SkillType > { int fireballCooldownLeft = 0; public Skills( PathfinderMob mob ) { - super( mob, PacketHandler.CHANNEL, SkillMessage::new ); + super( mob, Registries.HELPER.getNetworkChannel(), SkillMessage::new ); } @Override @@ -183,9 +170,6 @@ public boolean tryToStart( LivingEntity entity, double distanceSquared ) { double distance = Math.sqrt( distanceSquared ); if( distance < 3.5 && this.mob.canAttack( entity, TargetingConditions.DEFAULT ) ) { Vec3 position = this.getAttackPosition( this.mob.position(), entity.position() ); - if( distance > 2.0 ) { - this.pushMobTowards( entity ); - } this.start( SkillType.BITE, Utility.secondsToTicks( 0.7 ) ) .onTick( 2, ()->this.mob.playSound( SoundEvents.WOLF_AMBIENT, 0.5f, 0.85f ) ) .onTick( 3, ()->this.mob.playSound( SoundEvents.WOLF_AMBIENT, 0.5f, 0.7f ) ) @@ -213,11 +197,6 @@ public void tick() { this.fireballCooldownLeft = Math.max( this.fireballCooldownLeft - 1, 0 ); } - private void pushMobTowards( LivingEntity entity ) { - Vec3 direction = AnyPos.from( entity.position() ).sub( this.mob.position() ).norm().mul( 0.9 ).add( 0.0, 0.1, 0.0 ).vec3(); - this.mob.push( direction.x, direction.y, direction.z ); - } - private void hurtAllEntitiesInRange( ServerLevel level, Vec3 position ) { List< LivingEntity > entities = EntityHelper.getEntitiesInSphere( LivingEntity.class, level, position, 2.5, entity->!entity.is( this.mob ) ); for( LivingEntity entity : entities ) { @@ -238,7 +217,7 @@ private Vec3 getAttackPosition( Vec3 pos1, Vec3 pos2 ) { private void spawnFireballTowards( LivingEntity target ) { Vec3 offset = AnyPos.from( target.position() ).sub( this.mob.position() ).vec3(); for( double angle : new double[]{ -30.0, 0.0, 30.0 } ) { - Vec3 power = AnyPos.from( offset ).mul( Random.getRandomVector( 0.8, 1.2, 0.8, 1.2, 0.8, 1.2 ) ).vec3(); + Vec3 power = AnyPos.from( offset ).mul( Random.nextVector( 0.8, 1.2, 0.8, 1.2, 0.8, 1.2 ) ).vec3(); double cos = Math.cos( Math.toRadians( angle ) ), sin = Math.sin( Math.toRadians( angle ) ); Vec3 normalized = AnyPos.from( offset ).norm().vec3(); normalized = new Vec3( cos * normalized.x - sin * normalized.z, normalized.y, sin * normalized.x + cos * normalized.z ); @@ -264,31 +243,6 @@ public SkillMessage() { } } - public static class TargetMessage extends SerializableStructure { - int entityId; - boolean hasTarget = false; - - public TargetMessage( CerberusEntity cerberus ) { - this(); - - this.entityId = cerberus.getId(); - this.hasTarget = cerberus.hasTarget; - } - - public TargetMessage() { - this.define( null, ()->this.entityId, x->this.entityId = x ); - this.define( null, ()->this.hasTarget, x->this.hasTarget = x ); - } - - @OnlyIn( Dist.CLIENT ) - public void onClient( NetworkEvent.Context context ) { - Level level = Minecraft.getInstance().level; - if( level != null && level.getEntity( this.entityId ) instanceof CerberusEntity cerberus ) { - cerberus.hasTarget = this.hasTarget; - } - } - } - @AutoInstance public static class WitherAttack { final EffectConfig wither = new EffectConfig( MobEffects.WITHER, 1, 10.0 ); diff --git a/src/main/java/com/majruszsdifficulty/entities/CreeperlingEntity.java b/src/main/java/com/majruszsdifficulty/entities/CreeperlingEntity.java index 1c0520481..49d8f711d 100644 --- a/src/main/java/com/majruszsdifficulty/entities/CreeperlingEntity.java +++ b/src/main/java/com/majruszsdifficulty/entities/CreeperlingEntity.java @@ -1,11 +1,11 @@ package com.majruszsdifficulty.entities; import com.majruszsdifficulty.Registries; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnExplosionDetonate; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnExplosionDetonate; import net.minecraft.world.entity.*; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; diff --git a/src/main/java/com/majruszsdifficulty/entities/CursedArmorEntity.java b/src/main/java/com/majruszsdifficulty/entities/CursedArmorEntity.java index bb3a49f05..77b4c62a3 100644 --- a/src/main/java/com/majruszsdifficulty/entities/CursedArmorEntity.java +++ b/src/main/java/com/majruszsdifficulty/entities/CursedArmorEntity.java @@ -1,25 +1,24 @@ package com.majruszsdifficulty.entities; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.majruszsdifficulty.PacketHandler; import com.majruszsdifficulty.Registries; import com.mlib.Random; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.blocks.BlockHelper; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; import com.mlib.config.StringConfig; +import com.mlib.data.JsonListener; +import com.mlib.data.SerializableList; import com.mlib.data.SerializableStructure; import com.mlib.effects.ParticleHandler; import com.mlib.effects.SoundHandler; import com.mlib.entities.EntityHelper; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.*; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.*; +import com.mlib.loot.LootHelper; import com.mlib.math.AnyPos; import com.mlib.math.Range; import com.mlib.text.TextHelper; @@ -33,7 +32,10 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.*; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; @@ -58,16 +60,16 @@ import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.registries.ForgeRegistries; +import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; +import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; public class CursedArmorEntity extends Monster { - public static final String GROUP_ID = "CursedArmor"; + public static final String GROUP_ID = Registries.getLocationString( "cursed_armor" ); public static final int ASSEMBLE_DURATION = Utility.secondsToTicks( 2.5 ); boolean areGoalsRegistered = false; SoundHandler assembleSound = null; @@ -124,12 +126,12 @@ public void startAssembling( float yRot ) { this.setYHeadRot( yRot ); this.setYBodyRot( yRot ); if( this.level instanceof ServerLevel ) { - Time.nextTick( ()->PacketHandler.CHANNEL.send( PacketDistributor.DIMENSION.with( ()->this.level.dimension() ), new AssembleMessage( this, yRot ) ) ); + Time.nextTick( ()->Registries.HELPER.sendMessage( PacketDistributor.DIMENSION.with( ()->this.level.dimension() ), new AssembleMessage( this, yRot ) ) ); } } public void setAssembleSound( SoundEvent soundEvent ) { - this.assembleSound = new SoundHandler( soundEvent, SoundSource.HOSTILE, SoundHandler.randomized( 1.2f ) ); + this.assembleSound = new SoundHandler( soundEvent, SoundSource.HOSTILE, SoundHandler.randomized( 2.0f ) ); } public boolean isAssembling() { @@ -160,36 +162,31 @@ private void tryToPlaySfx() { if( this.assembleTicksLeft == ASSEMBLE_DURATION ) { SoundHandler.ENCHANT.play( level, this.position() ); - } else if( this.assembleTicksLeft == ASSEMBLE_DURATION - 75 ) { + } else if( this.assembleTicksLeft == ASSEMBLE_DURATION - 35 ) { this.assembleSound.play( level, this.position() ); } } @AutoInstance public static class Spawn { - static final String MAIN_TAG = "cursed_armor"; - static final String LOOT_TABLE_TAG = "loot"; - static final String SOUND_TAG = "sound"; - static final String CHANCE_TAG = "chance"; - static final Map< ResourceLocation, Data > DATA_MAP = new HashMap<>(); - final DoubleConfig dropChance = new DoubleConfig( 0.1, Range.CHANCE ); + final DoubleConfig dropChance = new DoubleConfig( 0.2, Range.CHANCE ); final StringConfig name = new StringConfig( "Freshah" ); + final JsonListener.Holder< LocationsDef > locationsDef; public Spawn() { + this.locationsDef = JsonListener.add( "custom", Registries.getLocation( "cursed_armor_locations" ), LocationsDef.class, LocationsDef::new ) + .syncWithClients( Registries.HELPER ); + ConfigGroup group = ModConfigs.registerSubgroup( GROUP_ID ); OnLoot.listen( this::spawnCursedArmor ) .addCondition( Condition.isServer() ) .addCondition( OnLoot.hasOrigin() ) .addCondition( Condition.predicate( data->BlockHelper.getBlockEntity( data.getLevel(), data.origin ) instanceof ChestBlockEntity ) ) - .addCondition( Condition.predicate( this::hasLootDefined ) ) + .addCondition( this.isLootDefined() ) .addConfig( this.dropChance.name( "drop_chance" ).comment( "Chance for each equipped item to drop when killed." ) ) .insertTo( group ); - OnLootTableCustomLoad.listen( this::loadCursedArmorLoot ) - .addCondition( Condition.predicate( data->data.jsonObject.has( MAIN_TAG ) ) ) - .insertTo( group ); - OnSpawned.listen( this::setCustomName ) .name( "CustomName" ) .comment( "Makes some Cursed Armors have a custom name." ) @@ -214,17 +211,22 @@ public Spawn() { OnPreDamaged.listen( OnPreDamaged.CANCEL ) .addCondition( Condition.predicate( data->data.target instanceof CursedArmorEntity cursedArmor && cursedArmor.isAssembling() ) ) .insertTo( group ); + + OnItemTooltip.listen( this::addSpawnInfo ) + .addCondition( Condition.predicate( data->data.itemStack.getItem().equals( Registries.CURSED_ARMOR_SPAWN_EGG.get() ) ) ); } private void spawnCursedArmor( OnLoot.Data data ) { - CursedArmorEntity cursedArmor = EntityHelper.spawn( Registries.CURSED_ARMOR, data.getLevel(), this.getSpawnPosition( data ) ); + CursedArmorEntity cursedArmor = EntityHelper.createSpawner( Registries.CURSED_ARMOR, data.getLevel() ) + .position( this.getSpawnPosition( data ) ) + .spawn(); if( cursedArmor != null ) { float yRot = BlockHelper.getBlockState( data.getLevel(), data.origin ) .getValue( ChestBlock.FACING ) .toYRot(); cursedArmor.startAssembling( yRot ); - this.equipSet( DATA_MAP.get( data.context.getQueriedLootTableId() ), cursedArmor, data.origin ); + this.equipSet( this.locationsDef.get().find( data.context.getQueriedLootTableId() ).orElseThrow(), cursedArmor, data.origin ); if( data.entity instanceof ServerPlayer player ) { Time.nextTick( player::closeContainer ); } @@ -243,51 +245,41 @@ private Vec3 getSpawnPosition( OnLoot.Data data ) { } } - private void loadCursedArmorLoot( OnLootTableCustomLoad.Data data ) { - JsonObject object = data.jsonObject.get( MAIN_TAG ).getAsJsonObject(); - ResourceLocation sound = new ResourceLocation( object.has( SOUND_TAG ) ? object.get( SOUND_TAG ) - .getAsString() : "item.armor.equip_generic" ); - double chance = object.has( CHANCE_TAG ) ? object.get( CHANCE_TAG ).getAsDouble() : 1.0; - JsonElement ids = object.get( LOOT_TABLE_TAG ); - if( ids.isJsonArray() ) { - JsonArray array = ids.getAsJsonArray(); - array.forEach( id->DATA_MAP.put( new ResourceLocation( id.getAsString() ), new Data( data.table, sound, chance ) ) ); - } else { - DATA_MAP.put( new ResourceLocation( ids.getAsString() ), new Data( data.table, sound, chance ) ); - } - } - - private boolean hasLootDefined( OnLoot.Data data ) { - ResourceLocation lootTableId = data.context.getQueriedLootTableId(); + private Condition< OnLoot.Data > isLootDefined() { + return Condition.predicate( data->{ + Optional< LocationDef > locationDef = this.locationsDef.get().find( data.context.getQueriedLootTableId() ); - return DATA_MAP.containsKey( lootTableId ) && Random.tryChance( DATA_MAP.get( lootTableId ).chance ); + return locationDef.isPresent() && Random.tryChance( locationDef.get().chance ); + } ); } private void setCustomName( OnSpawned.Data data ) { - data.target.setCustomName( this.name.asLiteral() ); + data.target.setCustomName( new TextComponent( this.name.get() ) ); } private void giveRandomArmor( OnSpawned.Data data ) { CursedArmorEntity cursedArmor = ( CursedArmorEntity )data.target; - if( cursedArmor.getArmorCoverPercentage() > 0.0f ) + if( cursedArmor.getArmorCoverPercentage() > 0.0f ) { return; + } - this.equipSet( Random.nextRandom( DATA_MAP ).getValue(), cursedArmor, cursedArmor.position() ); + this.equipSet( this.locationsDef.get().getRandom(), cursedArmor, cursedArmor.position() ); } - private void equipSet( Data data, CursedArmorEntity cursedArmor, Vec3 position ) { + private void equipSet( LocationDef locationDef, CursedArmorEntity cursedArmor, Vec3 position ) { LootContext lootContext = new LootContext.Builder( ( ServerLevel )cursedArmor.level ) .withParameter( LootContextParams.ORIGIN, position ) .withParameter( LootContextParams.THIS_ENTITY, cursedArmor ) .create( LootContextParamSets.GIFT ); - data.lootTable.getRandomItems( lootContext ) + LootHelper.getLootTable( locationDef.loot ) + .getRandomItems( lootContext ) .forEach( cursedArmor::equipItemIfPossible ); Arrays.stream( EquipmentSlot.values() ) .forEach( slot->cursedArmor.setDropChance( slot, this.dropChance.asFloat() ) ); - cursedArmor.setAssembleSound( ForgeRegistries.SOUND_EVENTS.getValue( data.sound ) ); + cursedArmor.setAssembleSound( ForgeRegistries.SOUND_EVENTS.getValue( locationDef.sound ) ); } private void startAssembling( OnSpawned.Data data ) { @@ -295,7 +287,23 @@ private void startAssembling( OnSpawned.Data data ) { cursedArmor.startAssembling( 0.0f ); } - private record Data( LootTable lootTable, ResourceLocation sound, double chance ) {} + private void addSpawnInfo( OnItemTooltip.Data data ) { + List< Component > components = data.tooltip; + components.add( new TranslatableComponent( "item.majruszsdifficulty.cursed_armor_spawn_egg.locations" ) + .withStyle( ChatFormatting.GRAY ) ); + + this.locationsDef.get().locationDefs.forEach( locationDef->{ + String chance = TextHelper.percent( locationDef.chance ); + locationDef.chests.forEach( chestId->{ + components.add( new TextComponent( " - " ) + .append( new TextComponent( chestId.toString() ) ) + .append( new TextComponent( " " ) ) + .append( new TextComponent( chance ).withStyle( ChatFormatting.DARK_GRAY ) ) + .withStyle( ChatFormatting.GRAY ) + ); + } ); + } ); + } } @AutoInstance @@ -332,37 +340,13 @@ private void spawnParticles( OnEntityTick.Data data, Vec3 emitterOffset, double } } - @AutoInstance - public static class TooltipUpdater { - public TooltipUpdater() { - OnItemTooltip.listen( this::addSpawnInfo ) - .addCondition( Condition.predicate( data->data.itemStack.getItem().equals( Registries.CURSED_ARMOR_SPAWN_EGG.get() ) ) ); - } - - private void addSpawnInfo( OnItemTooltip.Data data ) { - List< Component > components = data.tooltip; - components.add( new TranslatableComponent( "item.majruszsdifficulty.cursed_armor_spawn_egg.locations" ) - .withStyle( ChatFormatting.GRAY ) ); - - Spawn.DATA_MAP.forEach( ( location, spawnData )->{ - String chance = TextHelper.percent( ( float )spawnData.chance ); - components.add( new TextComponent( " - " ) - .append( new TextComponent( location.toString() ) ) - .append( new TextComponent( " " ) ) - .append( new TextComponent( chance ).withStyle( ChatFormatting.DARK_GRAY ) ) - .withStyle( ChatFormatting.GRAY ) - ); - } ); - } - } - public static class AssembleMessage extends SerializableStructure { int entityId; float yRot; public AssembleMessage() { - this.define( null, ()->this.entityId, x->this.entityId = x ); - this.define( null, ()->this.yRot, x->this.yRot = x ); + this.defineInteger( "id", ()->this.entityId, x->this.entityId = x ); + this.defineFloat( "rot", ()->this.yRot, x->this.yRot = x ); } public AssembleMessage( Entity entity, float yRot ) { @@ -381,4 +365,42 @@ public void onClient( NetworkEvent.Context context ) { } } } + + public static class LocationsDef extends SerializableList { + List< LocationDef > locationDefs = new ArrayList<>(); + + public LocationsDef() { + this.defineCustom( ()->this.locationDefs, x->this.locationDefs = x, LocationDef::new ); + } + + public Optional< LocationDef > find( ResourceLocation chestId ) { + return this.locationDefs.stream() + .filter( locationDef -> locationDef.chests.stream().anyMatch( chestId::equals ) ) + .findFirst(); + } + + public LocationDef getRandom() { + return Random.next( this.locationDefs ); + } + + @Override + @OnlyIn( Dist.CLIENT ) + public void onClient( NetworkEvent.Context context ) { + Registries.HELPER.findInstance( Spawn.class ).ifPresent( instance->instance.locationsDef.onSync( this ) ); + } + } + + public static class LocationDef extends SerializableStructure { + ResourceLocation loot; + List< ResourceLocation > chests; + ResourceLocation sound = new ResourceLocation( "item.armor.equip_generic" ); + float chance = 0.0f; + + public LocationDef() { + this.defineLocation( "loot", ()->this.loot, x->this.loot = x ); + this.defineLocation( "chests", ()->this.chests, x->this.chests = x ); + this.defineLocation( "sound", ()->this.sound, x->this.sound = x ); + this.defineFloat( "chance", ()->this.chance, x->this.chance = x ); + } + } } diff --git a/src/main/java/com/majruszsdifficulty/entities/GiantEntity.java b/src/main/java/com/majruszsdifficulty/entities/GiantEntity.java new file mode 100644 index 000000000..fd8fa47e0 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/entities/GiantEntity.java @@ -0,0 +1,177 @@ +package com.majruszsdifficulty.entities; + +import com.mlib.Random; +import com.mlib.effects.SoundHandler; +import com.mlib.entities.EntityHelper; +import com.mlib.time.TimeHelper; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.ForgeMod; + +import java.util.function.Supplier; + +public class GiantEntity extends Monster { + public static Supplier< EntityType< GiantEntity > > createSupplier() { + return ()->EntityType.Builder.of( GiantEntity::new, MobCategory.MONSTER ).sized( 3.0f, 10.0f ).build( "giant" ); + } + + public static AttributeSupplier getAttributeMap() { + return Monster.createMobAttributes() + .add( Attributes.MAX_HEALTH, 200.0 ) + .add( Attributes.MOVEMENT_SPEED, 0.3 ) + .add( Attributes.ATTACK_DAMAGE, 10.0 ) + .add( Attributes.FOLLOW_RANGE, 30.0 ) + .add( Attributes.KNOCKBACK_RESISTANCE, 1.0 ) + .add( ForgeMod.STEP_HEIGHT_ADDITION.get(), 2.0 ) + .build(); + } + + public GiantEntity( EntityType< ? extends GiantEntity > type, Level world ) { + super( type, world ); + + this.maxUpStep = 3.0f; + this.setPathfindingMalus( BlockPathTypes.LEAVES, 0.0f ); + } + + @Override + public void tick() { + super.tick(); + + if( this.isSunBurnTick() ) { + this.setSecondsOnFire( 8 ); + } + if( TimeHelper.hasServerSecondsPassed( 0.5 ) ) { + EntityHelper.destroyBlocks( this, this.getBoundingBox().inflate( 0.6 ), ( blockPos, blockState )->{ + return blockState.getBlock() instanceof LeavesBlock; + } ); + EntityHelper.destroyBlocks( this, this.getBoundingBox(), ( blockPos, blockState )->{ + return blockState.getCollisionShape( this.level, blockPos ).isEmpty(); + } ); + } + } + + @Override + public int getExperienceReward( Player p_34322_ ) { + return Random.nextInt( 40, 60 ); + } + + @Override + public MobType getMobType() { + return MobType.UNDEAD; + } + + @Override + public void playSound( SoundEvent sound, float volume, float pitch ) { + if( !this.isSilent() ) { + float randomizedVolume = SoundHandler.randomized( volume * 1.25f ).get(); + float randomizedPitch = SoundHandler.randomized( pitch, 0.7f, 0.85f ).get(); + + this.level.playSound( null, this.getX(), this.getY(), this.getZ(), sound, this.getSoundSource(), randomizedVolume, randomizedPitch ); + } + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal( 2, new GiantAttackGoal( this, 1.0, true ) ); + this.goalSelector.addGoal( 7, new WaterAvoidingRandomStrollGoal( this, 1.0 ) ); + this.goalSelector.addGoal( 8, new LookAtPlayerGoal( this, Player.class, 8.0f ) ); + this.goalSelector.addGoal( 8, new RandomLookAroundGoal( this ) ); + + this.targetSelector.addGoal( 1, new HurtByTargetGoal( this ) ); + this.targetSelector.addGoal( 2, new NearestAttackableTargetGoal<>( this, Player.class, true ) ); + this.targetSelector.addGoal( 3, new NearestAttackableTargetGoal<>( this, IronGolem.class, true ) ); + } + + @Override + protected SoundEvent getAmbientSound() { + return SoundEvents.ZOMBIE_AMBIENT; + } + + @Override + protected float getStandingEyeHeight( Pose poseIn, EntityDimensions sizeIn ) { + return 8.5f; + } + + @Override + protected SoundEvent getHurtSound( DamageSource damageSource ) { + return SoundEvents.ZOMBIE_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return SoundEvents.ZOMBIE_DEATH; + } + + @Override + protected void playStepSound( BlockPos blockPos, BlockState blockState ) { + this.playSound( SoundEvents.ZOMBIE_STEP, 0.15f, 1.0f ); + } + + public static class GiantAttackGoal extends MeleeAttackGoal { + private final GiantEntity giant; + private int raiseArmTicks; + + public GiantAttackGoal( GiantEntity giant, double speedModifier, boolean followingTargetEvenIfNotSeen ) { + super( giant, speedModifier, followingTargetEvenIfNotSeen ); + + this.giant = giant; + } + + @Override + public void start() { + super.start(); + + this.raiseArmTicks = 0; + } + + @Override + public void stop() { + super.stop(); + + this.giant.setAggressive( false ); + } + + @Override + public void tick() { + super.tick(); + + ++this.raiseArmTicks; + this.giant.setAggressive( this.raiseArmTicks >= 5 && this.getTicksUntilNextAttack() < this.getAttackInterval() / 2 ); + } + + @Override + protected double getAttackReachSqr( LivingEntity target ) { + return 2.0 * this.mob.getBbWidth() * this.mob.getBbWidth() + target.getBbWidth(); + } + + @Override + protected void checkAndPerformAttack( LivingEntity target, double distance ) { + if( distance <= this.getAttackReachSqr( target ) && this.getTicksUntilNextAttack() <= 0 ) { + this.resetAttackCooldown(); + this.mob.swing( InteractionHand.MAIN_HAND ); + this.mob.doHurtTarget( target ); + target.setDeltaMovement( target.getDeltaMovement().add( new Vec3( 0.0, 0.5, 0.0 ) ) ); + } + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/entities/TankEntity.java b/src/main/java/com/majruszsdifficulty/entities/TankEntity.java index d6a57b1cf..c916cb4c1 100644 --- a/src/main/java/com/majruszsdifficulty/entities/TankEntity.java +++ b/src/main/java/com/majruszsdifficulty/entities/TankEntity.java @@ -1,6 +1,6 @@ package com.majruszsdifficulty.entities; -import com.majruszsdifficulty.PacketHandler; +import com.majruszsdifficulty.Registries; import com.mlib.Random; import com.mlib.Utility; import com.mlib.effects.SoundHandler; @@ -33,6 +33,7 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.ForgeMod; import java.util.List; import java.util.Optional; @@ -54,11 +55,14 @@ public static AttributeSupplier getAttributeMap() { .add( Attributes.FOLLOW_RANGE, 30.0 ) .add( Attributes.ATTACK_KNOCKBACK, 3.5 ) .add( Attributes.KNOCKBACK_RESISTANCE, 0.75 ) + .add( ForgeMod.STEP_HEIGHT_ADDITION.get(), 0.5 ) .build(); } - public TankEntity( EntityType< ? extends TankEntity > type, Level world ) { - super( type, world ); + public TankEntity( EntityType< ? extends TankEntity > type, Level level ) { + super( type, level ); + + this.maxUpStep = 1.0f; } @Override @@ -136,7 +140,7 @@ public void tick() { public static class Skills extends CustomSkills< SkillType > { public Skills( PathfinderMob mob ) { - super( mob, PacketHandler.CHANNEL, SkillMessage::new ); + super( mob, Registries.HELPER.getNetworkChannel(), SkillMessage::new ); } @Override diff --git a/src/main/java/com/majruszsdifficulty/events/TreasureBagOpenedEvent.java b/src/main/java/com/majruszsdifficulty/events/TreasureBagOpenedEvent.java deleted file mode 100644 index e77923a64..000000000 --- a/src/main/java/com/majruszsdifficulty/events/TreasureBagOpenedEvent.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.majruszsdifficulty.events; - -import com.majruszsdifficulty.items.TreasureBagItem; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.fml.event.IModBusEvent; - -import java.util.List; - -/** Event called when the player opens any treasure bag. */ -@Deprecated( since = "1.7.0 use OnTreasureBagOpened instead" ) -public class TreasureBagOpenedEvent extends PlayerEvent implements IModBusEvent { - public final TreasureBagItem treasureBagItem; - public final List< ItemStack > generatedLoot; - - public TreasureBagOpenedEvent( Player player, TreasureBagItem item, List< ItemStack > generatedLoot ) { - super( player ); - this.treasureBagItem = item; - this.generatedLoot = generatedLoot; - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/BlockIllusionerFromJoiningRaids.java b/src/main/java/com/majruszsdifficulty/features/BlockIllusionerFromJoiningRaids.java similarity index 76% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/BlockIllusionerFromJoiningRaids.java rename to src/main/java/com/majruszsdifficulty/features/BlockIllusionerFromJoiningRaids.java index dbcc37538..400f40ecf 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/BlockIllusionerFromJoiningRaids.java +++ b/src/main/java/com/majruszsdifficulty/features/BlockIllusionerFromJoiningRaids.java @@ -1,11 +1,11 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.Registries; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.entity.monster.Illusioner; @AutoInstance diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperChainReaction.java b/src/main/java/com/majruszsdifficulty/features/CreeperChainReaction.java similarity index 75% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperChainReaction.java rename to src/main/java/com/majruszsdifficulty/features/CreeperChainReaction.java index 2afa880f4..efa88b908 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperChainReaction.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperChainReaction.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import net.minecraft.world.entity.monster.Creeper; @AutoInstance diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplodeBehindWall.java b/src/main/java/com/majruszsdifficulty/features/CreeperExplodeBehindWall.java similarity index 78% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplodeBehindWall.java rename to src/main/java/com/majruszsdifficulty/features/CreeperExplodeBehindWall.java index 7d92a785e..e9f9d9fff 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplodeBehindWall.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperExplodeBehindWall.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; +import com.majruszsdifficulty.contexts.base.CustomConditions; import com.majruszsdifficulty.goals.CreeperExplodeWallsGoal; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.entity.monster.Creeper; @AutoInstance diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplosionImmunity.java b/src/main/java/com/majruszsdifficulty/features/CreeperExplosionImmunity.java similarity index 80% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplosionImmunity.java rename to src/main/java/com/majruszsdifficulty/features/CreeperExplosionImmunity.java index 208b8a7b5..d11aa02ab 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperExplosionImmunity.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperExplosionImmunity.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import com.mlib.math.Range; import net.minecraft.world.entity.monster.Creeper; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnCharged.java b/src/main/java/com/majruszsdifficulty/features/CreeperSpawnCharged.java similarity index 81% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnCharged.java rename to src/main/java/com/majruszsdifficulty/features/CreeperSpawnCharged.java index 94cc56d64..fc0ca069d 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnCharged.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperSpawnCharged.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.monster.Creeper; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnDebuffed.java b/src/main/java/com/majruszsdifficulty/features/CreeperSpawnDebuffed.java similarity index 81% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnDebuffed.java rename to src/main/java/com/majruszsdifficulty/features/CreeperSpawnDebuffed.java index 825e2525d..2c2f109e8 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSpawnDebuffed.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperSpawnDebuffed.java @@ -1,15 +1,15 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; +import com.majruszsdifficulty.contexts.base.CustomConditions; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.EffectConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.monster.Creeper; @@ -42,6 +42,6 @@ public CreeperSpawnDebuffed() { } private void applyRandomEffect( OnSpawned.Data data ) { - Random.nextRandom( this.effects ).apply( data.target ); + Random.next( this.effects ).apply( data.target ); } } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSplitIntoCreeperlings.java b/src/main/java/com/majruszsdifficulty/features/CreeperSplitIntoCreeperlings.java similarity index 84% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSplitIntoCreeperlings.java rename to src/main/java/com/majruszsdifficulty/features/CreeperSplitIntoCreeperlings.java index b597acf12..0caf51b64 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CreeperSplitIntoCreeperlings.java +++ b/src/main/java/com/majruszsdifficulty/features/CreeperSplitIntoCreeperlings.java @@ -1,17 +1,17 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.config.GameStageIntegerConfig; import com.majruszsdifficulty.entities.CreeperlingEntity; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; +import com.majruszsdifficulty.contexts.base.CustomConditions; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.gamemodifiers.contexts.OnExplosionDetonate; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnExplosionDetonate; import com.mlib.math.Range; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -35,7 +35,7 @@ public CreeperSplitIntoCreeperlings() { OnExplosionDetonate.listen( this::spawnCreeperlings ) .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 0.666, false ) ) + .addCondition( Condition.chanceCRD( 0.666, true ) ) .addCondition( Condition.excludable() ) .addCondition( Condition.predicate( data->data.explosion.getExploder() instanceof Creeper && !( data.explosion.getExploder() instanceof CreeperlingEntity ) ) ) .addConfig( this.creeperlingsAmount.name( "MaxCreeperlings" ).comment( "Maximum amount of Creeperlings to spawn." ) ) @@ -59,7 +59,7 @@ private void spawnCreeperlings( OnExplosionDetonate.Data data ) { assert creeper != null && level != null; for( int i = 0; i < creeperlingsAmount; ++i ) { - BlockPos position = creeper.blockPosition().offset( Random.getRandomVector( -2, 2, -1, 1, -2, 2 ).vec3i() ); + BlockPos position = creeper.blockPosition().offset( Random.nextVector( -2, 2, -1, 1, -2, 2 ).vec3i() ); CreeperlingEntity creeperling = Registries.CREEPERLING.get() .spawn( level, ( CompoundTag )null, null, null, position, MobSpawnType.SPAWNER, true, true ); if( creeperling != null ) @@ -80,6 +80,6 @@ private void giveAdvancement( OnDeath.Data data ) { } private void giveAdvancement( ServerPlayer player ) { - Registries.BASIC_TRIGGER.trigger( player, "encountered_creeperling" ); + Registries.HELPER.triggerAchievement( player, "encountered_creeperling" ); } } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DoubleLoot.java b/src/main/java/com/majruszsdifficulty/features/DoubleLoot.java similarity index 81% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/DoubleLoot.java rename to src/main/java/com/majruszsdifficulty/features/DoubleLoot.java index 512ec278c..b1e49f77d 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DoubleLoot.java +++ b/src/main/java/com/majruszsdifficulty/features/DoubleLoot.java @@ -1,17 +1,17 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; -import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.gamestage.GameStage; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.StringListConfig; import com.mlib.effects.ParticleHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.Context; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnLoot; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.Context; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnLoot; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -20,10 +20,9 @@ import java.util.List; import java.util.function.Consumer; -@Deprecated( forRemoval = true ) @AutoInstance public class DoubleLoot { - static final ParticleHandler AWARD = new ParticleHandler( ParticleTypes.HAPPY_VILLAGER, ()->new Vec3( 0.5, 1, 0.5 ), ()->0.1f ); + static final ParticleHandler AWARD = new ParticleHandler( ParticleTypes.HAPPY_VILLAGER, ()->new Vec3( 0.25, 0.5, 0.25 ), ()->0.1f ); final StringListConfig forbiddenItems = new StringListConfig( "minecraft:nether_star", "minecraft:totem_of_undying" ); public DoubleLoot() { @@ -37,12 +36,12 @@ public DoubleLoot() { .comment( "Determines the chance on Normal Mode." ) .insertTo( group ); - OnDoubleLoot.listen( this::doubleLoot, 0.2, GameStage.EXPERT ) + OnDoubleLoot.listen( this::doubleLoot, 0.1, GameStage.EXPERT ) .name( "ExpertMode" ) .comment( "Determines the chance on Expert Mode." ) .insertTo( group ); - OnDoubleLoot.listen( this::doubleLoot, 0.4, GameStage.MASTER ) + OnDoubleLoot.listen( this::doubleLoot, 0.2, GameStage.MASTER ) .name( "MasterMode" ) .comment( "Determines the chance on Master Mode." ) .insertTo( group ); @@ -51,7 +50,7 @@ public DoubleLoot() { private void doubleLoot( OnLoot.Data data ) { assert data.entity != null && data.lastDamagePlayer != null; - boolean doubledAtLeastOneItem = replaceLoot( data.generatedLoot ); + boolean doubledAtLeastOneItem = this.replaceLoot( data.generatedLoot ); if( doubledAtLeastOneItem && data.getServerLevel() != null ) { AWARD.spawn( data.getServerLevel(), data.entity.position().add( 0.0, 0.5, 0.0 ), 12 ); } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownedLightningAttack.java b/src/main/java/com/majruszsdifficulty/features/DrownedLightningAttack.java similarity index 84% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownedLightningAttack.java rename to src/main/java/com/majruszsdifficulty/features/DrownedLightningAttack.java index ca453ffe8..099acd028 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownedLightningAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/DrownedLightningAttack.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import com.mlib.levels.LevelHelper; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LightningBolt; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/EndermanTeleportAttack.java b/src/main/java/com/majruszsdifficulty/features/EndermanTeleportAttack.java similarity index 74% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/EndermanTeleportAttack.java rename to src/main/java/com/majruszsdifficulty/features/EndermanTeleportAttack.java index 7a813f12a..a1bcb318e 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/EndermanTeleportAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/EndermanTeleportAttack.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import com.mlib.levels.LevelHelper; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; @@ -32,8 +32,8 @@ public EndermanTeleportAttack() { private void teleportPlayerRandomly( OnDamaged.Data data ) { LivingEntity target = data.target; - if( LevelHelper.teleportNearby( target, data.getServerLevel(), 10.0 ) && target instanceof ServerPlayer player ) { - Registries.BASIC_TRIGGER.trigger( player, "enderman_teleport_attack" ); + if( LevelHelper.teleportNearby( target, data.getServerLevel(), 6.0 ) && target instanceof ServerPlayer player ) { + Registries.HELPER.triggerAchievement( player, "enderman_teleport_attack" ); } } } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/EvokerWithTotem.java b/src/main/java/com/majruszsdifficulty/features/EvokerWithTotem.java similarity index 80% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/EvokerWithTotem.java rename to src/main/java/com/majruszsdifficulty/features/EvokerWithTotem.java index 8b6738579..f9eeb7d9a 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/EvokerWithTotem.java +++ b/src/main/java/com/majruszsdifficulty/features/EvokerWithTotem.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.monster.Evoker; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ExperienceBonus.java b/src/main/java/com/majruszsdifficulty/features/ExperienceBonus.java similarity index 72% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/ExperienceBonus.java rename to src/main/java/com/majruszsdifficulty/features/ExperienceBonus.java index cfa9b2cee..5359b77de 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ExperienceBonus.java +++ b/src/main/java/com/majruszsdifficulty/features/ExperienceBonus.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.config.GameStageDoubleConfig; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnPickupXp; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnPickupXp; import com.mlib.math.Range; @AutoInstance @@ -27,6 +27,6 @@ public ExperienceBonus() { private void giveExtraExperience( OnPickupXp.Data data ) { double experience = data.event.getOrb().getValue(); - data.player.giveExperiencePoints( Random.roundRandomly( this.bonusMultiplier.getCurrentGameStageValue() * experience ) ); + data.player.giveExperiencePoints( Random.round( this.bonusMultiplier.getCurrentGameStageValue() * experience ) ); } } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/JockeySpawn.java b/src/main/java/com/majruszsdifficulty/features/JockeySpawn.java similarity index 72% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/JockeySpawn.java rename to src/main/java/com/majruszsdifficulty/features/JockeySpawn.java index 5b61ecb9b..bf49c4abb 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/JockeySpawn.java +++ b/src/main/java/com/majruszsdifficulty/features/JockeySpawn.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.entities.EntityHelper; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.monster.Skeleton; import net.minecraft.world.entity.monster.Spider; @@ -31,7 +31,7 @@ public JockeySpawn() { } private void spawnSkeletonOnSpider( OnSpawned.Data data ) { - Skeleton skeleton = EntityHelper.spawn( EntityType.SKELETON, data.getServerLevel(), data.target.position() ); + Skeleton skeleton = EntityHelper.createSpawner( EntityType.SKELETON, data.getServerLevel() ).position( data.target.position() ).spawn(); if( skeleton != null ) { skeleton.startRiding( data.target ); } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/MobsSpawnStronger.java b/src/main/java/com/majruszsdifficulty/features/MobsSpawnStronger.java similarity index 90% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/MobsSpawnStronger.java rename to src/main/java/com/majruszsdifficulty/features/MobsSpawnStronger.java index 13ee4f667..da5ca0fc4 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/MobsSpawnStronger.java +++ b/src/main/java/com/majruszsdifficulty/features/MobsSpawnStronger.java @@ -1,15 +1,15 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.config.GameStageDoubleConfig; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.attributes.AttributeHandler; import com.mlib.config.ConfigGroup; import com.mlib.config.StringListConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import com.mlib.math.Range; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.LivingEntity; @@ -21,9 +21,9 @@ public class MobsSpawnStronger { static final AttributeHandler MAX_HEALTH_ATTRIBUTE = new AttributeHandler( "ba9de909-4a9e-43da-9d14-fbcbc2403316", "ProgressiveDifficultyHealthBonus", Attributes.MAX_HEALTH, AttributeModifier.Operation.MULTIPLY_BASE ); static final AttributeHandler DAMAGE_ATTRIBUTE = new AttributeHandler( "053d92c8-ccb5-4b95-9add-c31aca144177", "ProgressiveDifficultyDamageBonus", Attributes.ATTACK_DAMAGE, AttributeModifier.Operation.MULTIPLY_BASE ); - final GameStageDoubleConfig healthBonus = new GameStageDoubleConfig( 0.0, 0.15, 0.3, new Range<>( 0.0, 10.0 ) ); - final GameStageDoubleConfig damageBonus = new GameStageDoubleConfig( 0.0, 0.15, 0.3, new Range<>( 0.0, 10.0 ) ); - final GameStageDoubleConfig nightMultiplier = new GameStageDoubleConfig( 2.0, 2.0, 2.0, new Range<>( 1.0, 10.0 ) ); + final GameStageDoubleConfig healthBonus = new GameStageDoubleConfig( 0.0, 0.1, 0.2, new Range<>( 0.0, 10.0 ) ); + final GameStageDoubleConfig damageBonus = new GameStageDoubleConfig( 0.0, 0.1, 0.2, new Range<>( 0.0, 10.0 ) ); + final GameStageDoubleConfig nightMultiplier = new GameStageDoubleConfig( 1.5, 1.5, 1.5, new Range<>( 1.0, 10.0 ) ); final StringListConfig excludedMobs = new StringListConfig(); final StringListConfig excludedDimensions = new StringListConfig(); diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/PhantomLevitationAttack.java b/src/main/java/com/majruszsdifficulty/features/PhantomLevitationAttack.java similarity index 76% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/PhantomLevitationAttack.java rename to src/main/java/com/majruszsdifficulty/features/PhantomLevitationAttack.java index 9eb95a6f7..e9ac8f726 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/PhantomLevitationAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/PhantomLevitationAttack.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.ProgressiveEffectConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.monster.Phantom; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/PowerfulExplosions.java b/src/main/java/com/majruszsdifficulty/features/PowerfulExplosions.java similarity index 88% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/PowerfulExplosions.java rename to src/main/java/com/majruszsdifficulty/features/PowerfulExplosions.java index ee501fd23..25112526c 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/PowerfulExplosions.java +++ b/src/main/java/com/majruszsdifficulty/features/PowerfulExplosions.java @@ -1,13 +1,13 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.Registries; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnExplosionStart; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnExplosionStart; import com.mlib.levels.LevelHelper; import com.mlib.math.AnyPos; import com.mlib.math.Range; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ShulkerBlindnessAttack.java b/src/main/java/com/majruszsdifficulty/features/ShulkerBlindnessAttack.java similarity index 74% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/ShulkerBlindnessAttack.java rename to src/main/java/com/majruszsdifficulty/features/ShulkerBlindnessAttack.java index 9a79f1a0e..a5e52a832 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ShulkerBlindnessAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/ShulkerBlindnessAttack.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.ProgressiveEffectConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.monster.Shulker; diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SlimeSlownessAttack.java b/src/main/java/com/majruszsdifficulty/features/SlimeSlownessAttack.java similarity index 75% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/SlimeSlownessAttack.java rename to src/main/java/com/majruszsdifficulty/features/SlimeSlownessAttack.java index 575be0951..2a700d69d 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SlimeSlownessAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/SlimeSlownessAttack.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.ProgressiveEffectConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.monster.Slime; diff --git a/src/main/java/com/majruszsdifficulty/features/SpawnBlocker.java b/src/main/java/com/majruszsdifficulty/features/SpawnBlocker.java new file mode 100644 index 000000000..c942538a7 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/SpawnBlocker.java @@ -0,0 +1,44 @@ +package com.majruszsdifficulty.features; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.config.GameStageStringListConfig; +import com.mlib.Utility; +import com.mlib.config.ConfigGroup; +import com.mlib.contexts.OnCheckSpawn; +import com.mlib.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.modhelper.AutoInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.MobSpawnType; + +@AutoInstance +public class SpawnBlocker { + final GameStageStringListConfig forbiddenEntities = new GameStageStringListConfig( new String[]{ + "minecraft:illusioner", + "majruszsdifficulty:tank", + "majruszsdifficulty:cerberus" + }, new String[]{ "majruszsdifficulty:cerberus" }, new String[]{} ); + + public SpawnBlocker() { + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) + .name( "SpawnBlocker" ) + .comment( "Makes mobs unable to spawn when given game stage is active (it only affects natural spawns)." ) + .addConfig( this.forbiddenEntities ); + + OnCheckSpawn.listen( OnCheckSpawn.CANCEL ) + .addCondition( Condition.predicate( data->data.getSpawnType() == MobSpawnType.NATURAL ) ) + .addCondition( Condition.predicate( data->this.isBlocked( data.mob ) ) ) + .insertTo( group ); + + OnSpawned.listen( OnSpawned.CANCEL ) + .addCondition( OnSpawned.isNotLoadedFromDisk() ) + .addCondition( Condition.predicate( data->data.getSpawnType() == MobSpawnType.NATURAL ) ) + .addCondition( Condition.predicate( data->this.isBlocked( data.target ) ) ) + .insertTo( group ); + } + + private boolean isBlocked( Entity entity ) { + return this.forbiddenEntities.getCurrentGameStageValue().contains( Utility.getRegistryString( entity.getType() ) ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/features/SpawnKillerBunny.java b/src/main/java/com/majruszsdifficulty/features/SpawnKillerBunny.java new file mode 100644 index 000000000..9770580ab --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/SpawnKillerBunny.java @@ -0,0 +1,33 @@ +package com.majruszsdifficulty.features; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.gamestage.GameStage; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.ConfigGroup; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; +import net.minecraft.world.entity.animal.Rabbit; + +@AutoInstance +public class SpawnKillerBunny { + public SpawnKillerBunny() { + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) + .name( "SpawnKillerBunny" ) + .comment( "Replaces rabbits with the Killer Bunny variant." ); + + OnSpawned.listenSafe( this::transformToKillerBunny ) + .addCondition( CustomConditions.gameStageAtLeast( GameStage.EXPERT ) ) + .addCondition( Condition.chanceCRD( 0.1, true ) ) + .addCondition( Condition.isServer() ) + .addCondition( Condition.excludable() ) + .addCondition( Condition.predicate( data->data.target instanceof Rabbit rabbit && !rabbit.isBaby() ) ) + .insertTo( group ); + } + + private void transformToKillerBunny( OnSpawned.Data data ) { + Rabbit rabbit = ( Rabbit )data.target; + rabbit.setRabbitType( Rabbit.TYPE_EVIL ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnPlayerZombie.java b/src/main/java/com/majruszsdifficulty/features/SpawnPlayerZombie.java similarity index 90% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnPlayerZombie.java rename to src/main/java/com/majruszsdifficulty/features/SpawnPlayerZombie.java index 2355dcea3..2fc1ccbe4 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnPlayerZombie.java +++ b/src/main/java/com/majruszsdifficulty/features/SpawnPlayerZombie.java @@ -1,15 +1,15 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; +import com.majruszsdifficulty.contexts.base.CustomConditions; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDeath; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDeath; import com.mlib.math.Range; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; @@ -73,7 +73,7 @@ private void spawnZombie( OnDeath.Data data ) { } private void giveAdvancement( OnDeath.Data data ) { - Registries.BASIC_TRIGGER.trigger( ( ServerPlayer )data.attacker, "kill_yourself" ); + Registries.HELPER.triggerAchievement( ( ServerPlayer )data.attacker, "kill_yourself" ); } private static ItemStack getHead( Player player ) { diff --git a/src/main/java/com/majruszsdifficulty/features/SpawnRateIncreaser.java b/src/main/java/com/majruszsdifficulty/features/SpawnRateIncreaser.java new file mode 100644 index 000000000..d6ec57fa9 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/SpawnRateIncreaser.java @@ -0,0 +1,36 @@ +package com.majruszsdifficulty.features; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.config.GameStageDoubleConfig; +import com.mlib.modhelper.AutoInstance; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnMobSpawnLimit; +import com.mlib.contexts.OnMobSpawnRate; +import com.mlib.math.Range; +import net.minecraft.world.entity.MobCategory; + +@AutoInstance +public class SpawnRateIncreaser { + final GameStageDoubleConfig spawnRateMultiplier = new GameStageDoubleConfig( 1.0, 1.1, 1.2, new Range<>( 0.0, 10.0 ) ); + + public SpawnRateIncreaser() { + ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) + .name( "SpawnRate" ) + .comment( "Increases spawn rate depending on current game stage." ) + .addConfig( this.spawnRateMultiplier ); + + OnMobSpawnRate.listen( this::increaseSpawnRate ) + .addCondition( OnMobSpawnRate.is( MobCategory.MONSTER ) ); + + OnMobSpawnLimit.listen( this::increaseSpawnLimit ) + .addCondition( OnMobSpawnLimit.is( MobCategory.MONSTER ) ); + } + + private void increaseSpawnRate( OnMobSpawnRate.Data data ) { + data.value *= this.spawnRateMultiplier.getCurrentGameStageValue(); + } + + private void increaseSpawnLimit( OnMobSpawnLimit.Data data ) { + data.value *= this.spawnRateMultiplier.getCurrentGameStageValue(); + } +} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpiderPoisonAttack.java b/src/main/java/com/majruszsdifficulty/features/SpiderPoisonAttack.java similarity index 76% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpiderPoisonAttack.java rename to src/main/java/com/majruszsdifficulty/features/SpiderPoisonAttack.java index cf30dcb43..b6590486f 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpiderPoisonAttack.java +++ b/src/main/java/com/majruszsdifficulty/features/SpiderPoisonAttack.java @@ -1,14 +1,14 @@ -package com.majruszsdifficulty.gamemodifiers.list; +package com.majruszsdifficulty.features; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.ProgressiveEffectConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.monster.Spider; diff --git a/src/main/java/com/majruszsdifficulty/features/bleeding/ArmorBleeding.java b/src/main/java/com/majruszsdifficulty/features/bleeding/ArmorBleeding.java new file mode 100644 index 000000000..65e492e44 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/bleeding/ArmorBleeding.java @@ -0,0 +1,109 @@ +package com.majruszsdifficulty.features.bleeding; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.majruszsdifficulty.contexts.OnBleedingTooltip; +import com.mlib.EquipmentSlots; +import com.mlib.Random; +import com.mlib.Utility; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.BooleanConfig; +import com.mlib.config.ConfigGroup; +import com.mlib.data.JsonListener; +import com.mlib.data.SerializableList; +import com.mlib.data.SerializableStructure; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.base.Priority; +import com.mlib.text.RegexString; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.network.NetworkEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; + +@AutoInstance +public class ArmorBleeding { + final BooleanConfig availability; + final JsonListener.Holder< ArmorsDef > armorsDef; + + public ArmorBleeding() { + this.availability = Condition.DefaultConfigs.excludable( true ); + this.armorsDef = JsonListener.add( "custom", Registries.getLocation( "bleeding_armor" ), ArmorsDef.class, ArmorsDef::new ) + .syncWithClients( Registries.HELPER ); + + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.BLEEDING ) + .name( "Armor" ) + .comment( "Reduces Bleeding chance for each armor piece equipped (configurable via data pack)." ); + + OnBleedingCheck.listen( OnBleedingCheck.Data::cancel ) + .priority( Priority.LOWEST ) + .addCondition( Condition.excludable( this.availability ) ) + .addCondition( Condition.predicate( OnBleedingCheck.Data::isEffectTriggered ) ) + .addCondition( ArmorBleeding.tryItemChance( this.armorsDef ) ) + .insertTo( group ); + + OnBleedingTooltip.listen( this::addTooltip ) + .addCondition( Condition.predicate( data->this.availability.isEnabled() ) ) + .addCondition( Condition.predicate( data->this.armorsDef.get().find( data.itemStack ).isPresent() ) ) + .insertTo( group ); + } + + private void addTooltip( OnBleedingTooltip.Data data ) { + data.addArmor( LivingEntity.getEquipmentSlotForItem( data.itemStack ), this.armorsDef.get().find( data.itemStack ).orElseThrow().chanceMultiplier ); + } + + public static class ArmorsDef extends SerializableList { + public List< ArmorDef > armorDefs = new ArrayList<>(); + + public ArmorsDef() { + this.defineCustom( ()->this.armorDefs, x->this.armorDefs = x, ArmorDef::new ); + } + + public Optional< ArmorDef > find( ItemStack itemStack ) { + return this.armorDefs.stream() + .filter( armorDef->armorDef.matches( itemStack ) ) + .findFirst(); + } + + @Override + @OnlyIn( Dist.CLIENT ) + public void onClient( NetworkEvent.Context context ) { + Registries.HELPER.findInstance( ArmorBleeding.class ).ifPresent( instance->instance.armorsDef.onSync( this ) ); + } + } + + public static class ArmorDef extends SerializableStructure { + public RegexString id = new RegexString(); + public float chanceMultiplier; + + public ArmorDef() { + this.defineString( "id", this.id::get, this.id::set ); + this.defineFloat( "chance_multiplier", ()->this.chanceMultiplier, x->this.chanceMultiplier = x ); + } + + public boolean matches( ItemStack itemStack ) { + return this.id.matches( Utility.getRegistryString( itemStack.getItem() ) ); + } + } + + private static Condition< OnBleedingCheck.Data > tryItemChance( Supplier< ArmorsDef > toolsDef ) { + return Condition.predicate( data->{ + double chanceMultiplier = 1.0; + for( EquipmentSlot slot : EquipmentSlots.ARMOR ) { + Optional< ArmorDef > armorDef = toolsDef.get().find( data.target.getItemBySlot( slot ) ); + if( armorDef.isPresent() ) { + chanceMultiplier *= armorDef.get().chanceMultiplier; + } + } + + return Random.tryChance( 1.0 - chanceMultiplier ); + } ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/features/bleeding/ArrowBleeding.java b/src/main/java/com/majruszsdifficulty/features/bleeding/ArrowBleeding.java new file mode 100644 index 000000000..9044fd4a4 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/bleeding/ArrowBleeding.java @@ -0,0 +1,44 @@ +package com.majruszsdifficulty.features.bleeding; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.majruszsdifficulty.contexts.OnBleedingTooltip; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.BooleanConfig; +import com.mlib.config.ConfigGroup; +import com.mlib.config.DoubleConfig; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.world.item.ProjectileWeaponItem; + +@AutoInstance +public class ArrowBleeding { + final BooleanConfig availability; + final DoubleConfig chance; + + public ArrowBleeding() { + this.availability = Condition.DefaultConfigs.excludable( true ); + this.chance = Condition.DefaultConfigs.chance( 0.333 ); + + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.BLEEDING ) + .name( "Arrow" ) + .comment( "Arrows may inflict bleeding." ); + + OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) + .addCondition( Condition.chanceCRD( this.chance, false ) ) + .addCondition( Condition.excludable( this.availability ) ) + .addCondition( Condition.isLivingBeing( data->data.target ) ) + .addCondition( Condition.predicate( data->data.source.getDirectEntity() instanceof Arrow ) ) + .insertTo( group ); + + OnBleedingTooltip.listen( this::addTooltip ) + .addCondition( Condition.predicate( data->this.availability.isEnabled() ) ) + .addCondition( Condition.predicate( data->data.itemStack.getItem() instanceof ProjectileWeaponItem ) ) + .insertTo( group ); + } + + private void addTooltip( OnBleedingTooltip.Data data ) { + data.addItem( this.chance.getOrDefault() ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/features/bleeding/BiteBleeding.java b/src/main/java/com/majruszsdifficulty/features/bleeding/BiteBleeding.java new file mode 100644 index 000000000..238ea4dea --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/bleeding/BiteBleeding.java @@ -0,0 +1,36 @@ +package com.majruszsdifficulty.features.bleeding; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.ConfigGroup; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.entity.monster.Spider; +import net.minecraft.world.entity.monster.Zombie; + +@AutoInstance +public class BiteBleeding { + public BiteBleeding() { + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.BLEEDING ) + .name( "Bite" ) + .comment( "Wolves, zombies, spiders, and animals from other mods may inflict bleeding." ); + + OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) + .addCondition( Condition.chanceCRD( 0.5, false ) ) + .addCondition( Condition.excludable() ) + .addCondition( Condition.isLivingBeing( data->data.target ) ) + .addCondition( Condition.predicate( OnBleedingCheck.Data::isDirect ) ) + .addCondition( BiteBleeding.canBite() ) + .insertTo( group ); + } + + private static Condition< OnBleedingCheck.Data > canBite() { + return Condition.predicate( data->{ + return ( data.attacker instanceof Animal || data.attacker instanceof Zombie || data.attacker instanceof Spider ) + && !( data.attacker instanceof Llama ); + } ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/features/bleeding/CactusBleeding.java b/src/main/java/com/majruszsdifficulty/features/bleeding/CactusBleeding.java new file mode 100644 index 000000000..3a57f22a3 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/bleeding/CactusBleeding.java @@ -0,0 +1,26 @@ +package com.majruszsdifficulty.features.bleeding; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.ConfigGroup; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import net.minecraft.world.damagesource.DamageSource; + +@AutoInstance +public class CactusBleeding { + public CactusBleeding() { + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.BLEEDING ) + .name( "Cactus" ) + .comment( "Touching cactus may inflict bleeding." ); + + OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) + .addCondition( Condition.chanceCRD( 0.5, false ) ) + .addCondition( Condition.excludable() ) + .addCondition( Condition.isLivingBeing( data->data.target ) ) + .addCondition( Condition.predicate( data->data.source.equals( DamageSource.CACTUS ) ) ) + .addCondition( Condition.predicate( OnBleedingCheck.Data::isDirect ) ) + .insertTo( group ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/features/bleeding/ToolsBleeding.java b/src/main/java/com/majruszsdifficulty/features/bleeding/ToolsBleeding.java new file mode 100644 index 000000000..be3d524ad --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/features/bleeding/ToolsBleeding.java @@ -0,0 +1,130 @@ +package com.majruszsdifficulty.features.bleeding; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.contexts.OnBleedingCheck; +import com.majruszsdifficulty.contexts.OnBleedingTooltip; +import com.mlib.Random; +import com.mlib.Utility; +import com.mlib.modhelper.AutoInstance; +import com.mlib.config.BooleanConfig; +import com.mlib.config.ConfigGroup; +import com.mlib.data.JsonListener; +import com.mlib.data.SerializableList; +import com.mlib.data.SerializableStructure; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.items.ItemHelper; +import com.mlib.text.RegexString; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.network.NetworkEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; + +@AutoInstance +public class ToolsBleeding { + final BooleanConfig availability; + final JsonListener.Holder< ToolsDef > toolsDef; + + public ToolsBleeding() { + this.availability = Condition.DefaultConfigs.excludable( true ); + this.toolsDef = JsonListener.add( "custom", Registries.getLocation( "bleeding_tools" ), ToolsDef.class, ToolsDef::new ) + .syncWithClients( Registries.HELPER ); + + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.BLEEDING ) + .name( "Tools" ) + .comment( "Various items may inflict bleeding (configurable via data pack)." ); + + OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) + .addCondition( Condition.excludable( this.availability ) ) + .addCondition( Condition.isLivingBeing( data->data.target ) ) + .addCondition( Condition.predicate( OnBleedingCheck.Data::isDirect ) ) + .addCondition( ToolsBleeding.tryItemChance( this.toolsDef ) ) + .insertTo( group ); + + OnBleedingTooltip.listen( this::addTooltip ) + .addCondition( Condition.predicate( data->this.availability.isEnabled() ) ) + .addCondition( Condition.predicate( data->this.toolsDef.get().find( data.itemStack ).isPresent() ) ) + .insertTo( group ); + } + + private void addTooltip( OnBleedingTooltip.Data data ) { + data.addItem( this.toolsDef.get().find( data.itemStack ).orElseThrow().getChance( data.itemStack ) ); + } + + public static class ToolsDef extends SerializableList { + public List< ToolDef > toolDefs = new ArrayList<>(); + + public ToolsDef() { + this.defineCustom( ()->this.toolDefs, x->this.toolDefs = x, ToolDef::new ); + } + + public Optional< ToolDef > find( ItemStack itemStack ) { + return this.toolDefs.stream() + .filter( toolDef->toolDef.matches( itemStack ) ) + .findFirst(); + } + + @Override + @OnlyIn( Dist.CLIENT ) + public void onClient( NetworkEvent.Context context ) { + Registries.HELPER.findInstance( ToolsBleeding.class ).ifPresent( instance->instance.toolsDef.onSync( this ) ); + } + } + + public static class ToolDef extends SerializableStructure { + public RegexString id = new RegexString(); + public float chance; + public List< EnchantmentDef > enchantmentDefs = new ArrayList<>(); + + public ToolDef() { + this.defineString( "id", this.id::get, this.id::set ); + this.defineFloat( "chance", ()->this.chance, x->this.chance = x ); + this.defineCustom( "enchantments", ()->this.enchantmentDefs, x->this.enchantmentDefs = x, EnchantmentDef::new ); + } + + public float getChance( ItemStack itemStack ) { + return this.chance + ItemHelper.getEnchantmentsInfo( itemStack ).enchantments.stream().map( this::getExtraChance ).reduce( 0.0f, Float::sum ); + } + + public boolean matches( ItemStack itemStack ) { + return this.id.matches( Utility.getRegistryString( itemStack.getItem() ) ); + } + + private float getExtraChance( ItemHelper.EnchantmentInfo enchantmentInfo ) { + for( EnchantmentDef enchantmentDef : this.enchantmentDefs ) { + if( enchantmentDef.id.matches( enchantmentInfo.id ) ) { + return enchantmentInfo.level * enchantmentDef.chance; + } + } + + return 0.0f; + } + } + + public static class EnchantmentDef extends SerializableStructure { + public RegexString id = new RegexString(); + public float chance; + + public EnchantmentDef() { + this.defineString( "id", this.id::get, this.id::set ); + this.defineFloat( "extra_chance", ()->this.chance, x->this.chance = x ); + } + } + + private static Condition< OnBleedingCheck.Data > tryItemChance( Supplier< ToolsDef > toolsDef ) { + return Condition.predicate( data->{ + if( data.attacker == null ) { + return false; + } + + ItemStack itemStack = data.attacker.getMainHandItem(); + Optional< ToolDef > toolDef = toolsDef.get().find( itemStack ); + return toolDef.isPresent() && Random.tryChance( toolDef.get().getChance( itemStack ) ); + } ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/PiglinsInGroup.java b/src/main/java/com/majruszsdifficulty/features/groups/PiglinsInGroup.java similarity index 73% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/PiglinsInGroup.java rename to src/main/java/com/majruszsdifficulty/features/groups/PiglinsInGroup.java index e27f662c8..b532f2a13 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/PiglinsInGroup.java +++ b/src/main/java/com/majruszsdifficulty/features/groups/PiglinsInGroup.java @@ -1,21 +1,23 @@ -package com.majruszsdifficulty.gamemodifiers.list.groups; +package com.majruszsdifficulty.features.groups; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.MobGroupConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import com.mlib.math.Range; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.monster.piglin.Piglin; +import java.util.function.Supplier; + @AutoInstance -public class PiglinsInGroup { +public class PiglinsInGroup implements Supplier< MobGroupConfig > { final MobGroupConfig mobGroups = new MobGroupConfig( ()->EntityType.PIGLIN, new Range<>( 1, 3 ), @@ -40,6 +42,11 @@ public PiglinsInGroup() { .insertTo( group ); } + @Override + public MobGroupConfig get() { + return this.mobGroups; + } + private void spawnGroup( OnSpawned.Data data ) { this.mobGroups.spawn( ( PathfinderMob )data.target ); } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/SkeletonsInGroup.java b/src/main/java/com/majruszsdifficulty/features/groups/SkeletonsInGroup.java similarity index 71% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/SkeletonsInGroup.java rename to src/main/java/com/majruszsdifficulty/features/groups/SkeletonsInGroup.java index a5c1498f3..8d6f4160d 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/SkeletonsInGroup.java +++ b/src/main/java/com/majruszsdifficulty/features/groups/SkeletonsInGroup.java @@ -1,21 +1,23 @@ -package com.majruszsdifficulty.gamemodifiers.list.groups; +package com.majruszsdifficulty.features.groups; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.MobGroupConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import com.mlib.math.Range; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.monster.Skeleton; +import java.util.function.Supplier; + @AutoInstance -public class SkeletonsInGroup { +public class SkeletonsInGroup implements Supplier< MobGroupConfig > { final MobGroupConfig mobGroups = new MobGroupConfig( ()->EntityType.SKELETON, new Range<>( 1, 3 ), @@ -30,7 +32,7 @@ public SkeletonsInGroup() { OnSpawned.listenSafe( this::spawnGroup ) .addCondition( CustomConditions.gameStageAtLeast( GameStage.EXPERT ) ) - .addCondition( Condition.chanceCRD( 0.25, true ) ) + .addCondition( Condition.chanceCRD( 0.1, true ) ) .addCondition( CustomConditions.isNotPartOfGroup( data->data.target ) ) .addCondition( CustomConditions.isNotPartOfUndeadArmy( data->data.target ) ) .addCondition( Condition.excludable() ) @@ -41,6 +43,11 @@ public SkeletonsInGroup() { .insertTo( group ); } + @Override + public MobGroupConfig get() { + return this.mobGroups; + } + private void spawnGroup( OnSpawned.Data data ) { this.mobGroups.spawn( ( PathfinderMob )data.target ); } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/ZombiesInGroup.java b/src/main/java/com/majruszsdifficulty/features/groups/ZombiesInGroup.java similarity index 76% rename from src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/ZombiesInGroup.java rename to src/main/java/com/majruszsdifficulty/features/groups/ZombiesInGroup.java index 17ee5d539..69793624a 100644 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/groups/ZombiesInGroup.java +++ b/src/main/java/com/majruszsdifficulty/features/groups/ZombiesInGroup.java @@ -1,22 +1,24 @@ -package com.majruszsdifficulty.gamemodifiers.list.groups; +package com.majruszsdifficulty.features.groups; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.MobGroupConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import com.mlib.levels.LevelHelper; import com.mlib.math.Range; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.monster.Zombie; +import java.util.function.Supplier; + @AutoInstance -public class ZombiesInGroup { +public class ZombiesInGroup implements Supplier< MobGroupConfig > { final MobGroupConfig mobGroups = new MobGroupConfig( ()->EntityType.ZOMBIE, new Range<>( 1, 3 ), @@ -43,6 +45,11 @@ public ZombiesInGroup() { .insertTo( group ); } + @Override + public MobGroupConfig get() { + return this.mobGroups; + } + private void spawnGroup( OnSpawned.Data data ) { this.mobGroups.spawn( ( PathfinderMob )data.target ); } diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/BiteBleeding.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/BiteBleeding.java deleted file mode 100644 index 3f6e52512..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/BiteBleeding.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.contexts.OnBleedingCheck; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.Animal; -import net.minecraft.world.entity.animal.horse.Llama; -import net.minecraft.world.entity.monster.Spider; -import net.minecraft.world.entity.monster.Zombie; - -import javax.annotation.Nullable; - -@AutoInstance -public class BiteBleeding { - public BiteBleeding() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "BiteBleeding" ) - .comment( "Animals (wolfs and from other mods), zombies and spiders may inflict bleeding." ); - - OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 0.5, false ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.isLivingBeing( data->data.target ) ) - .addCondition( Condition.predicate( data->canBite( data.attacker ) ) ) - .addCondition( Condition.predicate( data->data.source.getDirectEntity() == data.attacker ) ) - .insertTo( group ); - } - - private static boolean canBite( @Nullable LivingEntity attacker ) { - return ( attacker instanceof Animal || attacker instanceof Zombie || attacker instanceof Spider ) && !( attacker instanceof Llama ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CactusBleeding.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CactusBleeding.java deleted file mode 100644 index 45a850a17..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/CactusBleeding.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.contexts.OnBleedingCheck; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import net.minecraft.world.damagesource.DamageSource; - -@AutoInstance -public class CactusBleeding { - public CactusBleeding() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "CactusBleeding" ) - .comment( "Cactus damage may inflict bleeding." ); - - OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 0.5, false ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.isLivingBeing( data->data.target ) ) - .addCondition( Condition.predicate( data->data.source.equals( DamageSource.CACTUS ) ) ) - .addCondition( Condition.predicate( data->data.source.getDirectEntity() == data.attacker ) ) - .insertTo( group ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownDebuffs.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownDebuffs.java deleted file mode 100644 index ddd187305..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/DrownDebuffs.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.effect.MobEffects; - -@AutoInstance -public class DrownDebuffs { - final ProgressiveEffectConfig nausea = new ProgressiveEffectConfig( MobEffects.CONFUSION, new GameStage.Integer( 0 ), new GameStage.Double( 2.0 ) ).stackable( 60.0 ); - final ProgressiveEffectConfig weakness = new ProgressiveEffectConfig( MobEffects.WEAKNESS, new GameStage.Integer( 0 ), new GameStage.Double( 10.0 ) ).stackable( 60.0 ); - - public DrownDebuffs() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "DrownDebuffs" ) - .comment( "Inflicts several debuffs when taking drown damage (these debuffs stack)." ); - - OnDamaged.listen( this::applyDebuffs ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 1.0, false ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.predicate( data->data.source.equals( DamageSource.DROWN ) ) ) - .addConfig( this.nausea.name( "Nausea" ) ) - .addConfig( this.weakness.name( "Weakness" ) ) - .insertTo( group ); - } - - private void applyDebuffs( OnDamaged.Data data ) { - this.nausea.apply( data.target ); - this.weakness.apply( data.target ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/FallDebuffs.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/FallDebuffs.java deleted file mode 100644 index 0e9911682..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/FallDebuffs.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.ProgressiveEffectConfig; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.entities.EntityHelper; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.effect.MobEffects; - -@AutoInstance -public class FallDebuffs { - final ProgressiveEffectConfig nausea = new ProgressiveEffectConfig( MobEffects.CONFUSION, new GameStage.Integer( 0 ), new GameStage.Double( 8.0 ) ); - final ProgressiveEffectConfig slowness = new ProgressiveEffectConfig( MobEffects.MOVEMENT_SLOWDOWN, new GameStage.Integer( 0 ), new GameStage.Double( 6.0 ) ); - - public FallDebuffs() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "FallDebuffs" ) - .comment( "Inflicts several debuffs when taking fall damage." ); - - OnDamaged.listen( this::applyDebuffs ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 1.0, false ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.predicate( data->data.source.equals( DamageSource.FALL ) && data.event.getAmount() > 2.0f ) ) - .addCondition( Condition.predicate( data->EntityHelper.isHuman( data.target ) ) ) - .addConfig( this.nausea.name( "Nausea" ) ) - .addConfig( this.slowness.name( "Slowness" ) ) - .insertTo( group ); - } - - private void applyDebuffs( OnDamaged.Data data ) { - this.nausea.apply( data.target ); - this.slowness.apply( data.target ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SharpToolsBleeding.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SharpToolsBleeding.java deleted file mode 100644 index 7148f589b..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SharpToolsBleeding.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.effects.BleedingEffect; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.contexts.OnBleedingCheck; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.BooleanConfig; -import com.mlib.config.ConfigGroup; -import com.mlib.config.DoubleConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnItemAttributeTooltip; -import com.mlib.items.ItemHelper; -import com.mlib.text.TextHelper; -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.*; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.ShearsItem; -import net.minecraft.world.item.TieredItem; -import net.minecraft.world.item.TridentItem; - -import java.util.function.Supplier; - -@AutoInstance -public class SharpToolsBleeding { - static final String ATTRIBUTE_ID = "effect.majruszsdifficulty.bleeding.item_tooltip"; - static Supplier< Boolean > IS_ENABLED = ()->false; - static Supplier< Float > GET_CHANCE = ()->0.0f; - - public SharpToolsBleeding() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "SharpToolsBleeding" ) - .comment( "All sharp items (tools, shears etc.) may inflict bleeding." ); - - var chance = Condition.< OnBleedingCheck.Data > chanceCRD( 0.25, false ); - GET_CHANCE = ()->( ( DoubleConfig )chance.getConfigs().get( 0 ) ).asFloat(); // TODO: refactor - var excludable = Condition.< OnBleedingCheck.Data > excludable(); - IS_ENABLED = ()->( ( BooleanConfig )excludable.getConfigs().get( 0 ) ).isEnabled() && BleedingEffect.isEnabled(); // TODO: refactor - OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( chance ) - .addCondition( excludable ) - .addCondition( Condition.isLivingBeing( data->data.target ) ) - .addCondition( Condition.predicate( data->ItemHelper.hasInMainHand( data.attacker, TieredItem.class, TridentItem.class, ShearsItem.class ) ) ) - .addCondition( Condition.predicate( data->data.source.getDirectEntity() == data.attacker ) ) - .insertTo( group ); - - OnItemAttributeTooltip.listen( this::addTooltip ) - .addCondition( Condition.predicate( data->data.item instanceof TieredItem || data.item instanceof TridentItem || data.item instanceof ShearsItem ) ) - .addCondition( Condition.predicate( IS_ENABLED ) ) - .insertTo( group ); - } - - private void addTooltip( OnItemAttributeTooltip.Data data ) { - String chance = TextHelper.percent( GET_CHANCE.get() ); - String amplifier = TextHelper.toRoman( BleedingEffect.getAmplifier() + 1 ); - data.add( EquipmentSlot.MAINHAND, new TranslatableComponent( ATTRIBUTE_ID, chance, amplifier ) - .withStyle( ChatFormatting.DARK_GREEN ) ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnBlocker.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnBlocker.java deleted file mode 100644 index 3ad64ab01..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/SpawnBlocker.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.config.GameStageStringListConfig; -import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnCheckSpawn; -import net.minecraft.world.entity.Entity; - -@AutoInstance -public class SpawnBlocker { - final GameStageStringListConfig forbiddenEntities = new GameStageStringListConfig( new String[]{ - "minecraft:illusioner", - "majruszsdifficulty:tank" - }, new String[]{}, new String[]{} ); - - public SpawnBlocker() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "SpawnBlocker" ) - .comment( "Blocks certain mobs from spawning when given game stage is active." ); - - OnCheckSpawn.listen( OnCheckSpawn.CANCEL ) - .addCondition( Condition.predicate( data->this.isForbidden( data.mob ) ) ) - .addConfig( this.forbiddenEntities ) - .insertTo( group ); - } - - private boolean isForbidden( Entity entity ) { - return this.forbiddenEntities.getCurrentGameStageValue().contains( Utility.getRegistryString( entity.getType() ) ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ThrowableWeaponsBleeding.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ThrowableWeaponsBleeding.java deleted file mode 100644 index a8bf30f54..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/ThrowableWeaponsBleeding.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.contexts.OnBleedingCheck; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import net.minecraft.world.entity.projectile.Arrow; -import net.minecraft.world.entity.projectile.ThrownTrident; - -@AutoInstance -public class ThrowableWeaponsBleeding { - public ThrowableWeaponsBleeding() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "ThrowableWeaponsBleeding" ) - .comment( "All throwable sharp items (arrows, trident etc.) may inflict bleeding." ); - - OnBleedingCheck.listen( OnBleedingCheck.Data::trigger ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 0.4, false ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.isLivingBeing( data->data.target ) ) - .addCondition( Condition.predicate( data->data.source.getDirectEntity() instanceof Arrow || data.source.getDirectEntity() instanceof ThrownTrident ) ) - .insertTo( group ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/TurnSkeletonIntoWitherSkeleton.java b/src/main/java/com/majruszsdifficulty/gamemodifiers/list/TurnSkeletonIntoWitherSkeleton.java deleted file mode 100644 index ccdd7912a..000000000 --- a/src/main/java/com/majruszsdifficulty/gamemodifiers/list/TurnSkeletonIntoWitherSkeleton.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.majruszsdifficulty.gamemodifiers.list; - -import com.majruszsdifficulty.gamestage.GameStage; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.items.WitherSwordItem; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.ConfigGroup; -import com.mlib.effects.ParticleHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.time.Time; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobSpawnType; -import net.minecraft.world.entity.monster.Skeleton; -import net.minecraft.world.phys.Vec3; - -// TODO: move to WitherSwordItem -@AutoInstance -public class TurnSkeletonIntoWitherSkeleton { - static final String WITHER_TAG = "MajruszsDifficultyWitherTag"; - - public TurnSkeletonIntoWitherSkeleton() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "TurnSkeletonIntoWitherSkeleton" ) - .comment( "If the Skeleton dies from Wither Sword it will respawn as Wither Skeleton in a few seconds." ); - - OnDamaged.listen( this::applyWitherTag ) - .addCondition( Condition.predicate( data->data.attacker != null ) ) - .addCondition( Condition.predicate( data->data.attacker.getMainHandItem().getItem() instanceof WitherSwordItem ) ) - .addCondition( Condition.predicate( data->data.target instanceof Skeleton ) ) - .insertTo( group ); - - OnDeath.listen( this::spawnWitherSkeleton ) - .addCondition( Condition.isServer() ) - .addCondition( CustomConditions.gameStageAtLeast( GameStage.MASTER ) ) - .addCondition( Condition.chanceCRD( 0.5, true ) ) - .addCondition( Condition.excludable() ) - .addCondition( Condition.predicate( this::hasWitherTag ) ) - .insertTo( group ); - } - - private void applyWitherTag( OnDamaged.Data data ) { - data.target.getPersistentData().putBoolean( WITHER_TAG, true ); - } - - private void spawnWitherSkeleton( OnDeath.Data data ) { - ServerLevel level = data.getServerLevel(); - Time.slider( 7.0, slider->{ - Vec3 position = data.target.position().add( 0.0, 1.0, 0.0 ); - if( slider.getTicksLeft() % 5 == 0 ) { - ParticleHandler.SOUL.spawn( level, position, ( int )( slider.getRatio() * 10 ), ParticleHandler.offset( slider.getRatio() ) ); - } - if( slider.getTicksLeft() == 2 ) { - ParticleHandler.SOUL.spawn( level, position, 100, ParticleHandler.offset( 0.5f ) ); - ParticleHandler.SOUL.spawn( level, position, 100, ParticleHandler.offset( 1.0f ) ); - } - if( slider.isFinished() ) { - EntityType.WITHER_SKELETON.spawn( level, ( CompoundTag )null, null, null, new BlockPos( data.target.position() ), MobSpawnType.EVENT, true, true ); - } - } ); - } - - private boolean hasWitherTag( OnDeath.Data data ) { - return data.target.getPersistentData().getBoolean( WITHER_TAG ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/gamestage/GameStage.java b/src/main/java/com/majruszsdifficulty/gamestage/GameStage.java index b7eefd3e8..f06d2dc5b 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/GameStage.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/GameStage.java @@ -1,6 +1,6 @@ package com.majruszsdifficulty.gamestage; -import com.majruszsdifficulty.gamemodifiers.contexts.OnGameStageChange; +import com.majruszsdifficulty.contexts.OnGameStageChange; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.*; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/majruszsdifficulty/gamestage/commands/ClampedRegionalDifficultyGetCommand.java b/src/main/java/com/majruszsdifficulty/gamestage/commands/ClampedRegionalDifficultyGetCommand.java index 70976acf5..13091bcee 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/commands/ClampedRegionalDifficultyGetCommand.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/commands/ClampedRegionalDifficultyGetCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.gamestage.commands; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mlib.levels.LevelHelper; diff --git a/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageChangeCommand.java b/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageChangeCommand.java index 5bd5725a5..dd19e671f 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageChangeCommand.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageChangeCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.gamestage.commands; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageGetCommand.java b/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageGetCommand.java index f0fb1943b..3747feda9 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageGetCommand.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/commands/GameStageGetCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.gamestage.commands; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/majruszsdifficulty/gamestage/handlers/AdvancementProvider.java b/src/main/java/com/majruszsdifficulty/gamestage/handlers/AdvancementProvider.java index f5677a093..ae20a79c8 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/handlers/AdvancementProvider.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/handlers/AdvancementProvider.java @@ -1,9 +1,9 @@ package com.majruszsdifficulty.gamestage.handlers; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.contexts.OnGameStageChange; -import com.mlib.annotations.AutoInstance; -import com.mlib.gamemodifiers.Condition; +import com.majruszsdifficulty.contexts.OnGameStageChange; +import com.mlib.modhelper.AutoInstance; +import com.mlib.contexts.base.Condition; @AutoInstance public class AdvancementProvider { diff --git a/src/main/java/com/majruszsdifficulty/gamestage/handlers/ChatMessageSender.java b/src/main/java/com/majruszsdifficulty/gamestage/handlers/ChatMessageSender.java index cb88f18de..bb566d18f 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/handlers/ChatMessageSender.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/handlers/ChatMessageSender.java @@ -1,12 +1,13 @@ package com.majruszsdifficulty.gamestage.handlers; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.contexts.OnGameStageChange; +import com.majruszsdifficulty.contexts.OnGameStageChange; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.data.JsonListener; +import com.mlib.data.SerializableList; import com.mlib.data.SerializableStructure; -import com.mlib.gamemodifiers.Condition; +import com.mlib.contexts.base.Condition; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TranslatableComponent; @@ -21,7 +22,7 @@ public class ChatMessageSender { final Supplier< Messages > messages; public ChatMessageSender() { - this.messages = JsonListener.add( "game_stages", Registries.getLocation( "messages" ), Messages.class, Messages::new ); + this.messages = JsonListener.add( "custom", Registries.getLocation( "game_stage_messages" ), Messages.class, Messages::new ); OnGameStageChange.listen( this::sendMessage ) .addCondition( Condition.predicate( data->!data.isLoadedFromDisk() ) ) @@ -41,11 +42,11 @@ private void sendMessage( OnGameStageChange.Data data ) { } ); } - static class Messages extends SerializableStructure { + static class Messages extends SerializableList { List< Message > messages = new ArrayList<>(); public Messages() { - this.define( null, ()->this.messages, x->this.messages = x, Message::new ); + this.defineCustom( ()->this.messages, x->this.messages = x, Message::new ); } public Stream< Message > stream() { @@ -59,9 +60,9 @@ static class Message extends SerializableStructure { ChatFormatting chatFormatting = null; public Message() { - this.define( "id", ()->this.id, x->this.id = x ); - this.define( "game_stage", ()->this.gameStage, x->this.gameStage = x, GameStage::values ); - this.define( "style", ()->this.chatFormatting, x->this.chatFormatting = x, ChatFormatting::values ); + this.defineString( "id", ()->this.id, x->this.id = x ); + this.defineEnum( "game_stage", ()->this.gameStage, x->this.gameStage = x, GameStage::values ); + this.defineEnum( "style", ()->this.chatFormatting, x->this.chatFormatting = x, ChatFormatting::values ); } } } diff --git a/src/main/java/com/majruszsdifficulty/gamestage/handlers/ClampedRegionalDifficultyIncreaser.java b/src/main/java/com/majruszsdifficulty/gamestage/handlers/ClampedRegionalDifficultyIncreaser.java index 12dfb0f6a..fffd46bc5 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/handlers/ClampedRegionalDifficultyIncreaser.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/handlers/ClampedRegionalDifficultyIncreaser.java @@ -2,10 +2,10 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.config.GameStageDoubleConfig; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnClampedRegionalDifficultyGet; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnClampedRegionalDifficultyGet; import com.mlib.math.Range; @AutoInstance diff --git a/src/main/java/com/majruszsdifficulty/gamestage/handlers/GameStageIncreaser.java b/src/main/java/com/majruszsdifficulty/gamestage/handlers/GameStageIncreaser.java index 24788095d..b4d59d426 100644 --- a/src/main/java/com/majruszsdifficulty/gamestage/handlers/GameStageIncreaser.java +++ b/src/main/java/com/majruszsdifficulty/gamestage/handlers/GameStageIncreaser.java @@ -1,24 +1,22 @@ package com.majruszsdifficulty.gamestage.handlers; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.configs.StageProgressConfig; +import com.majruszsdifficulty.config.StageProgressConfig; import com.majruszsdifficulty.gamestage.GameStage; -import com.mlib.annotations.AutoInstance; -import com.mlib.config.BooleanConfig; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.EnumConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.gamemodifiers.contexts.OnDimensionChanged; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnDimensionChanged; import net.minecraft.world.entity.EntityType; @AutoInstance public class GameStageIncreaser { static final EnumConfig< GameStage > DEFAULT_GAME_STAGE = new EnumConfig<>( GameStage.NORMAL ); - final StageProgressConfig expertMode = new StageProgressConfig( "none", "minecraft:the_nether" ); - final StageProgressConfig masterMode = new StageProgressConfig( "minecraft:ender_dragon", "none" ); - final BooleanConfig enteringAnyDimensionStartsExpertMode = new BooleanConfig( true ); + final StageProgressConfig expertMode = new StageProgressConfig( "", "{regex}.*" ); + final StageProgressConfig masterMode = new StageProgressConfig( "minecraft:ender_dragon", "" ); public static GameStage getDefaultGameStage() { return DEFAULT_GAME_STAGE.get(); @@ -27,15 +25,12 @@ public static GameStage getDefaultGameStage() { public GameStageIncreaser() { ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.GAME_STAGE ) .addConfig( DEFAULT_GAME_STAGE.name( "default_mode" ).comment( "Game stage set at the beginning of a new world." ) ) - .addConfig( this.enteringAnyDimensionStartsExpertMode - .name( "any_dimension_expert" ) - .comment( "Determines whether any dimension should start Expert Mode (useful for integration with other mods)." ) - ).addConfig( this.expertMode.name( "ExpertMode" ).comment( "Determines what starts the Expert Mode." ) ) + .addConfig( this.expertMode.name( "ExpertMode" ).comment( "Determines what starts the Expert Mode." ) ) .addConfig( this.masterMode.name( "MasterMode" ).comment( "Determines what starts the Master Mode." ) ); OnDimensionChanged.listen( this::startExpertMode ) .addCondition( Condition.predicate( data->GameStage.getCurrentStage() == GameStage.NORMAL ) ) - .addCondition( Condition.predicate( data->this.expertMode.dimensionTriggersChange( data.to.location() ) || this.enteringAnyDimensionStartsExpertMode.isEnabled() ) ) + .addCondition( Condition.predicate( data->this.expertMode.dimensionTriggersChange( data.to.location() ) ) ) .insertTo( group ); OnDimensionChanged.listen( this::startMasterMode ) diff --git a/src/main/java/com/majruszsdifficulty/goals/UndeadArmyForgiveTeammateGoal.java b/src/main/java/com/majruszsdifficulty/goals/UndeadArmyForgiveTeammateGoal.java index 1d1001c0e..97ef1f542 100644 --- a/src/main/java/com/majruszsdifficulty/goals/UndeadArmyForgiveTeammateGoal.java +++ b/src/main/java/com/majruszsdifficulty/goals/UndeadArmyForgiveTeammateGoal.java @@ -4,8 +4,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; -/** Removes mob's target when both the mob and the target are from the Undead Army. */ public class UndeadArmyForgiveTeammateGoal extends Goal { final PathfinderMob mob; @@ -21,6 +21,10 @@ public boolean requiresUpdateEveryTick() { @Override public void tick() { this.mob.setTarget( null ); + this.mob.targetSelector.getRunningGoals() + .filter( wrappedGoal->wrappedGoal.getGoal() instanceof HurtByTargetGoal ) + .map( goal->( HurtByTargetGoal )goal.getGoal() ) + .forEach( HurtByTargetGoal::stop ); } @Override diff --git a/src/main/java/com/majruszsdifficulty/gui/BleedingGui.java b/src/main/java/com/majruszsdifficulty/gui/BleedingGui.java index 079731f3d..b1ea33f30 100644 --- a/src/main/java/com/majruszsdifficulty/gui/BleedingGui.java +++ b/src/main/java/com/majruszsdifficulty/gui/BleedingGui.java @@ -3,7 +3,7 @@ import com.majruszsdifficulty.Registries; import com.mlib.Random; import com.mlib.Utility; -import com.mlib.gamemodifiers.contexts.OnClientTick; +import com.mlib.contexts.OnClientTick; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/majruszsdifficulty/items/BadOmenPotionItem.java b/src/main/java/com/majruszsdifficulty/items/BadOmenPotionItem.java deleted file mode 100644 index 334946dec..000000000 --- a/src/main/java/com/majruszsdifficulty/items/BadOmenPotionItem.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.majruszsdifficulty.items; - -import com.majruszsdifficulty.Registries; -import com.mlib.Utility; -import com.mlib.items.ItemHelper; -import com.mlib.mobeffects.MobEffectHelper; -import com.mlib.text.TextHelper; -import net.minecraft.ChatFormatting; -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.network.chat.CommonComponents; -import net.minecraft.network.chat.*; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; -import net.minecraft.world.level.Level; - -import javax.annotation.Nullable; -import java.util.List; - -public class BadOmenPotionItem extends Item { - static final String TOOLTIP_ID = "item.majruszsdifficulty.bad_omen_potion.effect"; - - public BadOmenPotionItem() { - super( new Properties().tab( Registries.ITEM_GROUP ).rarity( Rarity.UNCOMMON ).stacksTo( 16 ) ); - } - - @Override - public InteractionResultHolder< ItemStack > use( Level world, Player player, InteractionHand hand ) { - return ItemUtils.startUsingInstantly( world, player, hand ); - } - - @Override - public ItemStack finishUsingItem( ItemStack itemStack, Level level, LivingEntity entity ) { - if( entity instanceof Player player ) { - ItemHelper.consumeItemOnUse( itemStack, player ); - } - if( entity instanceof ServerPlayer serverPlayer ) { - CriteriaTriggers.CONSUME_ITEM.trigger( serverPlayer, itemStack ); - MobEffectHelper.tryToStackAmplifier( serverPlayer, MobEffects.BAD_OMEN, Utility.minutesToTicks( 90.0 ), 0, 5 ); - } - - return itemStack; - } - - @Override - public UseAnim getUseAnimation( ItemStack itemStack ) { - return UseAnim.DRINK; - } - - @Override - public int getUseDuration( ItemStack itemStack ) { - return 32; - } - - @Override - public boolean isFoil( ItemStack itemStack ) { - return true; - } - - @Override - public void appendHoverText( ItemStack itemStack, @Nullable Level level, List< Component > components, TooltipFlag flag ) { - String amplifier = TextHelper.signed( 1 ); - - components.add( new TextComponent( "" ) ); - components.add( new TranslatableComponent( "potion.whenDrank" ).withStyle( ChatFormatting.DARK_PURPLE ) ); - components.add( new TranslatableComponent( TOOLTIP_ID, amplifier ).withStyle( ChatFormatting.BLUE ) ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/items/BandageItem.java b/src/main/java/com/majruszsdifficulty/items/BandageItem.java index d53c9d135..cb4e4a2c2 100644 --- a/src/main/java/com/majruszsdifficulty/items/BandageItem.java +++ b/src/main/java/com/majruszsdifficulty/items/BandageItem.java @@ -3,13 +3,13 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.effects.BleedingEffect; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.EffectConfig; import com.mlib.effects.SoundHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnPlayerInteract; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnPlayerInteract; import com.mlib.items.ItemHelper; import com.mlib.text.TextHelper; import net.minecraft.ChatFormatting; @@ -19,7 +19,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.StringUtil; import net.minecraft.world.InteractionResult; -import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.gossip.GossipType; import net.minecraft.world.entity.npc.Villager; @@ -70,18 +69,18 @@ private MutableComponent buildComponent( EffectConfig config ) { public static class Effects { static Effects INSTANCE = null; final ConfigGroup bandageGroup = new ConfigGroup(); - final EffectConfig regeneration = new EffectConfig( MobEffects.REGENERATION, 0, 4.0 ); + final EffectConfig regeneration = new EffectConfig( Registries.GLASS_REGENERATION, 0, 20.0 ); final ConfigGroup goldenBandageGroup = new ConfigGroup(); - final EffectConfig goldenRegeneration = new EffectConfig( MobEffects.REGENERATION, 1, 4.0 ); - final EffectConfig goldenImmunity = new EffectConfig( Registries.BLEEDING_IMMUNITY, 0, 60.0 ); + final EffectConfig goldenRegeneration = new EffectConfig( Registries.GLASS_REGENERATION, 1, 20.0 ); + final EffectConfig goldenImmunity = new EffectConfig( Registries.BLEEDING_IMMUNITY, 0, 90.0 ); public Effects() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ).name( "Bandages" ); + ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ); INSTANCE = this; - this.bandageGroup.addConfig( this.regeneration.name( "Regeneration" ) ); - this.goldenBandageGroup.addConfig( this.goldenRegeneration.name( "Regeneration" ) ) + this.bandageGroup.addConfig( this.regeneration.name( "RegenerativeWrap" ) ); + this.goldenBandageGroup.addConfig( this.goldenRegeneration.name( "RegenerativeWrap" ) ) .addConfig( this.goldenImmunity.name( "Immunity" ) ); OnPlayerInteract.listen( this::useBandage ) @@ -138,7 +137,11 @@ private static void increaseReputation( Villager villager, Player player ) { private static void removeBleeding( ItemStack itemStack, Player player, LivingEntity target ) { BleedingEffect bleeding = Registries.BLEEDING.get(); if( target.hasEffect( bleeding ) && player instanceof ServerPlayer serverPlayer ) { - Registries.BANDAGE_TRIGGER.trigger( serverPlayer, ( BandageItem )itemStack.getItem(), target.equals( serverPlayer ) ); + if( target.equals( serverPlayer ) ) { + Registries.HELPER.triggerAchievement( serverPlayer, "bandage_used" ); + } else if( itemStack.getItem() instanceof GoldenBandageItem ) { + Registries.HELPER.triggerAchievement( serverPlayer, "golden_bandage_used_on_others" ); + } } target.removeEffect( bleeding ); } diff --git a/src/main/java/com/majruszsdifficulty/items/EnderPouchItem.java b/src/main/java/com/majruszsdifficulty/items/EnderPouchItem.java index 78e092c24..3f210d6e8 100644 --- a/src/main/java/com/majruszsdifficulty/items/EnderPouchItem.java +++ b/src/main/java/com/majruszsdifficulty/items/EnderPouchItem.java @@ -2,8 +2,8 @@ import com.majruszsdifficulty.Registries; import com.mlib.effects.SoundHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.OnPlayerInteract; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnPlayerInteract; import net.minecraft.server.level.ServerLevel; import net.minecraft.stats.Stats; import net.minecraft.world.InteractionResult; @@ -25,7 +25,7 @@ private void openEnderChest( OnPlayerInteract.Data data ) { data.player.awardStat( Stats.OPEN_ENDERCHEST ); data.player.swing( data.hand ); if( data.getLevel() instanceof ServerLevel level ) { - SoundHandler.ITEM_PICKUP.play( level, data.player.position(), SoundHandler.randomized( 0.5f ) ); + SoundHandler.ENDERMAN_TELEPORT.play( level, data.player.position(), SoundHandler.randomized( 0.5f ), SoundHandler.randomized( 0.7f ) ); } data.event.setCancellationResult( InteractionResult.SUCCESS ); } diff --git a/src/main/java/com/majruszsdifficulty/items/EnderiumHoeItem.java b/src/main/java/com/majruszsdifficulty/items/EnderiumHoeItem.java index 28b763297..ef471c5f6 100644 --- a/src/main/java/com/majruszsdifficulty/items/EnderiumHoeItem.java +++ b/src/main/java/com/majruszsdifficulty/items/EnderiumHoeItem.java @@ -1,10 +1,10 @@ package com.majruszsdifficulty.items; import com.majruszsdifficulty.Registries; -import com.mlib.annotations.AutoInstance; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.OnFarmlandTillCheck; -import com.mlib.gamemodifiers.contexts.OnItemAttributeTooltip; +import com.mlib.modhelper.AutoInstance; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnFarmlandTillCheck; +import com.mlib.contexts.OnItemAttributeTooltip; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.*; import net.minecraft.world.entity.EquipmentSlot; diff --git a/src/main/java/com/majruszsdifficulty/items/EvokerFangScrollItem.java b/src/main/java/com/majruszsdifficulty/items/EvokerFangScrollItem.java new file mode 100644 index 000000000..ec16dca67 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/items/EvokerFangScrollItem.java @@ -0,0 +1,115 @@ +package com.majruszsdifficulty.items; + +import com.majruszsdifficulty.Registries; +import com.mlib.modhelper.AutoInstance; +import com.mlib.data.SerializableHelper; +import com.mlib.data.SerializableStructure; +import com.mlib.entities.EntityHelper; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnItemAttributeTooltip; +import com.mlib.contexts.OnPreDamaged; +import com.mlib.levels.LevelHelper; +import com.mlib.math.AnyPos; +import com.mlib.math.AnyRot; +import com.mlib.math.Range; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.EvokerFangs; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; + +import java.util.ArrayList; +import java.util.List; + +public class EvokerFangScrollItem extends ScrollItem { + public static int ATTACK_DAMAGE = 12; + public static Range< Integer > ATTACK_RANGE = new Range<>( 8, 20 ); + + @Override + protected void useScroll( ItemStack itemStack, Level level, LivingEntity entity, float useRatio ) { + super.useScroll( itemStack, level, entity, useRatio ); + + double rotation = Math.toRadians( entity.getYRot() ) - Math.PI / 2.0; + this.getAttackPattern( entity, ( int )Mth.lerp( useRatio, ATTACK_RANGE.from, ATTACK_RANGE.to ) ) + .forEach( spawnPoint->{ + EvokerFangs evokerFangs = new EvokerFangs( level, spawnPoint.pos.x, spawnPoint.pos.y, spawnPoint.pos.z, ( float )rotation, spawnPoint.cooldown, entity ); + SerializableHelper.modify( DamageInfo::new, evokerFangs.getPersistentData(), damageInfo->damageInfo.extraDamage = ( int )( ATTACK_DAMAGE - 6.0f ) ); + + level.addFreshEntity( evokerFangs ); + } ); + } + + @Override + protected SoundEvent getPrepareSound() { + return SoundEvents.EVOKER_PREPARE_SUMMON; + } + + @Override + protected SoundEvent getCastSound() { + return SoundEvents.EVOKER_CAST_SPELL; + } + + private List< SpawnPoint > getAttackPattern( LivingEntity entity, int attackLength ) { + List< SpawnPoint > spawnPoints = new ArrayList<>(); + AnyRot lookRotation = EntityHelper.getLookRotation( entity ); + for( int x = 0; x <= attackLength; ++x ) { + for( int z = -1; z <= 1; ++z ) { + int cooldown = Math.abs( x ) + 4; + Vec3 position = AnyPos.from( entity.position() ).floor().add( AnyPos.from( x, 0, z ).rot( lookRotation ).round() ).vec3(); + LevelHelper.findBlockPosOnGround( entity.level, position.x, new Range<>( position.y - 3, position.y + 3 ), position.z ) + .ifPresent( blockPos->spawnPoints.add( new SpawnPoint( AnyPos.from( blockPos ).add( 0.5, 0.0, 0.5 ).vec3(), cooldown ) ) ); + } + } + + return spawnPoints; + } + + private record SpawnPoint( Vec3 pos, int cooldown ) {} + + @AutoInstance + public static class Spell { + public Spell() { + OnPreDamaged.listen( this::increaseDamage ) + .addCondition( Condition.isServer() ) + .addCondition( Condition.predicate( data->data.source.getDirectEntity() instanceof EvokerFangs ) ) + .addCondition( OnPreDamaged.dealtAnyDamage() ); + } + + private void increaseDamage( OnPreDamaged.Data data ) { + DamageInfo damageInfo = SerializableHelper.read( DamageInfo::new, data.source.getDirectEntity().getPersistentData() ); + + data.extraDamage += damageInfo.extraDamage; + } + } + + @AutoInstance + public static class Tooltip { + public Tooltip() { + OnItemAttributeTooltip.listen( this::addSpellInfo ) + .addCondition( Condition.predicate( data->data.itemStack.is( Registries.EVOKER_FANG_SCROLL.get() ) ) ); + } + + private void addSpellInfo( OnItemAttributeTooltip.Data data ) { + List.of( + new TranslatableComponent( "majruszsdifficulty.scrolls.attack_damage", ATTACK_DAMAGE ).withStyle( ChatFormatting.DARK_GREEN ), + new TranslatableComponent( "majruszsdifficulty.scrolls.attack_range", "%d-%d".formatted( ATTACK_RANGE.from, ATTACK_RANGE.to ) ) + .withStyle( ChatFormatting.DARK_GREEN ) + ).forEach( component->data.add( EquipmentSlot.MAINHAND, component ) ); + } + } + + private static class DamageInfo extends SerializableStructure { + int extraDamage = 0; + + public DamageInfo() { + this.defineInteger( "MajruszsProgressiveDifficultyEvokerFangDamage", ()->this.extraDamage, x->this.extraDamage = x ); + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/items/RecallPotionItem.java b/src/main/java/com/majruszsdifficulty/items/RecallPotionItem.java index 76d947f04..a2ef0a77d 100644 --- a/src/main/java/com/majruszsdifficulty/items/RecallPotionItem.java +++ b/src/main/java/com/majruszsdifficulty/items/RecallPotionItem.java @@ -58,11 +58,6 @@ public int getUseDuration( ItemStack itemStack ) { return 32; } - @Override - public boolean isFoil( ItemStack itemStack ) { - return true; - } - @Override public void appendHoverText( ItemStack itemStack, @Nullable Level level, List< Component > components, TooltipFlag flag ) { components.add( new TextComponent( "" ) ); diff --git a/src/main/java/com/majruszsdifficulty/items/ScrollItem.java b/src/main/java/com/majruszsdifficulty/items/ScrollItem.java new file mode 100644 index 000000000..ea8c02fce --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/items/ScrollItem.java @@ -0,0 +1,79 @@ +package com.majruszsdifficulty.items; + +import com.majruszsdifficulty.Registries; +import com.mlib.Utility; +import com.mlib.effects.SoundHandler; +import com.mlib.items.ItemHelper; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.*; +import net.minecraft.world.level.Level; + +import java.util.function.Supplier; + +public abstract class ScrollItem extends Item { + public static final int MIN_DURATION = Utility.secondsToTicks( 1.0 ); + + public ScrollItem() { + super( new Properties().tab( Registries.ITEM_GROUP ).rarity( Rarity.UNCOMMON ).stacksTo( 1 ) ); + } + + @Override + public InteractionResultHolder< ItemStack > use( Level level, Player player, InteractionHand hand ) { + this.playSound( this::getPrepareSound, level, player, 1.0f ); + + return ItemUtils.startUsingInstantly( level, player, hand ); + } + + @Override + public ItemStack finishUsingItem( ItemStack itemStack, Level level, LivingEntity entity ) { + this.useScroll( itemStack, level, entity, 1.0f ); + + return itemStack; + } + + @Override + public void releaseUsing( ItemStack itemStack, Level level, LivingEntity entity, int ticksLeft ) { + if( ( this.getUseDuration( itemStack ) - ticksLeft ) < MIN_DURATION ) { + this.disableItem( itemStack, entity, Utility.secondsToTicks( 1.0 ) ); + return; + } + + float useRatio = Mth.clamp( 1.0f - ( float )ticksLeft / ( this.getUseDuration( itemStack ) - MIN_DURATION ), 0.0f, 1.0f ); + this.useScroll( itemStack, level, entity, useRatio ); + } + + @Override + public UseAnim getUseAnimation( ItemStack itemStack ) { + return UseAnim.BOW; + } + + @Override + public int getUseDuration( ItemStack itemStack ) { + return Utility.secondsToTicks( 3.0 ); + } + + protected void useScroll( ItemStack itemStack, Level level, LivingEntity entity, float useRatio ) { + this.disableItem( itemStack, entity, Utility.secondsToTicks( 16.0 ) ); + this.playSound( this::getCastSound, level, entity, 2.0f ); + } + + protected void playSound( Supplier< SoundEvent > sound, Level level, LivingEntity entity, float volumeScale ) { + new SoundHandler( sound.get(), SoundSource.PLAYERS, SoundHandler.randomized( volumeScale ) ).play( level, entity.position() ); + } + + protected void disableItem( ItemStack itemStack, LivingEntity entity, int ticks ) { + if( entity instanceof Player player ) { + ItemHelper.addCooldown( player, ticks, itemStack.getItem() ); + } + } + + protected abstract SoundEvent getPrepareSound(); + + protected abstract SoundEvent getCastSound(); +} diff --git a/src/main/java/com/majruszsdifficulty/items/SoulJarItem.java b/src/main/java/com/majruszsdifficulty/items/SoulJarItem.java index c118c0d29..f9a7d19d8 100644 --- a/src/main/java/com/majruszsdifficulty/items/SoulJarItem.java +++ b/src/main/java/com/majruszsdifficulty/items/SoulJarItem.java @@ -1,21 +1,22 @@ package com.majruszsdifficulty.items; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.contexts.OnSoulJarMultiplier; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.OnSoulJarMultiplier; +import com.mlib.modhelper.AutoInstance; import com.mlib.attributes.AttributeHandler; +import com.mlib.data.SerializableHelper; import com.mlib.data.SerializableStructure; import com.mlib.effects.SoundHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.*; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.*; import com.mlib.text.TextHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.*; @@ -27,30 +28,26 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.fml.DistExecutor; import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.function.Function; public class SoulJarItem extends Item { static final float DAMAGE_BONUS = 2.5f; static final float MOVE_BONUS = 0.15f; static final float RANGE_BONUS = 0.5f; - static final int ARMOR_BONUS = 2; + static final int ARMOR_BONUS = 3; static final float MINE_BONUS = 0.15f; static final int LUCK_BONUS = 1; static final float SWIM_BONUS = 0.30f; public static ItemStack randomItemStack( int bonusCount ) { ItemStack itemStack = new ItemStack( Registries.SOUL_JAR.get() ); - BonusInfo bonusInfo = new BonusInfo( itemStack.getOrCreateTag() ); - bonusInfo.bonusCount = bonusCount; - bonusInfo.write( itemStack.getOrCreateTag() ); + SerializableHelper.modify( BonusInfo::new, itemStack.getOrCreateTag(), info->info.bonusCount = bonusCount ); return itemStack; } @@ -59,19 +56,16 @@ public SoulJarItem() { super( new Properties().stacksTo( 1 ).rarity( Rarity.UNCOMMON ).tab( Registries.ITEM_GROUP ) ); } - @Override - public boolean isFoil( ItemStack itemStack ) { - return new BonusInfo( itemStack.getOrCreateTag() ).hasBonuses(); - } - @Override public InteractionResultHolder< ItemStack > use( Level level, Player player, InteractionHand hand ) { ItemStack itemStack = player.getItemInHand( hand ); - BonusInfo bonusInfo = new BonusInfo( itemStack.getOrCreateTag() ); + BonusInfo bonusInfo = SerializableHelper.read( BonusInfo::new, itemStack.getOrCreateTag() ); if( bonusInfo.bonusMask == 0b0 ) { - bonusInfo.randomize(); - bonusInfo.write( itemStack.getOrCreateTag() ); - SoundHandler.ENCHANT.play( level, player.position() ); + if( level instanceof ServerLevel ) { + bonusInfo.randomize(); + bonusInfo.write( itemStack.getOrCreateTag() ); + SoundHandler.ENCHANT.play( level, player.position() ); + } return InteractionResultHolder.sidedSuccess( itemStack, level.isClientSide() ); } @@ -91,7 +85,10 @@ public Handler() { .addCondition( Condition.predicate( data->hasBonus( data.attacker, BonusType.DAMAGE ) ) ); OnBreakSpeed.listen( this::increaseSpeed ) - .addCondition( Condition.predicate( data->hasBonus( data.player, BonusType.MINING ) ) ); + .addCondition( Condition.predicate( data->hasBonus( data.player, BonusType.MINE ) ) ); + + OnLoot.listen( this::applyRandomSouls ) + .addCondition( Condition.isServer() ); OnItemAttributeTooltip.listen( this::addTooltip ) .addCondition( Condition.predicate( data->data.itemStack.getItem() instanceof SoulJarItem ) ); @@ -105,7 +102,7 @@ private static boolean hasBonus( @Nullable Entity entity, BonusType bonusType ) if( !( itemStack.getItem() instanceof SoulJarItem ) ) return false; - return new BonusInfo( itemStack.getOrCreateTag() ) + return SerializableHelper.read( BonusInfo::new, itemStack.getOrCreateTag() ) .getBonusTypes() .contains( bonusType ); } @@ -154,9 +151,23 @@ private void increaseSpeed( OnBreakSpeed.Data data ) { data.event.setNewSpeed( data.event.getNewSpeed() + data.event.getOriginalSpeed() * MINE_BONUS * getMultiplier( data.player ) ); } + private void applyRandomSouls( OnLoot.Data data ) { + for( ItemStack itemStack : data.generatedLoot ) { + if( !( itemStack.getItem() instanceof SoulJarItem ) ) { + continue; + } + + SerializableHelper.modify( BonusInfo::new, itemStack.getOrCreateTag(), bonusInfo->{ + if( bonusInfo.bonusMask == 0b0 ) { + bonusInfo.randomize(); + } + } ); + } + } + private void addTooltip( OnItemAttributeTooltip.Data data ) { Player player = DistExecutor.unsafeCallWhenOn( Dist.CLIENT, ()->()->Minecraft.getInstance().player ); - BonusInfo bonusInfo = new BonusInfo( data.itemStack.getOrCreateTag() ); + BonusInfo bonusInfo = SerializableHelper.read( BonusInfo::new, data.itemStack.getOrCreateTag() ); float multiplier = getMultiplier( player, data.itemStack ); for( BonusType bonusType : bonusInfo.getBonusTypes() ) { data.add( EquipmentSlot.OFFHAND, bonusType.getBonusComponent( multiplier ) ); @@ -164,7 +175,7 @@ private void addTooltip( OnItemAttributeTooltip.Data data ) { } private void addTooltip( OnItemTooltip.Data data ) { - BonusInfo bonusInfo = new BonusInfo( data.itemStack.getOrCreateTag() ); + BonusInfo bonusInfo = SerializableHelper.read( BonusInfo::new, data.itemStack.getOrCreateTag() ); if( bonusInfo.hasBonuses() ) { MutableComponent souls = new TextComponent( "" ); for( BonusType bonusType : bonusInfo.getBonusTypes() ) { @@ -181,13 +192,11 @@ public static class BonusInfo extends SerializableStructure { public int bonusMask = 0b0; public int bonusCount = 3; - public BonusInfo( CompoundTag tag ) { + public BonusInfo() { super( "SoulJar" ); - this.define( "BonusMask", ()->this.bonusMask, x->this.bonusMask = x ); - this.define( "BonusCount", ()->this.bonusCount, x->this.bonusCount = x ); - - this.read( tag ); + this.defineInteger( "BonusMask", ()->this.bonusMask, x->this.bonusMask = x ); + this.defineInteger( "BonusCount", ()->this.bonusCount, x->this.bonusCount = x ); } public void randomize() { @@ -228,7 +237,7 @@ public enum BonusType { MOVE( 1 << 1, "item.majruszsdifficulty.soul_jar.move", "entity.minecraft.horse", ChatFormatting.WHITE, multiplier->TextHelper.signedPercent( MOVE_BONUS * multiplier ) ), RANGE( 1 << 2, "item.majruszsdifficulty.soul_jar.range", "entity.minecraft.enderman", ChatFormatting.DARK_PURPLE, multiplier->TextHelper.signed( RANGE_BONUS * multiplier ) ), ARMOR( 1 << 3, "item.majruszsdifficulty.soul_jar.armor", "entity.majruszsdifficulty.tank", ChatFormatting.BLUE, multiplier->TextHelper.signed( ( int )( ARMOR_BONUS * multiplier ) ) ), - MINING( 1 << 4, "item.majruszsdifficulty.soul_jar.mine", "entity.minecraft.sniffer", ChatFormatting.YELLOW, multiplier->TextHelper.signedPercent( MINE_BONUS * multiplier ) ), + MINE( 1 << 4, "item.majruszsdifficulty.soul_jar.mine", "entity.minecraft.sniffer", ChatFormatting.YELLOW, multiplier->TextHelper.signedPercent( MINE_BONUS * multiplier ) ), LUCK( 1 << 5, "item.majruszsdifficulty.soul_jar.luck", "entity.minecraft.rabbit", ChatFormatting.GREEN, multiplier->TextHelper.signed( ( int )( LUCK_BONUS * multiplier ) ) ), SWIM( 1 << 6, "item.majruszsdifficulty.soul_jar.swim", "entity.minecraft.dolphin", ChatFormatting.AQUA, multiplier->TextHelper.signedPercent( SWIM_BONUS * multiplier ) ); @@ -256,4 +265,27 @@ public Component getSoulComponent() { .withStyle( this.soulFormatting ); } } + + @OnlyIn( Dist.CLIENT ) + public static class ItemColor implements net.minecraft.client.color.item.ItemColor { + static final Map< BonusType, Integer > COLOR_MAPPING = Map.of( + BonusType.DAMAGE, 0xcc5555, + BonusType.MOVE, 0xdddddd, + BonusType.RANGE, 0xcc55cc, + BonusType.ARMOR, 0x5555cc, + BonusType.MINE, 0xcccc55, + BonusType.LUCK, 0x55cc55, + BonusType.SWIM, 0x55cccc + ); + + @Override + public int getColor( ItemStack itemStack, int index ) { + if( index == 0 ) { + return 0xffffff; + } + + BonusInfo bonusInfo = SerializableHelper.read( BonusInfo::new, itemStack.getOrCreateTag() ); + return bonusInfo.hasBonuses() ? COLOR_MAPPING.get( bonusInfo.getBonusTypes().get( index - 1 ) ) : 0xeeeeee - index * 0x111111; + } + } } diff --git a/src/main/java/com/majruszsdifficulty/items/TatteredArmorItem.java b/src/main/java/com/majruszsdifficulty/items/TatteredArmorItem.java index 71e6e3806..6a139aab7 100644 --- a/src/main/java/com/majruszsdifficulty/items/TatteredArmorItem.java +++ b/src/main/java/com/majruszsdifficulty/items/TatteredArmorItem.java @@ -4,6 +4,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.*; +import net.minecraft.world.entity.LivingEntity; import javax.annotation.Nullable; @@ -22,6 +23,11 @@ public static class Boots extends TatteredArmorItem { public Boots() { super( EquipmentSlot.FEET ); } + + @Override + public boolean canWalkOnPowderedSnow( ItemStack itemStack, LivingEntity wearer ) { + return itemStack.getItem().equals( this ); + } } public static class Chestplate extends TatteredArmorItem { diff --git a/src/main/java/com/majruszsdifficulty/items/TreasureBagItem.java b/src/main/java/com/majruszsdifficulty/items/TreasureBagItem.java index ec192ea4a..72326244e 100644 --- a/src/main/java/com/majruszsdifficulty/items/TreasureBagItem.java +++ b/src/main/java/com/majruszsdifficulty/items/TreasureBagItem.java @@ -1,14 +1,14 @@ package com.majruszsdifficulty.items; -import com.majruszsdifficulty.MajruszsHelper; import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.config.GameStageIntegerConfig; -import com.majruszsdifficulty.gamemodifiers.configs.TreasureBagConfig; -import com.majruszsdifficulty.gamemodifiers.contexts.OnTreasureBagOpened; +import com.majruszsdifficulty.config.TreasureBagConfig; +import com.majruszsdifficulty.contexts.OnTreasureBagOpened; import com.majruszsdifficulty.treasurebags.TreasureBagProgressClient; import com.mlib.effects.SoundHandler; import com.mlib.items.ItemHelper; import com.mlib.math.Range; +import net.minecraft.ChatFormatting; import net.minecraft.network.chat.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; @@ -85,7 +85,10 @@ public InteractionResultHolder< ItemStack > use( Level level, Player player, Int @Override @OnlyIn( Dist.CLIENT ) public void appendHoverText( ItemStack itemStack, @Nullable Level world, List< Component > tooltip, TooltipFlag flag ) { - MajruszsHelper.addAdvancedTranslatableTexts( tooltip, flag, ITEM_TOOLTIP_TRANSLATION_KEY, " " ); + if( flag.isAdvanced() ) { + tooltip.add( new TranslatableComponent( ITEM_TOOLTIP_TRANSLATION_KEY ).withStyle( ChatFormatting.GRAY ) ); + tooltip.add( new TranslatableComponent( " " ) ); + } tooltip.addAll( TreasureBagProgressClient.getTextComponents( this ) ); } @@ -109,7 +112,7 @@ private void triggerTreasureBagAdvancement( ServerPlayer player ) { } public static class UndeadArmy extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/undead_army_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_undead_army" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "UndeadArmy" ); public UndeadArmy() { @@ -118,7 +121,7 @@ public UndeadArmy() { } public static class ElderGuardian extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/elder_guardian_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_elder_guardian" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "ElderGuardian" ); public ElderGuardian() { @@ -127,7 +130,7 @@ public ElderGuardian() { } public static class Wither extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/wither_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_wither" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "Wither" ); public Wither() { @@ -136,7 +139,7 @@ public Wither() { } public static class EnderDragon extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/ender_dragon_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_ender_dragon" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "EnderDragon" ); public EnderDragon() { @@ -145,7 +148,7 @@ public EnderDragon() { } public static class Fishing extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/fishing_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_fishing" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "Fishing" ); public static final GameStageIntegerConfig REQUIRED_FISH_COUNT = new GameStageIntegerConfig( 20, 15, 10, new Range<>( 3, 100 ) ); @@ -159,7 +162,7 @@ public Fishing() { } public static class Pillager extends TreasureBagItem { - public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/pillager_treasure_loot" ); + public static final ResourceLocation LOCATION = Registries.getLocation( "gameplay/treasure_bag_pillager" ); public static final TreasureBagConfig CONFIG = new TreasureBagConfig( "PillagerRaid" ); public Pillager() { diff --git a/src/main/java/com/majruszsdifficulty/items/UndeadBattleStandardItem.java b/src/main/java/com/majruszsdifficulty/items/UndeadBattleStandardItem.java index 8ddb19f4f..2b7489243 100644 --- a/src/main/java/com/majruszsdifficulty/items/UndeadBattleStandardItem.java +++ b/src/main/java/com/majruszsdifficulty/items/UndeadBattleStandardItem.java @@ -1,9 +1,9 @@ package com.majruszsdifficulty.items; -import com.majruszsdifficulty.MajruszsHelper; import com.majruszsdifficulty.Registries; import com.mlib.items.ItemHelper; import net.minecraft.network.chat.*; +import net.minecraft.ChatFormatting; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; @@ -41,7 +41,10 @@ public InteractionResultHolder< ItemStack > use( Level world, Player player, Int @Override @OnlyIn( Dist.CLIENT ) public void appendHoverText( ItemStack itemStack, @Nullable Level world, List< Component > tooltip, TooltipFlag flag ) { - tooltip.add( new TranslatableComponent( TOOLTIP_TRANSLATION_KEY_1 ) ); - MajruszsHelper.addAdvancedTranslatableTexts( tooltip, flag, TOOLTIP_TRANSLATION_KEY_2, TOOLTIP_TRANSLATION_KEY_3 ); + tooltip.add( new TranslatableComponent( TOOLTIP_TRANSLATION_KEY_1 ).withStyle( ChatFormatting.GRAY ) ); + if( flag.isAdvanced() ) { + tooltip.add( new TranslatableComponent( TOOLTIP_TRANSLATION_KEY_2 ).withStyle( ChatFormatting.GRAY ) ); + tooltip.add( new TranslatableComponent( TOOLTIP_TRANSLATION_KEY_3 ).withStyle( ChatFormatting.GRAY ) ); + } } } diff --git a/src/main/java/com/majruszsdifficulty/items/WitherSwordItem.java b/src/main/java/com/majruszsdifficulty/items/WitherSwordItem.java index 7717ad3a7..99f649ce3 100644 --- a/src/main/java/com/majruszsdifficulty/items/WitherSwordItem.java +++ b/src/main/java/com/majruszsdifficulty/items/WitherSwordItem.java @@ -1,24 +1,43 @@ package com.majruszsdifficulty.items; import com.majruszsdifficulty.Registries; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.gamestage.GameStage; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.config.EffectConfig; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import com.mlib.gamemodifiers.contexts.OnItemAttributeTooltip; +import com.mlib.data.SerializableHelper; +import com.mlib.data.SerializableStructure; +import com.mlib.effects.ParticleHandler; +import com.mlib.entities.EntityHelper; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnItemAttributeTooltip; import com.mlib.items.ItemHelper; import com.mlib.mobeffects.MobEffectHelper; import com.mlib.text.TextHelper; +import com.mlib.time.Time; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.*; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.monster.Skeleton; import net.minecraft.world.item.Rarity; import net.minecraft.world.item.SwordItem; +import net.minecraft.world.phys.Vec3; public class WitherSwordItem extends SwordItem { + static final String GROUP_ID = Registries.getLocationString( "wither_sword" ); + + static { + ModConfigs.init( Registries.Groups.DEFAULT, GROUP_ID ).name( "WitherSword" ); + } + public WitherSwordItem() { super( CustomItemTier.WITHER, 3, -2.4f, new Properties().tab( Registries.ITEM_GROUP ).rarity( Rarity.UNCOMMON ) ); } @@ -29,8 +48,8 @@ public static class Effect { final EffectConfig wither = new EffectConfig( MobEffects.WITHER, 1, 6.0 ); public Effect() { - ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.DEFAULT ) - .name( "WitherSwordEffect" ) + ConfigGroup group = ModConfigs.registerSubgroup( GROUP_ID ) + .name( "Effect" ) .comment( "Wither Sword inflicts wither effect." ); OnDamaged.listen( this::applyWither ) @@ -56,4 +75,58 @@ private void addTooltip( OnItemAttributeTooltip.Data data ) { } } + @AutoInstance + public static class TurnSkeletonIntoWitherSkeleton { + public TurnSkeletonIntoWitherSkeleton() { + ConfigGroup group = ModConfigs.registerSubgroup( GROUP_ID ) + .name( "TransformSkeletons" ) + .comment( "If the Skeleton dies from Wither Sword it will respawn as Wither Skeleton in a few seconds." ); + + OnDamaged.listen( this::applyWitherTag ) + .addCondition( Condition.predicate( data->data.attacker != null ) ) + .addCondition( Condition.predicate( data->data.attacker.getMainHandItem().getItem() instanceof WitherSwordItem ) ) + .addCondition( Condition.predicate( data->data.target instanceof Skeleton ) ) + .insertTo( group ); + + OnDeath.listen( this::spawnWitherSkeleton ) + .addCondition( Condition.isServer() ) + .addCondition( CustomConditions.gameStageAtLeast( GameStage.MASTER ) ) + .addCondition( Condition.chanceCRD( 0.5, true ) ) + .addCondition( Condition.excludable() ) + .addCondition( Condition.predicate( data->SerializableHelper.read( Data::new, data.target.getPersistentData() ).hasWitherTag ) ) + .insertTo( group ); + } + + private void applyWitherTag( OnDamaged.Data data ) { + SerializableHelper.modify( Data::new, data.target.getPersistentData(), subdata->subdata.hasWitherTag = true ); + } + + private void spawnWitherSkeleton( OnDeath.Data data ) { + ServerLevel level = data.getServerLevel(); + Time.slider( 7.0, slider->{ + Vec3 position = data.target.position().add( 0.0, 1.0, 0.0 ); + if( slider.getTicksLeft() % 5 == 0 ) { + ParticleHandler.SOUL.spawn( level, position, ( int )( slider.getRatio() * 10 ), ParticleHandler.offset( slider.getRatio() ) ); + } + if( slider.getTicksLeft() == 2 ) { + ParticleHandler.SOUL.spawn( level, position, 100, ParticleHandler.offset( 0.5f ) ); + ParticleHandler.SOUL.spawn( level, position, 100, ParticleHandler.offset( 1.0f ) ); + } + if( slider.isFinished() ) { + EntityHelper.createSpawner( EntityType.WITHER_SKELETON, level ) + .mobSpawnType( MobSpawnType.EVENT ) + .position( data.target.position() ) + .spawn(); + } + } ); + } + + private static class Data extends SerializableStructure { + boolean hasWitherTag = false; + + public Data() { + this.defineBoolean( "MajruszsDifficultyWitherTag", ()->this.hasWitherTag, x->this.hasWitherTag = x ); + } + } + } } diff --git a/src/main/java/com/majruszsdifficulty/itemsets/EnderiumSet.java b/src/main/java/com/majruszsdifficulty/itemsets/EnderiumSet.java index 2a2dec938..c20cccaae 100644 --- a/src/main/java/com/majruszsdifficulty/itemsets/EnderiumSet.java +++ b/src/main/java/com/majruszsdifficulty/itemsets/EnderiumSet.java @@ -3,14 +3,14 @@ import com.majruszsdifficulty.Registries; import com.mlib.Random; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.effects.ParticleHandler; import com.mlib.entities.EntityHelper; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.OnChorusFruitTeleport; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.gamemodifiers.contexts.OnEnderManAnger; -import com.mlib.gamemodifiers.contexts.OnLootLevel; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnChorusFruitTeleport; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnEnderManAnger; +import com.mlib.contexts.OnLootLevel; import com.mlib.itemsets.BonusData; import com.mlib.itemsets.ItemData; import com.mlib.itemsets.ItemSet; @@ -87,7 +87,7 @@ private void giveRandomPotionEffect( OnChorusFruitTeleport.Data data ) { .filter( effect->MobEffectHelper.getAmplifier( data.event.getEntityLiving(), effect ) == -1 ) .toList(); - MobEffectHelper.tryToApply( data.event.getEntityLiving(), Random.nextRandom( !notAppliedEffects.isEmpty() ? notAppliedEffects : List.of( EFFECTS ) ), Utility.minutesToTicks( 1.5 ), 0 ); + MobEffectHelper.tryToApply( data.event.getEntityLiving(), Random.next( !notAppliedEffects.isEmpty() ? notAppliedEffects : List.of( EFFECTS ) ), Utility.minutesToTicks( 1.5 ), 0 ); data.event.setCanceled( true ); } diff --git a/src/main/java/com/majruszsdifficulty/itemsets/UndeadSet.java b/src/main/java/com/majruszsdifficulty/itemsets/UndeadSet.java index f0aa6413d..87233d342 100644 --- a/src/main/java/com/majruszsdifficulty/itemsets/UndeadSet.java +++ b/src/main/java/com/majruszsdifficulty/itemsets/UndeadSet.java @@ -1,12 +1,12 @@ package com.majruszsdifficulty.itemsets; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.contexts.OnSoulJarMultiplier; -import com.mlib.annotations.AutoInstance; +import com.majruszsdifficulty.contexts.OnSoulJarMultiplier; +import com.mlib.modhelper.AutoInstance; import com.mlib.attributes.AttributeHandler; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.OnFoodPropertiesGet; -import com.mlib.gamemodifiers.contexts.OnItemEquipped; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnFoodPropertiesGet; +import com.mlib.contexts.OnItemEquipped; import com.mlib.itemsets.BonusData; import com.mlib.itemsets.ItemData; import com.mlib.itemsets.ItemSet; @@ -28,7 +28,7 @@ public class UndeadSet extends ItemSet { static final FoodProperties FLESH_NO_EFFECT = new FoodProperties.Builder().nutrition( 4 ).saturationMod( 0.1f ).meat().build(); static final FoodProperties FLESH_EXTRA_HUNGER = new FoodProperties.Builder().nutrition( 4 * 2 ).saturationMod( 0.1f ).meat().build(); static final AttributeHandler ARMOR_ATTRIBUTE = new AttributeHandler( "6bf545e0-8f10-483b-9c2d-6ab369e2cb1f", "UndeadSetArmorBonus", Attributes.ARMOR, AttributeModifier.Operation.ADDITION ); - static final int EXTRA_ARMOR = 5; + static final int EXTRA_ARMOR = 4; static final ItemData ITEM_1 = new ItemData( Registries.TATTERED_HELMET, EquipmentSlot.HEAD ); static final ItemData ITEM_2 = new ItemData( Registries.TATTERED_CHESTPLATE, EquipmentSlot.CHEST ); static final ItemData ITEM_3 = new ItemData( Registries.TATTERED_LEGGINGS, EquipmentSlot.LEGS ); diff --git a/src/main/java/com/majruszsdifficulty/models/BlackWidowModel.java b/src/main/java/com/majruszsdifficulty/models/BlackWidowModel.java deleted file mode 100644 index 3bd2fbabd..000000000 --- a/src/main/java/com/majruszsdifficulty/models/BlackWidowModel.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.majruszsdifficulty.models; - -import net.minecraft.client.model.SpiderModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn( Dist.CLIENT ) -public class BlackWidowModel< Type extends Entity > extends SpiderModel< Type > { - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 11).addBox(-2.0F, -3.0F, -3.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 21.0F, -2.0F)); - - partdefinition.addOrReplaceChild("body0", CubeListBuilder.create().texOffs(16, 11).addBox(-1.0F, -2.0F, -1.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 21.0F, 0.0F)); - - partdefinition.addOrReplaceChild("body1", CubeListBuilder.create().texOffs(0, 0).addBox(-3.0F, -4.0F, 0.0F, 6.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 21.0F, 0.0F)); - - partdefinition.addOrReplaceChild("right_front_leg", CubeListBuilder.create().texOffs(0, 18).addBox(-7.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, 20.5F, -1.5F)); - - partdefinition.addOrReplaceChild("left_front_leg", CubeListBuilder.create().texOffs(0, 18).addBox(0.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 20.5F, -1.5F)); - - partdefinition.addOrReplaceChild("right_middle_front_leg", CubeListBuilder.create().texOffs(0, 18).addBox(-7.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, 20.5F, -0.5F)); - - partdefinition.addOrReplaceChild("left_middle_front_leg", CubeListBuilder.create().texOffs(0, 18).addBox(0.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 20.5F, -0.5F)); - - partdefinition.addOrReplaceChild("right_middle_hind_leg", CubeListBuilder.create().texOffs(0, 18).addBox(-7.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, 20.5F, 0.5F)); - - partdefinition.addOrReplaceChild("left_middle_hind_leg", CubeListBuilder.create().texOffs(0, 18).addBox(0.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 20.5F, 0.5F)); - - partdefinition.addOrReplaceChild("right_hind_leg", CubeListBuilder.create().texOffs(0, 18).addBox(-7.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, 20.5F, 1.5F)); - - partdefinition.addOrReplaceChild("left_hind_leg", CubeListBuilder.create().texOffs(0, 18).addBox(0.0F, -0.5F, -1.5F, 7.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 20.5F, 1.5F)); - - partdefinition.addOrReplaceChild("symbol", CubeListBuilder.create().texOffs(0, 20).addBox(-1.5F, -7.0F, 1.5F, 3.0F, 5.0F, 3.0F, new CubeDeformation(0.1F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - - return LayerDefinition.create( meshdefinition, 32, 32 ); - } - - public BlackWidowModel( ModelPart p_170984_ ) { - super( p_170984_ ); - } - - @Override - public void setupAnim( Type entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch ) { - super.setupAnim( entity, 2.3f * limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch ); - } -} \ No newline at end of file diff --git a/src/main/java/com/majruszsdifficulty/models/CerberusModel.java b/src/main/java/com/majruszsdifficulty/models/CerberusModel.java index 46bb4e4ac..a36cecefc 100644 --- a/src/main/java/com/majruszsdifficulty/models/CerberusModel.java +++ b/src/main/java/com/majruszsdifficulty/models/CerberusModel.java @@ -21,12 +21,6 @@ public class CerberusModel< Type extends CerberusEntity > extends HierarchicalMo static final Animation< Float > BITE_JAW_ROTATION_X = new Animation<>( 1.0f ); static final Animation< Float > BREATH_JAW_ROTATION_X = new Animation<>( 1.0f ); static final Animation< Vector3f > BITE_SIDE_NECK_ROTATION = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_FRONT_LEG_1_ROTATION_X = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_FRONT_LEG_2_ROTATION_X = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_HIND_LEG_1_ROTATION_X = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_HIND_LEG_2_ROTATION_X = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_SPINE_ROTATION_X = new Animation<>( 1.0f ); - static final Animation< Float > GALLOP_BODY_POSITION_Y = new Animation<>( 1.0f ); static { BITE_JAW_ROTATION_X.add( 0.00f, new Frame.Degrees( 0.0f ) ) @@ -48,42 +42,6 @@ public class CerberusModel< Type extends CerberusEntity > extends HierarchicalMo .add( 0.30f, new Frame.Vector( -15.0f, 0.0f, -30.0f, InterpolationType.SQUARE ) ) .add( 0.70f, new Frame.Vector( 0.0f, 0.0f, 0.0f, InterpolationType.SQUARE ) ) .add( 1.00f, new Frame.Vector( 0.0f, 0.0f, 0.0f ) ); - - GALLOP_FRONT_LEG_1_ROTATION_X.add( 0.00f, new Frame.Degrees( 45.0f ) ) - .add( 0.25f, new Frame.Degrees( 15.0f ) ) - .add( 0.50f, new Frame.Degrees( -15.0f ) ) - .add( 0.75f, new Frame.Degrees( 30.0f ) ) - .add( 1.00f, new Frame.Degrees( 45.00f ) ); - - GALLOP_FRONT_LEG_2_ROTATION_X.add( 0.00f, new Frame.Degrees( 15.0f ) ) - .add( 0.25f, new Frame.Degrees( 0.0f ) ) - .add( 0.50f, new Frame.Degrees( 30.0f ) ) - .add( 0.75f, new Frame.Degrees( 45.0f ) ) - .add( 1.00f, new Frame.Degrees( 15.00f ) ); - - GALLOP_HIND_LEG_1_ROTATION_X.add( 0.00f, new Frame.Degrees( -15.0f ) ) - .add( 0.25f, new Frame.Degrees( 15.0f ) ) - .add( 0.50f, new Frame.Degrees( -15.0f ) ) - .add( 0.75f, new Frame.Degrees( -45.0f ) ) - .add( 1.00f, new Frame.Degrees( -15.00f ) ); - - GALLOP_HIND_LEG_2_ROTATION_X.add( 0.00f, new Frame.Degrees( -45.0f ) ) - .add( 0.25f, new Frame.Degrees( -15.0f ) ) - .add( 0.50f, new Frame.Degrees( 15.0f ) ) - .add( 0.75f, new Frame.Degrees( -15.0f ) ) - .add( 1.00f, new Frame.Degrees( -45.00f ) ); - - GALLOP_SPINE_ROTATION_X.add( 0.00f, new Frame.Degrees( 0.0f ) ) - .add( 0.25f, new Frame.Degrees( -5.00f, InterpolationType.SQUARE ) ) - .add( 0.50f, new Frame.Degrees( 5.00f, InterpolationType.SQUARE ) ) - .add( 0.75f, new Frame.Degrees( 10.00f, InterpolationType.SQUARE ) ) - .add( 1.00f, new Frame.Degrees( 0.00f, InterpolationType.SQUARE ) ); - - GALLOP_BODY_POSITION_Y.add( 0.00f, new Frame.Value( 0.0f ) ) - .add( 0.25f, new Frame.Value( 0.0f, InterpolationType.SQUARE ) ) - .add( 0.50f, new Frame.Value( 0.0f, InterpolationType.SQUARE ) ) - .add( 0.75f, new Frame.Value( 2.0f, InterpolationType.SQUARE ) ) - .add( 1.00f, new Frame.Value( 0.00f, InterpolationType.SQUARE ) ); } final ModelPart root; @@ -93,8 +51,8 @@ public class CerberusModel< Type extends CerberusEntity > extends HierarchicalMo final ModelPart neck1, head1, jawUpper1, jawLower1; final ModelPart neck2, head2, jawUpper2, jawLower2; final ModelPart neck3, head3, jawUpper3, jawLower3; - final ModelPart frontThigh1, frontThigh2; - final ModelPart hindThigh1, hindThigh2; + final ModelPart frontLeg1, frontLeg2; + final ModelPart hindLeg1, hindLeg2; public CerberusModel( ModelPart root ) { this.root = root; @@ -117,27 +75,27 @@ public CerberusModel( ModelPart root ) { this.jawUpper3 = this.head3.getChild( "jawUpper3" ); this.jawLower3 = this.head3.getChild( "jawLower3" ); - this.frontThigh1 = this.spine.getChild( "frontThigh1" ); - this.frontThigh2 = this.spine.getChild( "frontThigh2" ); - this.hindThigh1 = this.spine.getChild( "hindThigh1" ); - this.hindThigh2 = this.spine.getChild( "hindThigh2" ); + this.frontLeg1 = this.spine.getChild( "frontLeg1" ); + this.frontLeg2 = this.spine.getChild( "frontLeg2" ); + this.hindLeg1 = this.spine.getChild( "hindLeg1" ); + this.hindLeg2 = this.spine.getChild( "hindLeg2" ); } public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition body = partdefinition.addOrReplaceChild( "body", CubeListBuilder.create(), PartPose.offset( 0.0F, 25.0F, 0.0F ) ); + PartDefinition body = partdefinition.addOrReplaceChild( "body", CubeListBuilder.create(), PartPose.offset( 0.0F, 27.0F, -1.0F ) ); PartDefinition spine = body.addOrReplaceChild( "spine", CubeListBuilder.create() - .texOffs( 28, 23 ) - .addBox( -2.0F, -2.0F, -12.0F, 4.0F, 4.0F, 25.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, -25.0F, 2.0F, 0.0F, 0.0F, 0.0F ) ); + .texOffs( 31, 38 ) + .addBox( -2.0F, -2.0F, -12.0F, 4.0F, 4.0F, 22.0F, new CubeDeformation( 0.0F ) ), PartPose.offset( 0.0F, -25.0F, 2.0F ) ); - PartDefinition necks = spine.addOrReplaceChild( "necks", CubeListBuilder.create(), PartPose.offset( 0.0F, -2.0F, -10.0F ) ); + PartDefinition necks = spine.addOrReplaceChild( "necks", CubeListBuilder.create(), PartPose.offset( 0.0F, -3.0F, -10.0F ) ); PartDefinition neck1 = necks.addOrReplaceChild( "neck1", CubeListBuilder.create() .texOffs( 0, 45 ) - .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( -4.0F, 2.0F, -1.0F, 0.0F, 0.6109F, 0.0F ) ); + .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( -5.0F, 4.0F, 2.0F, 0.0F, 0.6109F, 0.0F ) ); PartDefinition head1 = neck1.addOrReplaceChild( "head1", CubeListBuilder.create() .texOffs( 0, 31 ) @@ -169,7 +127,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition neck2 = necks.addOrReplaceChild( "neck2", CubeListBuilder.create() .texOffs( 0, 45 ) - .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( 0.0F, 1.0F, -1.0F, -0.5236F, 0.0F, 0.0F ) ); + .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( 0.0F, 3.0F, -1.0F, -0.5236F, 0.0F, 0.0F ) ); PartDefinition head2 = neck2.addOrReplaceChild( "head2", CubeListBuilder.create() .texOffs( 0, 31 ) @@ -201,7 +159,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition neck3 = necks.addOrReplaceChild( "neck3", CubeListBuilder.create() .texOffs( 0, 45 ) - .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( 4.0F, 2.0F, -1.0F, 0.0F, -0.6109F, 0.0F ) ); + .addBox( -2.0F, -2.0F, -6.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation( -0.1F ) ), PartPose.offsetAndRotation( 5.0F, 4.0F, 2.0F, 0.0F, -0.6109F, 0.0F ) ); PartDefinition head3 = neck3.addOrReplaceChild( "head3", CubeListBuilder.create() .texOffs( 0, 31 ) @@ -233,47 +191,31 @@ public static LayerDefinition createBodyLayer() { PartDefinition chest = spine.addOrReplaceChild( "chest", CubeListBuilder.create() .texOffs( 28, 0 ) - .addBox( -6.0F, -4.5F, -5.0F, 12.0F, 9.0F, 14.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, 2.5F, -3.0F, 0.0F, 3.1416F, 0.0F ) ); - - PartDefinition frontThigh1 = spine.addOrReplaceChild( "frontThigh1", CubeListBuilder.create() - .texOffs( 80, 19 ) - .addBox( -4.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( -6.0F, 1.0F, -9.0F, 0.5236F, 0.0F, 0.0F ) ); - - PartDefinition frontCalf1 = frontThigh1.addOrReplaceChild( "frontCalf1", CubeListBuilder.create() - .texOffs( 80, 0 ) - .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 15.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( -2.0F, 10.0F, 0.0F, -0.7854F, 0.0F, 0.0F ) ); - - PartDefinition frontThigh2 = spine.addOrReplaceChild( "frontThigh2", CubeListBuilder.create() - .texOffs( 80, 19 ) - .addBox( 0.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 6.0F, 1.0F, -9.0F, 0.5236F, 0.0F, 0.0F ) ); + .addBox( -7.0F, -6.5F, -5.0F, 14.0F, 8.0F, 12.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, 4.5F, -5.0F, 0.0F, 3.1416F, 0.0F ) ); - PartDefinition frontCalf2 = frontThigh2.addOrReplaceChild( "frontCalf2", CubeListBuilder.create() - .texOffs( 80, 0 ) - .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 15.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 2.0F, 10.0F, 0.0F, -0.7854F, 0.0F, 0.0F ) ); + PartDefinition frontLeg1 = spine.addOrReplaceChild( "frontLeg1", CubeListBuilder.create() + .texOffs( 28, 22 ) + .addBox( -2.0F, -1.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation( 0.1F ) ), PartPose.offset( 5.0F, 3.0F, -9.0F ) ); - PartDefinition tail = spine.addOrReplaceChild( "tail", CubeListBuilder.create() - .texOffs( 28, 23 ) - .addBox( -1.0F, 0.0F, -1.5F, 2.0F, 10.0F, 2.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, -1.0F, 13.5F, 0.6109F, 0.0F, 0.0F ) ); - - PartDefinition tail2 = tail.addOrReplaceChild( "tail2", CubeListBuilder.create() - .texOffs( 28, 23 ) - .addBox( -1.0F, 0.0F, -1.0F, 2.0F, 10.0F, 2.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, 10.0F, -0.5F, -0.4363F, 0.0F, 0.0F ) ); + PartDefinition frontLeg2 = spine.addOrReplaceChild( "frontLeg2", CubeListBuilder.create() + .texOffs( 28, 22 ) + .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation( 0.1F ) ), PartPose.offset( -5.0F, 2.0F, -9.0F ) ); - PartDefinition hindThigh1 = spine.addOrReplaceChild( "hindThigh1", CubeListBuilder.create() - .texOffs( 80, 19 ) - .addBox( -4.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( -2.0F, 1.0F, 10.0F, -0.3491F, 0.0F, 0.0F ) ); + PartDefinition pelvis = spine.addOrReplaceChild( "pelvis", CubeListBuilder.create() + .texOffs( 53, 22 ) + .addBox( -6.0F, -4.5F, -16.0F, 12.0F, 4.0F, 6.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, 2.5F, -6.0F, 0.0F, 3.1416F, 0.0F ) ); - PartDefinition hindCalf1 = hindThigh1.addOrReplaceChild( "hindCalf1", CubeListBuilder.create() - .texOffs( 80, 0 ) - .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 15.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( -2.0F, 10.0F, 0.0F, 0.5236F, 0.0F, 0.0F ) ); + PartDefinition hindLeg1 = spine.addOrReplaceChild( "hindLeg1", CubeListBuilder.create() + .texOffs( 28, 22 ) + .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offset( 4.0F, 2.0F, 7.0F ) ); - PartDefinition hindThigh2 = spine.addOrReplaceChild( "hindThigh2", CubeListBuilder.create() - .texOffs( 80, 19 ) - .addBox( 0.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 2.0F, 1.0F, 10.0F, -0.3491F, 0.0F, 0.0F ) ); + PartDefinition hindLeg2 = spine.addOrReplaceChild( "hindLeg2", CubeListBuilder.create() + .texOffs( 28, 22 ) + .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offset( -4.0F, 2.0F, 7.0F ) ); - PartDefinition hindCalf2 = hindThigh2.addOrReplaceChild( "hindCalf2", CubeListBuilder.create() - .texOffs( 80, 0 ) - .addBox( -2.0F, 0.0F, -2.0F, 4.0F, 15.0F, 4.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 2.0F, 10.0F, 0.0F, 0.5236F, 0.0F, 0.0F ) ); + PartDefinition tail = spine.addOrReplaceChild( "tail", CubeListBuilder.create() + .texOffs( 44, 22 ) + .addBox( -1.0F, 0.0F, -1.0F, 2.0F, 18.0F, 2.0F, new CubeDeformation( 0.0F ) ), PartPose.offsetAndRotation( 0.0F, -1.0F, 10.0F, 0.3927F, 0.0F, 0.0F ) ); return LayerDefinition.create( meshdefinition, 96, 64 ); } @@ -294,30 +236,20 @@ public void setupAnim( Type cerberus, float limbSwing, float limbSwingAmount, fl this.necks.yRot = ( float )Math.toRadians( netHeadYaw ); this.necks.xRot = ( float )Math.toRadians( headPitch ) + 0.0873f; + // head rotation for side heads to follow the main one + this.neck1.yRot = ( float )( Math.toRadians( 35.0f + netHeadYaw * ( netHeadYaw < 0.0f ? 0.255f : -0.075f ) + 2.0f * Math.sin( 0.1f * ageInTicks ) ) ); + this.neck3.yRot = ( float )( Math.toRadians( -35.0f + netHeadYaw * ( netHeadYaw > 0.0f ? 0.225f : -0.075f ) - 2.0f * Math.cos( 0.1f * ageInTicks ) ) ); + // jaw rotation dependent on players distance float jawRotation = ( float )Math.toRadians( -1.0f * Math.sin( ageInTicks / 10.0f ) - 15.0f * Mth.clamp( 1.20f - this.getPlayerDistance( cerberus ) / 5.0f, 0.0f, 1.0f ) ); this.jawUpper1.xRot = this.jawUpper2.xRot = this.jawUpper3.xRot = jawRotation; this.jawLower1.xRot = this.jawLower2.xRot = this.jawLower3.xRot = jawRotation; // movement anims - if( cerberus.hasTarget ) { - // gallop anims - float swingRatio = ( limbSwing * 0.175f ) % 1.0f; - this.frontThigh1.xRot = ( float )Math.toRadians( 30.0f ) - GALLOP_FRONT_LEG_1_ROTATION_X.apply( swingRatio, ageInTicks ) * limbSwingAmount; - this.frontThigh2.xRot = ( float )Math.toRadians( 30.0f ) - GALLOP_FRONT_LEG_2_ROTATION_X.apply( swingRatio, ageInTicks ) * limbSwingAmount; - this.hindThigh1.xRot = ( float )Math.toRadians( -20.0f ) - GALLOP_HIND_LEG_1_ROTATION_X.apply( swingRatio, ageInTicks ) * limbSwingAmount; - this.hindThigh2.xRot = ( float )Math.toRadians( -20.0f ) - GALLOP_HIND_LEG_2_ROTATION_X.apply( swingRatio, ageInTicks ) * limbSwingAmount; - this.spine.xRot -= GALLOP_SPINE_ROTATION_X.apply( swingRatio, ageInTicks ) * limbSwingAmount; - this.body.y = 25.0f - GALLOP_BODY_POSITION_Y.apply( swingRatio, ageInTicks ) * limbSwingAmount; - } else { - // walk anims - float swingRatio = ( float )( Math.cos( 0.4f * limbSwing ) * limbSwingAmount ); - this.frontThigh2.xRot = ( float )Math.toRadians( 30.0f + 30.0f * swingRatio ); - this.hindThigh2.xRot = ( float )Math.toRadians( -20.0f + 30.0f * swingRatio ); - this.frontThigh1.xRot = ( float )Math.toRadians( 30.0f - 30.0f * swingRatio ); - this.hindThigh1.xRot = ( float )Math.toRadians( -20.0f - 30.0f * swingRatio ); - this.body.y = 25.0f + 1.0f * Math.abs( swingRatio ); - } + float limbFactor1 = 0.5f * limbSwing, limbFactor2 = 0.6f * limbSwingAmount; + this.frontLeg1.xRot = this.hindLeg1.xRot = ( float )( Math.cos( limbFactor1 ) * limbFactor2 ); + this.frontLeg2.xRot = this.hindLeg2.xRot = ( float )( Math.cos( limbFactor1 + Math.PI ) * limbFactor2 ); + this.body.y = 27.0f + 1.0f * Math.abs( ( float )Math.cos( limbFactor1 ) * limbSwingAmount ); // bite anims (jaw) float biteRatio = skills.getRatio( CerberusEntity.SkillType.BITE ); diff --git a/src/main/java/com/majruszsdifficulty/models/GiantModel.java b/src/main/java/com/majruszsdifficulty/models/GiantModel.java new file mode 100644 index 000000000..57e68f491 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/models/GiantModel.java @@ -0,0 +1,24 @@ +package com.majruszsdifficulty.models; + +import com.majruszsdifficulty.entities.GiantEntity; +import net.minecraft.client.model.AbstractZombieModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn( Dist.CLIENT ) +public class GiantModel< Type extends GiantEntity > extends AbstractZombieModel< Type > { + public GiantModel( ModelPart root ) { + super( root ); + } + + @Override + public boolean isAggressive( GiantEntity giant ) { + return false; + } + + @Override + public void setupAnim( Type giant, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch ) { + super.setupAnim( giant, 0.25f * limbSwing, 0.5f * limbSwingAmount, ageInTicks, netHeadYaw, headPitch ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/particles/ParticleUtil.java b/src/main/java/com/majruszsdifficulty/particles/ParticleUtil.java deleted file mode 100644 index d329f8aa1..000000000 --- a/src/main/java/com/majruszsdifficulty/particles/ParticleUtil.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.majruszsdifficulty.particles; - -import com.majruszsdifficulty.MajruszsDifficulty; -import com.majruszsdifficulty.Registries; -import net.minecraft.client.Minecraft; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber( modid = MajruszsDifficulty.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD ) -public class ParticleUtil { - @OnlyIn( Dist.CLIENT ) - @SubscribeEvent - public static void registerParticles( ParticleFactoryRegisterEvent event ) { - Minecraft.getInstance().particleEngine.register( Registries.BLOOD.get(), BloodParticle.Factory::new ); - } -} diff --git a/src/main/java/com/majruszsdifficulty/renderers/BlackWidowEyesLayer.java b/src/main/java/com/majruszsdifficulty/renderers/BlackWidowEyesLayer.java deleted file mode 100644 index 6f74ac1d9..000000000 --- a/src/main/java/com/majruszsdifficulty/renderers/BlackWidowEyesLayer.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.majruszsdifficulty.renderers; - -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.entities.BlackWidowEntity; -import com.majruszsdifficulty.models.BlackWidowModel; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.layers.EyesLayer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn( Dist.CLIENT ) -public class BlackWidowEyesLayer extends EyesLayer< BlackWidowEntity, BlackWidowModel< BlackWidowEntity > > { - static final RenderType SPIDER_EYES = Registries.getEyesRenderType( "textures/entity/black_widow_eyes.png" ); - - public BlackWidowEyesLayer( RenderLayerParent< BlackWidowEntity, BlackWidowModel< BlackWidowEntity > > layer ) { - super( layer ); - } - - @Override - public RenderType renderType() { - return SPIDER_EYES; - } -} \ No newline at end of file diff --git a/src/main/java/com/majruszsdifficulty/renderers/BlackWidowRenderer.java b/src/main/java/com/majruszsdifficulty/renderers/BlackWidowRenderer.java deleted file mode 100644 index a9e029f93..000000000 --- a/src/main/java/com/majruszsdifficulty/renderers/BlackWidowRenderer.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.majruszsdifficulty.renderers; - -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.entities.BlackWidowEntity; -import com.majruszsdifficulty.models.BlackWidowModel; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.entity.MobRenderer; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn( Dist.CLIENT ) -public class BlackWidowRenderer extends MobRenderer< BlackWidowEntity, BlackWidowModel< BlackWidowEntity > > { - public static final ModelLayerLocation LAYER = Registries.getModelLayer( "black_widow" ); - static final ResourceLocation TEXTURE = Registries.getLocation( "textures/entity/black_widow.png" ); - - public BlackWidowRenderer( EntityRendererProvider.Context context ) { - super( context, new BlackWidowModel<>( context.bakeLayer( LAYER ) ), 0.25f ); - this.addLayer( new BlackWidowEyesLayer( this ) ); - } - - @Override - public ResourceLocation getTextureLocation( BlackWidowEntity blackWidow ) { - return TEXTURE; - } - - @Override - public void render( BlackWidowEntity blackWidow, float p_114209_, float partialTicks, PoseStack poseStack, - MultiBufferSource bufferSource, int packedLight - ) { - this.model.prepareMobModel( blackWidow, 0.0f, 0.0f, partialTicks ); - - super.render( blackWidow, p_114209_, partialTicks, poseStack, bufferSource, packedLight ); - } - - @Override - protected float getFlipDegrees( BlackWidowEntity blackWidow ) { - return 180.0f; - } -} diff --git a/src/main/java/com/majruszsdifficulty/renderers/GiantRenderer.java b/src/main/java/com/majruszsdifficulty/renderers/GiantRenderer.java new file mode 100644 index 000000000..9659abd13 --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/renderers/GiantRenderer.java @@ -0,0 +1,39 @@ +package com.majruszsdifficulty.renderers; + +import com.majruszsdifficulty.Registries; +import com.majruszsdifficulty.entities.GiantEntity; +import com.majruszsdifficulty.models.GiantModel; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn( Dist.CLIENT ) +public class GiantRenderer extends MobRenderer< GiantEntity, GiantModel< GiantEntity > > { + public static final ModelLayerLocation LAYER = Registries.getModelLayer( "giant" ); + public static final ResourceLocation TEXTURE = Registries.getLocation( "textures/entity/giant.png" ); + public static final float SCALE = 5.0f; + + public GiantRenderer( EntityRendererProvider.Context context ) { + super( context, new GiantModel<>( context.bakeLayer( LAYER ) ), 0.4f * SCALE ); + + this.addLayer( new ItemInHandLayer<>( this ) ); + this.addLayer( new HumanoidArmorLayer<>( this, new GiantModel<>( context.bakeLayer( ModelLayers.GIANT_INNER_ARMOR ) ), new GiantModel<>( context.bakeLayer( ModelLayers.GIANT_OUTER_ARMOR ) ) ) ); + } + + @Override + public ResourceLocation getTextureLocation( GiantEntity giant ) { + return TEXTURE; + } + + @Override + protected void scale( GiantEntity giant, PoseStack stack, float p_114777_ ) { + stack.scale( SCALE, SCALE, SCALE ); + } +} diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagManager.java b/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagManager.java index 00a46bb69..d28d56704 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagManager.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagManager.java @@ -3,15 +3,15 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.items.TreasureBagItem; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; import com.mlib.data.SerializableStructure; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDamaged; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.gamemodifiers.contexts.OnItemFished; -import com.mlib.gamemodifiers.contexts.OnPlayerTick; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnDamaged; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnItemFished; +import com.mlib.contexts.OnPlayerTick; import com.mlib.items.ItemHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -178,7 +178,7 @@ static class FishingData extends SerializableStructure { int fishedItems = 0; public FishingData() { - this.define( "TreasureBagFishingCounter", ()->this.fishedItems, x->this.fishedItems = x ); + this.defineInteger( "TreasureBagFishingCounter", ()->this.fishedItems, x->this.fishedItems = x ); } } @@ -186,7 +186,7 @@ static class RaidData extends SerializableStructure { int raidId = -1; public RaidData() { - this.define( "TreasureBagLastPillagerRaidID", ()->this.raidId, x->this.raidId = x ); + this.defineInteger( "TreasureBagLastPillagerRaidID", ()->this.raidId, x->this.raidId = x ); } } diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagProgressManager.java b/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagProgressManager.java index ed6f5f6d8..fcd1731b1 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagProgressManager.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/TreasureBagProgressManager.java @@ -1,18 +1,17 @@ package com.majruszsdifficulty.treasurebags; -import com.majruszsdifficulty.PacketHandler; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.contexts.OnTreasureBagOpened; +import com.majruszsdifficulty.contexts.OnTreasureBagOpened; import com.majruszsdifficulty.items.TreasureBagItem; import com.majruszsdifficulty.treasurebags.data.LootData; import com.majruszsdifficulty.treasurebags.data.LootProgressData; import com.majruszsdifficulty.treasurebags.data.TreasureBagData; import com.mlib.ObfuscationGetter; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; -import com.mlib.data.SerializableStructure; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.contexts.OnPlayerLogged; +import com.mlib.modhelper.AutoInstance; +import com.mlib.data.SerializableMap; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.OnPlayerLogged; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -25,13 +24,15 @@ import java.util.*; -public class TreasureBagProgressManager extends SerializableStructure { +public class TreasureBagProgressManager extends SerializableMap { static final ObfuscationGetter.Field< LootTable, List< LootPool > > POOLS = new ObfuscationGetter.Field<>( LootTable.class, "f_79109_" ); static final ObfuscationGetter.Field< LootPool, LootPoolEntryContainer[] > ENTRIES = new ObfuscationGetter.Field<>( LootPool.class, "f_79023_" ); - final Map< String, LootProgressData > lootProgressMap = new HashMap<>(); + Map< String, LootProgressData > lootProgressMap = new HashMap<>(); public TreasureBagProgressManager() { - this.define( "LootProgress", ()->this.lootProgressMap, this.lootProgressMap::putAll, LootProgressData::new ); + super( "LootProgress" ); + + this.defineCustom( ()->this.lootProgressMap, x->this.lootProgressMap = x, LootProgressData::new ); } public void clearProgress( Player player ) { @@ -96,7 +97,7 @@ private void createDefaultProgress( Player player ) { private void sendMessageTo( Player player ) { if( player instanceof ServerPlayer serverPlayer ) { - PacketHandler.CHANNEL.send( PacketDistributor.PLAYER.with( ()->serverPlayer ), this.get( serverPlayer ) ); + Registries.HELPER.sendMessage( PacketDistributor.PLAYER.with( ()->serverPlayer ), this.get( serverPlayer ) ); } } diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagResetProgressCommand.java b/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagResetProgressCommand.java index 1870496b5..ba0ff295d 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagResetProgressCommand.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagResetProgressCommand.java @@ -2,7 +2,7 @@ import com.majruszsdifficulty.Registries; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagUnlockAllCommand.java b/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagUnlockAllCommand.java index 57e499f7d..13ca7bde8 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagUnlockAllCommand.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/commands/TreasureBagUnlockAllCommand.java @@ -2,7 +2,7 @@ import com.majruszsdifficulty.Registries; import com.mlib.Utility; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/data/LootData.java b/src/main/java/com/majruszsdifficulty/treasurebags/data/LootData.java index 3a48e7cd8..de519a660 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/data/LootData.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/data/LootData.java @@ -8,9 +8,9 @@ public class LootData extends SerializableStructure { public int quality; public LootData() { - this.define( "item", ()->this.itemId, x->this.itemId = x ); - this.define( "unlocked", ()->this.isUnlocked, x->this.isUnlocked = x ); - this.define( "quality", ()->this.quality, x->this.quality = x ); + this.defineString( "item", ()->this.itemId, x->this.itemId = x ); + this.defineBoolean( "unlocked", ()->this.isUnlocked, x->this.isUnlocked = x ); + this.defineInteger( "quality", ()->this.quality, x->this.quality = x ); } public LootData( String itemId, boolean isUnlocked, int quality ) { diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/data/LootProgressData.java b/src/main/java/com/majruszsdifficulty/treasurebags/data/LootProgressData.java index 74f6c6344..1462e9408 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/data/LootProgressData.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/data/LootProgressData.java @@ -3,6 +3,7 @@ import com.majruszsdifficulty.items.TreasureBagItem; import com.majruszsdifficulty.treasurebags.TreasureBagProgressClient; import com.mlib.Utility; +import com.mlib.data.SerializableMap; import com.mlib.data.SerializableStructure; import net.minecraft.client.Minecraft; import net.minecraftforge.api.distmarker.Dist; @@ -12,11 +13,13 @@ import java.util.HashMap; import java.util.Map; -public class LootProgressData extends SerializableStructure { - public final Map< String, TreasureBagData > treasureBags = new HashMap<>(); +public class LootProgressData extends SerializableMap { + public Map< String, TreasureBagData > treasureBags = new HashMap<>(); public LootProgressData() { - this.define( "TreasureBags", ()->this.treasureBags, this.treasureBags::putAll, TreasureBagData::new ); + super( "TreasureBags" ); + + this.defineCustom( ()->this.treasureBags, x->this.treasureBags = x, TreasureBagData::new ); } public TreasureBagData get( TreasureBagItem item ) { diff --git a/src/main/java/com/majruszsdifficulty/treasurebags/data/TreasureBagData.java b/src/main/java/com/majruszsdifficulty/treasurebags/data/TreasureBagData.java index f6e944f2e..619dbcd3d 100644 --- a/src/main/java/com/majruszsdifficulty/treasurebags/data/TreasureBagData.java +++ b/src/main/java/com/majruszsdifficulty/treasurebags/data/TreasureBagData.java @@ -1,17 +1,20 @@ package com.majruszsdifficulty.treasurebags.data; +import com.mlib.data.SerializableList; import com.mlib.data.SerializableStructure; import java.util.ArrayList; import java.util.List; -public class TreasureBagData extends SerializableStructure { - public final List< LootData > lootDataList; +public class TreasureBagData extends SerializableList { + public List< LootData > lootDataList; public TreasureBagData( List< LootData > lootDataList ) { + super( "LootDataList" ); + this.lootDataList = lootDataList; - this.define( "LootDataList", ()->this.lootDataList, this.lootDataList::addAll, LootData::new ); + this.defineCustom( ()->this.lootDataList, x->this.lootDataList = x, LootData::new ); } public TreasureBagData() { diff --git a/src/main/java/com/majruszsdifficulty/triggers/BandageTrigger.java b/src/main/java/com/majruszsdifficulty/triggers/BandageTrigger.java deleted file mode 100644 index ac214ba67..000000000 --- a/src/main/java/com/majruszsdifficulty/triggers/BandageTrigger.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.majruszsdifficulty.triggers; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.items.BandageItem; -import net.minecraft.advancements.critereon.*; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.registries.ForgeRegistries; - -@Deprecated( forRemoval = true ) -public class BandageTrigger extends SimpleCriterionTrigger< BandageTrigger.Instance > { - private static final ResourceLocation ID = Registries.getLocation( "bandage_used" ); - - @Override - public ResourceLocation getId() { - return ID; - } - - @Override - public BandageTrigger.Instance createInstance( JsonObject jsonObject, EntityPredicate.Composite predicate, DeserializationContext conditions - ) { - JsonElement bandageID = jsonObject.get( "bandage_id" ); - JsonElement usedOnOneself = jsonObject.get( "used_on_oneself" ); - - return new BandageTrigger.Instance( predicate, bandageID.getAsString(), usedOnOneself.getAsBoolean() ); - } - - /** Triggers an advancement for given player. */ - public void trigger( ServerPlayer player, BandageItem item, boolean usedOnOneself ) { - this.trigger( player, instance->instance.test( item, usedOnOneself ) ); - } - - public static class Instance extends AbstractCriterionTriggerInstance { - private final String bandageID; - private final boolean usedOnOneself; - - public Instance( EntityPredicate.Composite predicate, String bandageID, boolean usedOnOneself ) { - super( BandageTrigger.ID, predicate ); - - this.bandageID = bandageID; - this.usedOnOneself = usedOnOneself; - } - - public JsonObject serializeToJson( SerializationContext conditions ) { - JsonObject jsonObject = super.serializeToJson( conditions ); - jsonObject.addProperty( "bandage_id", this.bandageID ); - jsonObject.addProperty( "used_on_oneself", this.usedOnOneself ); - - return jsonObject; - } - - public boolean test( BandageItem item, boolean usedOnOneself ) { - return usedOnOneself == this.usedOnOneself && ForgeRegistries.ITEMS.getKey( item ).toString().equals( this.bandageID ); - } - } -} diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/Config.java b/src/main/java/com/majruszsdifficulty/undeadarmy/Config.java index 6b3c4e3c0..bf8003afa 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/Config.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/Config.java @@ -6,20 +6,21 @@ import com.majruszsdifficulty.undeadarmy.data.UndeadArmyInfo; import com.majruszsdifficulty.undeadarmy.data.WaveDef; import com.majruszsdifficulty.undeadarmy.data.WavesDef; -import com.mlib.annotations.AutoInstance; import com.mlib.config.BooleanConfig; import com.mlib.config.ConfigGroup; import com.mlib.config.DoubleConfig; import com.mlib.config.IntegerConfig; +import com.mlib.contexts.OnDeath; +import com.mlib.contexts.OnLoot; +import com.mlib.contexts.OnServerTick; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; import com.mlib.data.JsonListener; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnDeath; -import com.mlib.gamemodifiers.contexts.OnLoot; -import com.mlib.gamemodifiers.contexts.OnServerTick; +import com.mlib.data.SerializableHelper; import com.mlib.levels.LevelHelper; import com.mlib.loot.LootHelper; import com.mlib.math.Range; +import com.mlib.modhelper.AutoInstance; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.TranslatableComponent; @@ -27,6 +28,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.MobType; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.storage.loot.LootContext; @@ -35,36 +37,51 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import java.util.List; +import java.util.function.Consumer; import java.util.function.Supplier; @AutoInstance public class Config { static final ResourceLocation EXTRA_LOOT_ID = Registries.getLocation( "undead_army/extra_mob_loot" ); private final BooleanConfig availability = new BooleanConfig( true ); + private final BooleanConfig naturalSpawnsOnly = new BooleanConfig( false ); + private final BooleanConfig resetParticipantsKillRequirement = new BooleanConfig( true ); private final DoubleConfig waveDuration = new DoubleConfig( 1200.0, new Range<>( 300.0, 3600.0 ) ); - private final DoubleConfig preparationDuration = new DoubleConfig( 10.0, new Range<>( 4.0, 30.0 ) ); + private final DoubleConfig preparationDuration = new DoubleConfig( 10.0, new Range<>( 1.0, 30.0 ) ); private final DoubleConfig highlightDelay = new DoubleConfig( 300.0, new Range<>( 30.0, 3600.0 ) ); private final DoubleConfig extraSizePerPlayer = new DoubleConfig( 0.5, new Range<>( 0.0, 1.0 ) ); private final IntegerConfig armyRadius = new IntegerConfig( 70, new Range<>( 35, 140 ) ); private final IntegerConfig killRequirement = new IntegerConfig( 75, new Range<>( 0, 1000 ) ); private final IntegerConfig killRequirementFirst = new IntegerConfig( 25, new Range<>( 0, 1000 ) ); + private final IntegerConfig killRequirementWarning = new IntegerConfig( 3, new Range<>( 0, 1000 ) ); private final Supplier< WavesDef > wavesDef; public Config() { ConfigGroup group = ModConfigs.registerSubgroup( Registries.Groups.UNDEAD_ARMY ) - .addConfig( this.availability.name( "is_enabled" ).comment( "Determines whether the Undead Army can spawn in any way." ) ) - .addConfig( this.waveDuration.name( "wave_duration" ).comment( "Duration that players have to defeat a single wave (in seconds)." ) ) - .addConfig( this.preparationDuration.name( "preparation_duration" ).comment( "Duration before the next wave arrives (in seconds)." ) ) - .addConfig( this.highlightDelay.name( "highlight_delay" ).comment( "Duration before all mobs will be highlighted (in seconds)." ) ) + .addConfig( this.availability.name( "is_enabled" ) + .comment( "Determines whether the Undead Army can spawn in any way." ) ) + .addConfig( this.naturalSpawnsOnly.name( "natural_spawns_only" ) + .comment( "Determines if the undead has to spawn naturally to contribute to the kill_requirement." ) ) + .addConfig( this.waveDuration.name( "wave_duration" ) + .comment( "Duration that players have to defeat a single wave (in seconds)." ) ) + .addConfig( this.preparationDuration.name( "preparation_duration" ) + .comment( "Duration before the next wave arrives (in seconds)." ) ) + .addConfig( this.highlightDelay.name( "highlight_delay" ) + .comment( "Duration before all mobs will be highlighted (in seconds)." ) ) .addConfig( this.extraSizePerPlayer.name( "extra_size_per_player" ) .comment( "Extra size ratio per each additional player on multiplayer (0.25 means ~25% bigger army per player)." ) ) - .addConfig( this.armyRadius.name( "army_radius" ).comment( "Radius, which determines how big is the raid circle (in blocks)." ) ) + .addConfig( this.armyRadius.name( "army_radius" ) + .comment( "Radius, which determines how big is the raid circle (in blocks)." ) ) .addConfig( this.killRequirement.name( "kill_requirement" ) .comment( "Required amount of killed undead to start the Undead Army. (set to 0 if you want to disable this)" ) ) .addConfig( this.killRequirementFirst.name( "kill_requirement_first" ) - .comment( "Required amount of killed undead to start the first Undead Army." ) ); + .comment( "Required amount of killed undead to start the first Undead Army." ) ) + .addConfig( this.resetParticipantsKillRequirement.name( "reset_participants_kill_requirement" ) + .comment( "If all participants of an undead army should have their kill count reset (false resets only the person who caused it)." ) ) + .addConfig( this.killRequirementWarning.name( "kill_requirement_warning" ) + .comment( "How many left to kill until the undead army warning shows up (set to 0 to disable this)." ) ); - this.wavesDef = JsonListener.add( "undead_army", Registries.getLocation( "waves" ), WavesDef.class, WavesDef::new ); + this.wavesDef = JsonListener.add( "custom", Registries.getLocation( "undead_army_waves" ), WavesDef.class, WavesDef::new ); OnServerTick.listen( data->Registries.getUndeadArmyManager().tick() ) .addCondition( Condition.isEndPhase() ) @@ -91,6 +108,10 @@ public boolean isEnabled() { return this.availability.isEnabled(); } + public boolean getNaturalSpawnsOnly() {return this.naturalSpawnsOnly.isEnabled();} + + public boolean isResetAllParticipantsKillRequirementsEnabled() {return this.resetParticipantsKillRequirement.isEnabled();} + public int getWaveDuration() { return this.waveDuration.asTicks(); } @@ -127,6 +148,8 @@ public int getSpawnRadius() { return this.getArmyRadius() - 15; // maybe one day add a config } + public int getKillRequirementWarning() {return this.killRequirementWarning.get();} + public WaveDef getWave( int waveIdx ) { List< WaveDef > waves = this.getWaves(); @@ -141,26 +164,24 @@ public List< WaveDef > getWaves() { } public UndeadArmyInfo readUndeadArmyInfo( CompoundTag tag ) { - UndeadArmyInfo info = new UndeadArmyInfo(); - info.killedUndead = this.getInitialKillsCount(); - info.read( tag ); + return SerializableHelper.read( ()->new UndeadArmyInfo( this.getInitialKillsCount() ), tag ); + } - return info; + public void modifyUndeadArmyInfo( CompoundTag tag, Consumer< UndeadArmyInfo > consumer ) { + SerializableHelper.modify( ()->new UndeadArmyInfo( this.getInitialKillsCount() ), tag, consumer ); } private void updateKilledUndead( OnDeath.Data data ) { ServerPlayer player = ( ServerPlayer )data.attacker; - CompoundTag tag = player.getPersistentData(); - UndeadArmyInfo info = this.readUndeadArmyInfo( tag ); - - ++info.killedUndead; - if( info.killedUndead >= this.getRequiredKills() && Registries.getUndeadArmyManager().tryToSpawn( player ) ) { - info.killedUndead = 0; - } else if( info.killedUndead == this.getRequiredKills() - 3 ) { - player.displayClientMessage( new TranslatableComponent( "majruszsdifficulty.undead_army.warning" ).withStyle( ChatFormatting.DARK_PURPLE ), false ); - } - info.write( tag ); + this.modifyUndeadArmyInfo( player.getPersistentData(), info->{ + ++info.killedUndead; + if( info.killedUndead >= this.getRequiredKills() && Registries.getUndeadArmyManager().tryToSpawn( player ) ) { + info.killedUndead = 0; + } else if( this.getKillRequirementWarning() > 0 && info.killedUndead == this.getRequiredKills() - this.getKillRequirementWarning() ) { + player.displayClientMessage( new TranslatableComponent( "majruszsdifficulty.undead_army.warning" ).withStyle( ChatFormatting.DARK_PURPLE ), false ); + } + } ); } private void giveExtraLoot( OnLoot.Data data ) { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmy.java b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmy.java index 78967addf..1488f24dd 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmy.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmy.java @@ -26,9 +26,9 @@ public class UndeadArmy extends SerializableStructure { public final Components components = new Components( this ); public final List< ServerPlayer > participants = new ArrayList<>(); - public final List< MobInfo > mobsLeft = new ArrayList<>(); public final ServerLevel level; public final Config config; + public List< MobInfo > mobsLeft = new ArrayList<>(); public BlockPos positionToAttack; public Direction direction; public Phase phase = new Phase(); @@ -40,17 +40,17 @@ public UndeadArmy( ServerLevel level, Config config ) { this.level = level; this.config = config; - this.define( "mobs_left", ()->this.mobsLeft, this.mobsLeft::addAll, MobInfo::new ); - this.define( "position", ()->this.positionToAttack, x->this.positionToAttack = x ); - this.define( "direction", ()->this.direction, x->this.direction = x, Direction::values ); - this.define( "phase", ()->this.phase, x->this.phase = x, Phase::new ); - this.define( "current_wave", ()->this.currentWave, x->this.currentWave = x ); + this.defineCustom( "mobs_left", ()->this.mobsLeft, this::readMobsLeft, MobInfo::new ); + this.defineBlockPos( "position", ()->this.positionToAttack, x->this.positionToAttack = x ); + this.defineEnum( "direction", ()->this.direction, x->this.direction = x, Direction::values ); + this.defineCustom( "phase", ()->this.phase, x->this.phase = x, Phase::new ); + this.defineInteger( "current_wave", ()->this.currentWave, x->this.currentWave = x ); } public void start( BlockPos positionToAttack, Direction direction ) { this.positionToAttack = positionToAttack; this.direction = direction; - this.setState( Phase.State.STARTED, Utility.secondsToTicks( 6.7 ) ); + this.setState( Phase.State.STARTED, Utility.secondsToTicks( 6.4 ) ); this.components.dispatch( IComponent::onStart ); } @@ -116,9 +116,9 @@ public boolean isPartOfWave( Entity entity ) { return this.mobsLeft.stream().anyMatch( mobInfo->mobInfo.uuid != null && mobInfo.uuid.equals( entity.getUUID() ) ); } - @Override - protected void onRead() { + private void readMobsLeft( List< MobInfo > mobsLeft ) { this.areEntitiesLoaded = false; + this.mobsLeft = mobsLeft; } private void forEachSpawnedUndead( Consumer< LivingEntity > consumer ) { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyManager.java b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyManager.java index 6f007e01d..ecda35f31 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyManager.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyManager.java @@ -10,6 +10,7 @@ import net.minecraft.world.Difficulty; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.Heightmap; @@ -21,15 +22,15 @@ public class UndeadArmyManager extends SerializableStructure { public static final UndeadArmyManager NOT_LOADED = new UndeadArmyManager(); - final List< UndeadArmy > undeadArmies = new ArrayList<>(); final ServerLevel level; final Config config; + List< UndeadArmy > undeadArmies = new ArrayList<>(); public UndeadArmyManager( ServerLevel level, Config config ) { this.level = level; this.config = config; - this.define( "undead_armies", ()->this.undeadArmies, this.undeadArmies::addAll, ()->new UndeadArmy( level, config ) ); + this.defineCustom( "undead_armies", ()->this.undeadArmies, x->this.undeadArmies = x, ()->new UndeadArmy( level, config ) ); } private UndeadArmyManager() { @@ -46,6 +47,7 @@ public boolean tryToSpawn( Player player ) { public boolean tryToSpawn( BlockPos position, Optional< Direction > direction ) { return this.config.isEnabled() && this.level.getDifficulty() != Difficulty.PEACEFUL + && !this.level.getGameRules().getBoolean( GameRules.RULE_DISABLE_RAIDS ) && this.findNearestUndeadArmy( position ) == null && this.undeadArmies.add( this.setupNewArmy( position, direction ) ); } @@ -90,7 +92,7 @@ void tick() { private UndeadArmy setupNewArmy( BlockPos position, Optional< Direction > direction ) { UndeadArmy undeadArmy = new UndeadArmy( this.level, this.config ); - undeadArmy.start( position, direction.orElse( Random.nextRandom( Direction.values() ) ) ); + undeadArmy.start( position, direction.orElse( Random.next( Direction.values() ) ) ); return undeadArmy; } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyPatrol.java b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyPatrol.java index fb20a6417..a311d2ec0 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyPatrol.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/UndeadArmyPatrol.java @@ -1,16 +1,16 @@ package com.majruszsdifficulty.undeadarmy; import com.majruszsdifficulty.Registries; -import com.majruszsdifficulty.gamemodifiers.CustomConditions; -import com.majruszsdifficulty.gamemodifiers.configs.MobGroupConfig; +import com.majruszsdifficulty.contexts.base.CustomConditions; +import com.majruszsdifficulty.config.MobGroupConfig; import com.majruszsdifficulty.gamestage.GameStage; import com.majruszsdifficulty.undeadarmy.data.ExtraLootInfo; import com.mlib.Random; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.config.ConfigGroup; -import com.mlib.gamemodifiers.Condition; -import com.mlib.gamemodifiers.ModConfigs; -import com.mlib.gamemodifiers.contexts.OnSpawned; +import com.mlib.contexts.base.Condition; +import com.mlib.contexts.base.ModConfigs; +import com.mlib.contexts.OnSpawned; import com.mlib.math.Range; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.PathfinderMob; @@ -18,13 +18,15 @@ import net.minecraft.world.entity.monster.Skeleton; import net.minecraft.world.entity.monster.Stray; import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.level.Level; import java.util.List; +import java.util.function.Supplier; @AutoInstance -public class UndeadArmyPatrol { +public class UndeadArmyPatrol implements Supplier< MobGroupConfig > { final MobGroupConfig mobGroups = new MobGroupConfig( - ()->Random.nextRandom( List.of( EntityType.ZOMBIE, EntityType.HUSK ) ), + ()->Random.next( List.of( EntityType.ZOMBIE, EntityType.HUSK, EntityType.SKELETON, EntityType.STRAY ) ), new Range<>( 2, 4 ), Registries.getLocation( "undead_army/equipment_wave_3" ), Registries.getLocation( "undead_army/equipment_wave_2" ) @@ -37,11 +39,12 @@ public UndeadArmyPatrol() { OnSpawned.listenSafe( this::spawnGroup ) .addCondition( CustomConditions.gameStageAtLeast( GameStage.NORMAL ) ) - .addCondition( Condition.chanceCRD( 0.0625, true ) ) + .addCondition( Condition.chanceCRD( 0.10, true ) ) .addCondition( CustomConditions.isNotPartOfGroup( data->data.target ) ) .addCondition( CustomConditions.isNotPartOfUndeadArmy( data->data.target ) ) .addCondition( CustomConditions.isNotNearUndeadArmy( data->data.target ) ) .addCondition( Condition.isServer() ) + .addCondition( Condition.isLevel( Level.OVERWORLD ) ) .addCondition( Condition.excludable() ) .addCondition( OnSpawned.isNotLoadedFromDisk() ) .addCondition( OnSpawned.is( Zombie.class, Skeleton.class, Husk.class, Stray.class ) ) @@ -49,6 +52,11 @@ public UndeadArmyPatrol() { .insertTo( group ); } + @Override + public MobGroupConfig get() { + return this.mobGroups; + } + private void spawnGroup( OnSpawned.Data data ) { PathfinderMob leader = ( PathfinderMob )data.target; List< PathfinderMob > mobs = this.mobGroups.spawn( leader ); diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyHighlightCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyHighlightCommand.java index 52c98f023..fe3e4a0cd 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyHighlightCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyHighlightCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.undeadarmy.commands; import com.majruszsdifficulty.undeadarmy.UndeadArmy; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; @AutoInstance public class UndeadArmyHighlightCommand extends UndeadArmyCommand { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyKillAllCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyKillAllCommand.java index b0f4bf650..3369f24ac 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyKillAllCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyKillAllCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.undeadarmy.commands; import com.majruszsdifficulty.undeadarmy.UndeadArmy; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; @AutoInstance public class UndeadArmyKillAllCommand extends UndeadArmyCommand { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyListAllCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyListAllCommand.java index a4dad793c..2809a4824 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyListAllCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyListAllCommand.java @@ -2,7 +2,7 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.undeadarmy.UndeadArmy; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mlib.text.TextHelper; diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyPersonalProgressCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyPersonalProgressCommand.java index 48e085770..ce1e220ef 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyPersonalProgressCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyPersonalProgressCommand.java @@ -3,7 +3,7 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.undeadarmy.Config; import com.majruszsdifficulty.undeadarmy.data.UndeadArmyInfo; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStartCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStartCommand.java index f21b2df04..2b77495f0 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStartCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStartCommand.java @@ -2,7 +2,7 @@ import com.majruszsdifficulty.Registries; import com.majruszsdifficulty.undeadarmy.data.Direction; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; import com.mlib.commands.Command; import com.mlib.commands.CommandData; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStopCommand.java b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStopCommand.java index 118880a08..2011b4f0c 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStopCommand.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/commands/UndeadArmyStopCommand.java @@ -1,7 +1,7 @@ package com.majruszsdifficulty.undeadarmy.commands; import com.majruszsdifficulty.undeadarmy.UndeadArmy; -import com.mlib.annotations.AutoInstance; +import com.mlib.modhelper.AutoInstance; @AutoInstance public class UndeadArmyStopCommand extends UndeadArmyCommand { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/components/AdvancementsController.java b/src/main/java/com/majruszsdifficulty/undeadarmy/components/AdvancementsController.java index 4320b9d79..8da8e6122 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/components/AdvancementsController.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/components/AdvancementsController.java @@ -7,7 +7,7 @@ record AdvancementsController( UndeadArmy undeadArmy ) implements IComponent { @Override public void onWaveFinished() { if( this.undeadArmy.isLastWave() ) { - this.undeadArmy.participants.forEach( participant->Registries.BASIC_TRIGGER.trigger( participant, "army_defeated" ) ); + this.undeadArmy.participants.forEach( participant->Registries.HELPER.triggerAchievement( participant, "army_defeated" ) ); } } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/components/Components.java b/src/main/java/com/majruszsdifficulty/undeadarmy/components/Components.java index 4909b9b1a..0a2d92e88 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/components/Components.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/components/Components.java @@ -14,6 +14,7 @@ public Components( UndeadArmy undeadArmy ) { this.add( ParticipantsUpdater::new ); this.add( BossUpdater::new ); this.add( MobSpawner::new ); + this.add( LightningSpawner::new ); this.add( WaveController::new ); this.add( WeatherController::new ); this.add( MobHighlighter::new ); diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/components/LightningSpawner.java b/src/main/java/com/majruszsdifficulty/undeadarmy/components/LightningSpawner.java new file mode 100644 index 000000000..18f09e5fe --- /dev/null +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/components/LightningSpawner.java @@ -0,0 +1,34 @@ +package com.majruszsdifficulty.undeadarmy.components; + +import com.majruszsdifficulty.undeadarmy.UndeadArmy; +import com.majruszsdifficulty.undeadarmy.data.MobInfo; +import com.majruszsdifficulty.undeadarmy.data.Phase; +import com.mlib.math.AnyPos; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LightningBolt; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +record LightningSpawner( UndeadArmy undeadArmy ) implements IComponent { + @Override + public void onStateChanged() { + if( this.undeadArmy.phase.state == Phase.State.WAVE_PREPARING ) { + this.spawnLightningStrikes(); + } + } + + private void spawnLightningStrikes() { + List< MobInfo > mobsLeft = new ArrayList<>( this.undeadArmy.mobsLeft ); + Collections.shuffle( mobsLeft ); + for( int idx = 0; idx < 3 && idx < mobsLeft.size(); ++idx ) { + LightningBolt lightningBolt = EntityType.LIGHTNING_BOLT.create( this.undeadArmy.level ); + if( lightningBolt != null ) { + lightningBolt.moveTo( AnyPos.from( mobsLeft.get( idx ).position ).center().vec3() ); + lightningBolt.setVisualOnly( true ); + this.undeadArmy.level.addFreshEntity( lightningBolt ); + } + } + } +} diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/components/MobSpawner.java b/src/main/java/com/majruszsdifficulty/undeadarmy/components/MobSpawner.java index 11d715bee..24c668718 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/components/MobSpawner.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/components/MobSpawner.java @@ -59,7 +59,7 @@ private MobInfo getNextMobToSpawn() { private void spawnMob( MobInfo mobInfo ) { Vec3 position = AnyPos.from( mobInfo.position ).add( 0.0, 0.25, 0.0 ).vec3(); - Entity entity = EntityHelper.spawn( mobInfo.type, this.undeadArmy.level, position ); + Entity entity = EntityHelper.createSpawner( mobInfo.type, this.undeadArmy.level ).position( position ).spawn(); if( !( entity instanceof PathfinderMob mob ) ) { this.undeadArmy.mobsLeft.remove( mobInfo ); // something went wrong, mob could not spawn, and we do not want to block the Undead Army return; @@ -77,7 +77,7 @@ private void generateMobList() { float sizeMultiplier = this.undeadArmy.config.getSizeMultiplier( this.undeadArmy.participants.size() ); WaveDef waveDef = this.undeadArmy.config.getWave( this.undeadArmy.currentWave + 1 ); waveDef.mobDefs.forEach( mobDef->{ - int totalCount = Random.roundRandomly( mobDef.count * sizeMultiplier ); + int totalCount = Random.round( mobDef.count * sizeMultiplier ); for( int i = 0; i < totalCount; ++i ) { this.addToPendingMobs( mobDef, false ); } @@ -115,7 +115,7 @@ private Vec3 buildOffset() { int y = 0; int z = direction.x != 0 ? 24 : 8; - return AnyPos.from( direction.x * spawnRadius, 0, direction.z * spawnRadius ).add( Random.getRandomVector( -x, x, -y, y, -z, z ) ).vec3(); + return AnyPos.from( direction.x * spawnRadius, 0, direction.z * spawnRadius ).add( Random.nextVector( -x, x, -y, y, -z, z ) ).vec3(); } private void tryToLoadEquipment( PathfinderMob mob, MobInfo mobInfo ) { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/components/RewardsController.java b/src/main/java/com/majruszsdifficulty/undeadarmy/components/RewardsController.java index 4445e0b31..4427758aa 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/components/RewardsController.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/components/RewardsController.java @@ -13,6 +13,9 @@ public void onWaveFinished() { this.giveExperienceReward(); if( this.undeadArmy.isLastWave() ) { this.giveTreasureReward(); + if( this.undeadArmy.config.isResetAllParticipantsKillRequirementsEnabled() ) { + this.resetAllKillRequirements(); + } } } @@ -30,4 +33,10 @@ private void giveTreasureReward() { ItemHelper.giveItemStackToPlayer( new ItemStack( Registries.UNDEAD_ARMY_TREASURE_BAG.get() ), participant, this.undeadArmy.level ); } ); } + + private void resetAllKillRequirements() { + this.undeadArmy.participants.forEach( participant->{ + this.undeadArmy.config.modifyUndeadArmyInfo( participant.getPersistentData(), info->info.killedUndead = 0 ); + } ); + } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/ExtraLootInfo.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/ExtraLootInfo.java index 10175c73b..a7e05e4db 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/ExtraLootInfo.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/ExtraLootInfo.java @@ -1,5 +1,6 @@ package com.majruszsdifficulty.undeadarmy.data; +import com.mlib.data.SerializableHelper; import com.mlib.data.SerializableStructure; import net.minecraft.world.entity.Entity; @@ -7,21 +8,16 @@ public class ExtraLootInfo extends SerializableStructure { public boolean hasExtraLoot = false; public static void addExtraLootTag( Entity entity ) { - ExtraLootInfo extraLootInfo = new ExtraLootInfo(); - extraLootInfo.hasExtraLoot = true; - extraLootInfo.write( entity.getPersistentData() ); + SerializableHelper.modify( ExtraLootInfo::new, entity.getPersistentData(), info->info.hasExtraLoot = true ); } public static boolean hasExtraLootTag( Entity entity ) { - ExtraLootInfo extraLootInfo = new ExtraLootInfo(); - extraLootInfo.read( entity.getPersistentData() ); - - return extraLootInfo.hasExtraLoot; + return SerializableHelper.read( ExtraLootInfo::new, entity.getPersistentData() ).hasExtraLoot; } public ExtraLootInfo() { super( "UndeadArmy" ); - this.define( "has_extra_loot", ()->this.hasExtraLoot, x->this.hasExtraLoot = x ); + this.defineBoolean( "has_extra_loot", ()->this.hasExtraLoot, x->this.hasExtraLoot = x ); } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobDef.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobDef.java index bd9c97b67..692d87233 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobDef.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobDef.java @@ -10,8 +10,8 @@ public class MobDef extends SerializableStructure { public ResourceLocation equipment; public MobDef() { - this.define( "type", ()->this.type, x->this.type = x ); - this.define( "count", ()->this.count, x->this.count = x ); - this.define( "equipment", ()->this.equipment, x->this.equipment = x ); + this.defineEntityType( "type", ()->this.type, x->this.type = x ); + this.defineInteger( "count", ()->this.count, x->this.count = x ); + this.defineLocation( "equipment", ()->this.equipment, x->this.equipment = x ); } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobInfo.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobInfo.java index 07113be0f..660be0a11 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobInfo.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/MobInfo.java @@ -19,11 +19,11 @@ public class MobInfo extends SerializableStructure { public UUID uuid = null; public MobInfo() { - this.define( "type", ()->this.type, x->this.type = x ); - this.define( "equipment", ()->this.equipment, x->this.equipment = x ); - this.define( "position", ()->this.position, x->this.position = x ); - this.define( "is_boss", ()->this.isBoss, x->this.isBoss = x ); - this.define( "uuid", ()->this.uuid, x->this.uuid = x ); + this.defineEntityType( "type", ()->this.type, x->this.type = x ); + this.defineLocation( "equipment", ()->this.equipment, x->this.equipment = x ); + this.defineBlockPos( "position", ()->this.position, x->this.position = x ); + this.defineBoolean( "is_boss", ()->this.isBoss, x->this.isBoss = x ); + this.defineUUID( "uuid", ()->this.uuid, x->this.uuid = x ); } public MobInfo( MobDef def, BlockPos position, boolean isBoss ) { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/Phase.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/Phase.java index 2ca6776bf..c30f77e6e 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/Phase.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/Phase.java @@ -10,10 +10,10 @@ public class Phase extends SerializableStructure { public int healthTotal = 0; public Phase() { - this.define( "state", ()->this.state, x->this.state = x, State::values ); - this.define( "ticks_left", ()->this.ticksLeft, x->this.ticksLeft = x ); - this.define( "ticks_total", ()->this.ticksTotal, x->this.ticksTotal = x ); - this.define( "health_total", ()->this.healthTotal, x->this.healthTotal = x ); + this.defineEnum( "state", ()->this.state, x->this.state = x, State::values ); + this.defineInteger( "ticks_left", ()->this.ticksLeft, x->this.ticksLeft = x ); + this.defineInteger( "ticks_total", ()->this.ticksTotal, x->this.ticksTotal = x ); + this.defineInteger( "health_total", ()->this.healthTotal, x->this.healthTotal = x ); } public float getRatio() { diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/UndeadArmyInfo.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/UndeadArmyInfo.java index 4b9ba680b..33e587e3a 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/UndeadArmyInfo.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/UndeadArmyInfo.java @@ -3,11 +3,13 @@ import com.mlib.data.SerializableStructure; public class UndeadArmyInfo extends SerializableStructure { - public int killedUndead = 0; + public int killedUndead; - public UndeadArmyInfo() { + public UndeadArmyInfo( int initialKillsCount ) { super( "UndeadArmy" ); - this.define( "killed_undead", ()->this.killedUndead, x->this.killedUndead = x ); + this.killedUndead = initialKillsCount; + + this.defineInteger( "killed_undead", ()->this.killedUndead, x->this.killedUndead = x ); } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/WaveDef.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/WaveDef.java index b515bc884..3db897cb1 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/WaveDef.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/WaveDef.java @@ -7,15 +7,15 @@ import java.util.List; public class WaveDef extends SerializableStructure { - public final List< MobDef > mobDefs = new ArrayList<>(); + public List< MobDef > mobDefs = new ArrayList<>(); public MobDef boss; public int experience = 0; public GameStage gameStage = GameStage.NORMAL; public WaveDef() { - this.define( "mobs", ()->this.mobDefs, this.mobDefs::addAll, MobDef::new ); - this.define( "boss", ()->this.boss, x->this.boss = x, MobDef::new ); - this.define( "exp", ()->this.experience, x->this.experience = x ); - this.define( "game_stage", ()->this.gameStage, x->this.gameStage = x, GameStage::values ); + this.defineCustom( "mobs", ()->this.mobDefs, x->this.mobDefs = x, MobDef::new ); + this.defineCustom( "boss", ()->this.boss, x->this.boss = x, MobDef::new ); + this.defineInteger( "exp", ()->this.experience, x->this.experience = x ); + this.defineEnum( "game_stage", ()->this.gameStage, x->this.gameStage = x, GameStage::values ); } } diff --git a/src/main/java/com/majruszsdifficulty/undeadarmy/data/WavesDef.java b/src/main/java/com/majruszsdifficulty/undeadarmy/data/WavesDef.java index 166b77edc..c4ffa4ccb 100644 --- a/src/main/java/com/majruszsdifficulty/undeadarmy/data/WavesDef.java +++ b/src/main/java/com/majruszsdifficulty/undeadarmy/data/WavesDef.java @@ -1,16 +1,16 @@ package com.majruszsdifficulty.undeadarmy.data; -import com.mlib.data.SerializableStructure; +import com.mlib.data.SerializableList; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; -public class WavesDef extends SerializableStructure { - public final List< WaveDef > waveDefs = new ArrayList<>(); +public class WavesDef extends SerializableList { + public List< WaveDef > waveDefs = new ArrayList<>(); public WavesDef() { - this.define( null, ()->this.waveDefs, this.waveDefs::addAll, WaveDef::new ); + this.defineCustom( ()->this.waveDefs, x->this.waveDefs = x, WaveDef::new ); } public Stream< WaveDef > stream() { diff --git a/src/main/resources/assets/majruszsdifficulty/lang/de_de.json b/src/main/resources/assets/majruszsdifficulty/lang/de_de.json new file mode 100644 index 000000000..b699ccbae --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/lang/de_de.json @@ -0,0 +1,191 @@ +{ + "entity.majruszsdifficulty.creeperling": "Creeperling", + "entity.majruszsdifficulty.tank": "Tank", + "entity.majruszsdifficulty.cursed_armor": "Verfluchte Rüstung", + "entity.majruszsdifficulty.cerberus": "Zerberus", + "entity.majruszsdifficulty.black_widow": "Schwarze Witwe", + "effect.majruszsdifficulty.bleeding": "Blutung", + "effect.majruszsdifficulty.bleeding.description": "Verursacht mit der Zeit tödlichen Schaden. Wird hauptsächlich durch scharfe Werkzeuge, Zombies und Spinnen verursacht. Hat keinen Einfluss auf Untote.", + "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s Chance, um Blutung %2$s zu verursachen", + "effect.majruszsdifficulty.bleeding.armor_tooltip": "x%1$s Chance auf Blutung", + "effect.majruszsdifficulty.bleeding_immunity": "Immunität gegen Blutung", + "effect.majruszsdifficulty.bleeding_immunity.description": "Macht den Spieler immun gegen Blutungen.", + "itemGroup.majruszsdifficulty.primary": "Majrusz's Progressive Schwierigkeit", + "itemGroup.majruszsdifficulty.treasure_bags": "Schatztaschen", + "item.majruszsdifficulty.illusioner_spawn_egg": "Illusionist-Spawn-Ei", + "item.majruszsdifficulty.creeperling_spawn_egg": "Creeperling-Spawn-Ei", + "item.majruszsdifficulty.tank_spawn_egg": "Tank-Spawn-Ei", + "item.majruszsdifficulty.black_widow_spawn_egg": "Schwarze Witwe-Spawn-Ei", + "item.majruszsdifficulty.cursed_armor_spawn_egg": "Verfluchte Rüstung-Spawn-Ei", + "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "Verfluchte Rüstungen können in diesen Truhen gefunden werden:", + "item.majruszsdifficulty.cerberus_spawn_egg": "Zerberus-Spawn-Ei", + "item.majruszsdifficulty.undead_battle_standard": "Standard für Untote-Kämpfe", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "Beschwört die Armee der Untoten.", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "Die Armee kann nur in der", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip3": "Oberwelt beschworen werden!", + "item.majruszsdifficulty.undead_army_treasure_bag": "Undead Army Schatztasche", + "item.majruszsdifficulty.elder_guardian_treasure_bag": "Elder Guardian-Schatztasche", + "item.majruszsdifficulty.wither_treasure_bag": "Wither-Schatztasche", + "item.majruszsdifficulty.ender_dragon_treasure_bag": "Enderdrache-Schatztasche", + "item.majruszsdifficulty.fishing_treasure_bag": "Angler-Schatztasche", + "item.majruszsdifficulty.pillager_treasure_bag": "Überfall-Schatztasche", + "item.majruszsdifficulty.warden_treasure_bag": "Wärter-Schatztasche", + "item.majruszsdifficulty.bandage": "Verband", + "item.majruszsdifficulty.bandage.effect": "Stoppt Blutungen", + "item.majruszsdifficulty.enderium_shard": "Enderium-Scherbe", + "item.majruszsdifficulty.enderium_ingot": "Enderiumklumpen", + "item.majruszsdifficulty.enderium_sword": "Enderiumschwert", + "item.majruszsdifficulty.enderium_shovel": "Enderiumschaufel", + "item.majruszsdifficulty.enderium_pickaxe": "Enderiumspitzhacke", + "item.majruszsdifficulty.enderium_axe": "Enderiumaxt", + "item.majruszsdifficulty.enderium_hoe": "Enderiumhacke", + "item.majruszsdifficulty.enderium_hoe.effect": " Vergrößert die bearbeitete Fläche", + "item.majruszsdifficulty.enderium_helmet": "Enderiumhelm", + "item.majruszsdifficulty.enderium_chestplate": "Enderiumharnisch", + "item.majruszsdifficulty.enderium_leggings": "Enderiumbeinschutz", + "item.majruszsdifficulty.enderium_boots": "Enderiumstiefel", + "item.majruszsdifficulty.cloth": "Stoff", + "item.majruszsdifficulty.tattered_helmet": "Zerrissene Kappe", + "item.majruszsdifficulty.tattered_chestplate": "Zerrissene Tunika", + "item.majruszsdifficulty.tattered_leggings": "Zerrissene Hose", + "item.majruszsdifficulty.tattered_boots": "Zerrissene Stiefel", + "item.majruszsdifficulty.wither_sword": "Witherschwert", + "item.majruszsdifficulty.wither_sword.effect": " %1$s Chance, um Wither %2$s zu verursachen", + "item.majruszsdifficulty.enderium_shard_locator": "Enderiumscherben-Lokalisator", + "item.majruszsdifficulty.ender_pouch": "Ender-Beutel", + "item.majruszsdifficulty.golden_bandage": "Goldener Verband", + "item.majruszsdifficulty.recall_potion": "Rückruftrank", + "item.majruszsdifficulty.recall_potion.effect": "Teleportiert zurück nach Hause", + "item.majruszsdifficulty.bad_omen_potion": "Drohendes Unheil-Trank", + "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s Drohendes Unheil-Stufe", + "item.majruszsdifficulty.cerberus_fang": "Zerberus-Zahn", + "item.majruszsdifficulty.soul_jar": "Seelenkrug", + "item.majruszsdifficulty.soul_jar.item_tooltip1": "Enthält %1$s zufällige Seelen.", + "item.majruszsdifficulty.soul_jar.item_tooltip2": "Rechtsklick zum Ziehen von Seelen...", + "item.majruszsdifficulty.soul_jar.item_tooltip3": "Enthält Seelen:", + "item.majruszsdifficulty.soul_jar.smite": "%1$s Angriffsschaden gegen Untote", + "item.majruszsdifficulty.soul_jar.move": "%1$s Bewegungsgeschwindigkeit", + "item.majruszsdifficulty.soul_jar.range": "%1$s Reichweite", + "item.majruszsdifficulty.soul_jar.armor": "%1$s Rüstung", + "item.majruszsdifficulty.soul_jar.mine": "%1$s Abbaugeschwindigkeit", + "item.majruszsdifficulty.soul_jar.luck": "%1$s Glück", + "item.majruszsdifficulty.soul_jar.swim": "%1$s Schwimm-Geschwindigkeit", + "entity.minecraft.sniffer": "Schnüffler", + "item.minecraft.tipped_arrow.effect.wither": "Pfeil der Ausdörrung", + "item.minecraft.potion.effect.wither": "Trank der Ausdörrung", + "item.minecraft.splash_potion.effect.wither": "Wurftrank der Ausdörrung", + "item.minecraft.lingering_potion.effect.wither": "Verweiltrank der Ausdörrung", + "block.majruszsdifficulty.enderium_shard_ore": "Enderiumscherbenerz", + "block.majruszsdifficulty.enderium_block": "Enderiumblock", + "block.majruszsdifficulty.infested_end_stone": "Befallener Endstein", + "commands.gamestage.changed": "Die Spielphase wurde geändert in %s.", + "commands.gamestage.cannot_change": "Die Spielphase ist bereits %s!", + "commands.gamestage.current": "Die aktuelle Spielphase ist %s.", + "commands.undeadarmy.finished": "Eine Untoten-Armee wurde gestoppt an Position: %s", + "commands.undeadarmy.missing": "Es gibt keine Untoten-Armee an Position: %s", + "commands.undeadarmy.started": "Eine Untoten-Armee wurde an folgender Position erzeugt: %s", + "commands.undeadarmy.cannot_start": "Eine Untoten-Armee konnte an folgender Position nicht erzeugt werden: %s", + "commands.undeadarmy.killed": "Alle Einheiten der Untoten-Armee wurden getötet an Position: %s", + "commands.undeadarmy.highlighted": "Alle Einheiten der Untoten-Armee wurden hervorgehoben an Position: %s", + "commands.undeadarmy.list": "Liste aller aktiven Untoten-Armeen:", + "commands.undeadarmy.list_empty": "Es ist keine Untoten-Armee im Einsatz.", + "commands.undeadarmy.progress": "%1$s muss %2$s weitere Untote töten, um die Untoten-Armee zu starten.", + "commands.treasurebag.reset": "Der Fortschritt aller Schatztaschen wurde für %1$s neu gestartet.", + "commands.treasurebag.unlockall": "Der Fortschritt aller Sachatztaschen wurde für %1$s maximiert.", + "commands.clampedregionaldifficulty": "Die begrenzte regionale Schwierigkeit bei %1$s ist %2$s.", + "majruszsdifficulty.stages.normal": "Normaler Modus", + "majruszsdifficulty.stages.expert": "Experten-Modus", + "majruszsdifficulty.stages.master": "Meister-Modus", + "majruszsdifficulty.on_expert_mode_start": "Die uralten Geister des Lichts und der Dunkelheit wurden freigelassen", + "majruszsdifficulty.on_master_mode_start": "Das drohende Unheil naht...", + "majruszsdifficulty.treasure_bag.item_tooltip": "Rechtsklick zum Öffnen der Tasche.", + "majruszsdifficulty.treasure_bag.hint_tooltip": "SHIFT drücken, um mögliche Drops anzuzeigen...", + "majruszsdifficulty.treasure_bag.list_tooltip": "Mögliche Drops (%1$s/%2$s)", + "majruszsdifficulty.treasure_bag.new_items": "Du hast neue Gegenstände in %1$s gefunden!", + "majruszsdifficulty.undead_army.title": "Untoten-Armee", + "majruszsdifficulty.undead_army.wave": "(Welle %1$s)", + "majruszsdifficulty.undead_army.victory": "Sieg!", + "majruszsdifficulty.undead_army.failed": "Untoten-Armee hat gewonnen", + "majruszsdifficulty.undead_army.between_waves": "Welle besiegt", + "majruszsdifficulty.undead_army.approaching": "Eine Untoten-Armee nähert sich von %1$s!", + "majruszsdifficulty.undead_army.approached": "Eine Untoten-Armee ist eingetroffen!", + "majruszsdifficulty.undead_army.warning": "In der Ferne ertönen Trommeln...", + "majruszsdifficulty.undead_army.on_expert": "Die Untoten-Armee wurde von Kräften aus dem Nether gestärkt.", + "majruszsdifficulty.undead_army.west": "Westen", + "majruszsdifficulty.undead_army.east": "Osten", + "majruszsdifficulty.undead_army.north": "Norden", + "majruszsdifficulty.undead_army.south": "Süden", + "majruszsdifficulty.subtitle.undead_army.approaching": "Untoten-Armee nähert sich", + "majruszsdifficulty.subtitle.undead_army.wave_started": "Welle gestartet", + "majruszsdifficulty.sets.enderium.name": "Set des Ends", + "majruszsdifficulty.sets.enderium.bonus_1": "Macht alle Enderman weniger feindselig.", + "majruszsdifficulty.sets.enderium.bonus_2": "Gibt eine weitere Stufe Plünderung im End.", + "majruszsdifficulty.sets.enderium.bonus_3": "Ersetzt %1$s zufällige Teleportationen durch einen zufälligen Trank-Effekt.", + "majruszsdifficulty.sets.enderium.bonus_4": "Verhindert das Sterben in der Leere.", + "majruszsdifficulty.sets.undead.name": "Untoten-Set", + "majruszsdifficulty.sets.undead.bonus_1": "Entfernt %1$s Effekt von %2$s.", + "majruszsdifficulty.sets.undead.bonus_2": "Doppelte Hungerpunkte durch %1$s wiederhergestellt.", + "majruszsdifficulty.sets.undead.bonus_3": "Erhöht Rüsung um %1$s.", + "majruszsdifficulty.sets.undead.bonus_4": "Verdoppelt die angewendeten Boosts um %1$s.", + "majruszsdifficulty.smithing.enderium.upgrade": "Enderiumaufwertung", + "majruszsdifficulty.smithing.enderium.applies_to": "Netheritausrüstung", + "majruszsdifficulty.smithing.enderium.ingredients": "Enderiumbarren", + "majruszsdifficulty.smithing.enderium.base_slot": "Netheritrüstung, -waffe oder -werkzeug hinzufügen", + "majruszsdifficulty.smithing.enderium.additions_slot": "Enderiumbarren hinzufügen", + "death.attack.bleeding": "%1$s ist verblutet", + "death.attack.bleeding.player": "%1$s ist an Verletzungen verblutet, die von %2$s verursacht wurden", + "advancements.progressive_difficulty.root.title": "Normaler Modus", + "advancements.progressive_difficulty.root.description": "Alles scheint so friedlich", + "advancements.progressive_difficulty.expert_mode.title": "Experten-Modus", + "advancements.progressive_difficulty.master_mode.title": "Meister-Modus", + "advancements.progressive_difficulty.bleeding.title": "Ist das... Blut?", + "advancements.progressive_difficulty.bleeding.description": "Zum ersten Mal bluten", + "advancements.progressive_difficulty.bleeding_inflicted.title": "Lass sie bluten", + "advancements.progressive_difficulty.bleeding_inflicted.description": "Lasse jeden Mob bluten", + "advancements.progressive_difficulty.bleeding_cactus.title": "Autsch!", + "advancements.progressive_difficulty.bleeding_cactus.description": "Berühre einen Kaktus und blute", + "advancements.progressive_difficulty.bleeding_healed.title": "'Es ist nur ein Kratzer!", + "advancements.progressive_difficulty.bleeding_healed.description": "Nutze einen Verband, um eine Blutung zu stoppen", + "advancements.progressive_difficulty.bleeding_healed_other.title": "Für einen Freund in Not", + "advancements.progressive_difficulty.bleeding_healed_other.description": "Nutze einen goldenen Verband für jemand anderen", + "advancements.progressive_difficulty.kill_yourself.title": "'Töte dich selbst' hat eine neue Bedeutung erhalten", + "advancements.progressive_difficulty.kill_yourself.description": "Besiege die untote Version von dir selbst", + "advancements.progressive_difficulty.undead_army.title": "Gespenstisch gruselige Armee", + "advancements.progressive_difficulty.undead_army.description": "Besiege die Untoten-Armee", + "advancements.progressive_difficulty.creeperling.title": "Was war das!?", + "advancements.progressive_difficulty.creeperling.description": "Begegne einem Creeperling", + "advancements.progressive_difficulty.enderman_teleport_attack.title": "Ich bin Verwirrung", + "advancements.progressive_difficulty.enderman_teleport_attack.description": "Werde vom Enderman teleportiert", + "advancements.progressive_difficulty.enderium_shard.title": "Seltsame Scherben", + "advancements.progressive_difficulty.enderium_shard.description": "Enderium-Scherbe erhalten", + "advancements.progressive_difficulty.enderium_ingot.title": "Misteriöser Barren", + "advancements.progressive_difficulty.enderium_ingot.description": "Enderiumbarren erhalten", + "advancements.progressive_difficulty.fishing_treasure_bag.title": "Gelegenheitsangler", + "advancements.progressive_difficulty.fishing_treasure_bag.description": "Öffne die erste Angler-Schatztasche", + "advancements.progressive_difficulty.fishing_treasure_bag_16.title": "Fischerei-Fanatiker", + "advancements.progressive_difficulty.fishing_treasure_bag_16.description": "Öffne sie sechzente Angler-Schatztasche", + "advancements.progressive_difficulty.undead_army_treasure_bag.title": "Friedhof", + "advancements.progressive_difficulty.undead_army_treasure_bag.description": "Öffne die erste Untoten-Armee-Schatztasche", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.title": "Haufen von Knochen", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.description": "Öffne die sechzente Untoten-Armee-Schatztasche", + "advancements.progressive_difficulty.pillager_treasure_bag.title": "Preis für einen Helden", + "advancements.progressive_difficulty.pillager_treasure_bag.description": "Öffne die erste Überfall-Schatztasche", + "advancements.progressive_difficulty.pillager_treasure_bag_16.title": "Der Wächter", + "advancements.progressive_difficulty.pillager_treasure_bag_16.description": "Öffne die sechzente Überfall-Schatztasche", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.title": "Stachelige Tasche", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.description": "Öffne die erste Schatztasche des großen Wächters", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.title": "Ozeanräuber", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.description": "Öffne die sechzente Schatztasche des großen Wächters", + "advancements.progressive_difficulty.wither_treasure_bag.title": "Verdorrte Schätze", + "advancements.progressive_difficulty.wither_treasure_bag.description": "Öffne die erste Wither-Schatztasche", + "advancements.progressive_difficulty.wither_treasure_bag_16.title": "Herr des Nethers", + "advancements.progressive_difficulty.wither_treasure_bag_16.description": "Öffne die sechzente Wither-Schatztasche", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.title": "Nicht irdische Schätze", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.description": "Öffne die erste Enderdrache-Schatztasche", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.title": "Das Ende vom Ende?", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.description": "Öffne die sechzente Enderdrache-Schatztasche", + "advancements.progressive_difficulty.warden_treasure_bag.title": "Verbotene Tasche", + "advancements.progressive_difficulty.warden_treasure_bag.description": "Öffne die erste Wärter-Schatztasche", + "advancements.progressive_difficulty.warden_treasure_bag_16.title": "Meister der Stille", + "advancements.progressive_difficulty.warden_treasure_bag_16.description": "Öffne die sechzente Wärter-Schatztasche" +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/lang/en_us.json b/src/main/resources/assets/majruszsdifficulty/lang/en_us.json index 9b63cd144..d1c59ab3b 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/en_us.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/en_us.json @@ -3,22 +3,24 @@ "entity.majruszsdifficulty.tank": "Tank", "entity.majruszsdifficulty.cursed_armor": "Cursed Armor", "entity.majruszsdifficulty.cerberus": "Cerberus", - "entity.majruszsdifficulty.black_widow": "Black Widow", + "entity.majruszsdifficulty.giant": "Giant", "effect.majruszsdifficulty.bleeding": "Bleeding", "effect.majruszsdifficulty.bleeding.description": "Inflicts lethal damage over time. It is mainly caused by sharp tools, zombies and spiders. Does not affect undead.", "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s Chance To Inflict Bleeding %2$s", "effect.majruszsdifficulty.bleeding.armor_tooltip": "x%1$s Chance To Bleed", "effect.majruszsdifficulty.bleeding_immunity": "Bleeding Immunity", "effect.majruszsdifficulty.bleeding_immunity.description": "Makes the player immune to Bleeding.", + "effect.majruszsdifficulty.glass_regeneration": "Glass Regeneration", + "effect.majruszsdifficulty.glass_regeneration.description": "Weaker version of Regeneration that can be interrupted by taking damage.", "itemGroup.majruszsdifficulty.primary": "Majrusz's Progressive Difficulty", "itemGroup.majruszsdifficulty.treasure_bags": "Treasure Bags", "item.majruszsdifficulty.illusioner_spawn_egg": "Illusioner Spawn Egg", "item.majruszsdifficulty.creeperling_spawn_egg": "Creeperling Spawn Egg", "item.majruszsdifficulty.tank_spawn_egg": "Tank Spawn Egg", - "item.majruszsdifficulty.black_widow_spawn_egg": "Black Widow Spawn Egg", "item.majruszsdifficulty.cursed_armor_spawn_egg": "Cursed Armor Spawn Egg", "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "Cursed Armor can be found in these chests:", "item.majruszsdifficulty.cerberus_spawn_egg": "Cerberus Spawn Egg", + "item.majruszsdifficulty.giant_spawn_egg": "Giant Spawn Egg", "item.majruszsdifficulty.undead_battle_standard": "Undead Battle Standard", "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "Summons the Undead Army.", "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "The army can only be", @@ -56,8 +58,7 @@ "item.majruszsdifficulty.golden_bandage": "Golden Bandage", "item.majruszsdifficulty.recall_potion": "Recall Potion", "item.majruszsdifficulty.recall_potion.effect": "Teleports Back Home", - "item.majruszsdifficulty.bad_omen_potion": "Bad Omen Potion", - "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s Bad Omen Level", + "item.majruszsdifficulty.evoker_fang_scroll": "Scroll of Evoker Fangs", "item.majruszsdifficulty.cerberus_fang": "Cerberus Fang", "item.majruszsdifficulty.soul_jar": "Soul Jar", "item.majruszsdifficulty.soul_jar.item_tooltip1": "Contains %1$s random souls inside.", @@ -70,6 +71,7 @@ "item.majruszsdifficulty.soul_jar.mine": "%1$s Mine Speed", "item.majruszsdifficulty.soul_jar.luck": "%1$s Luck", "item.majruszsdifficulty.soul_jar.swim": "%1$s Swim Speed", + "item.majruszsdifficulty.sonic_boom_scroll": "Scroll of Sonic Boom", "entity.minecraft.sniffer": "Sniffer", "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", "item.minecraft.potion.effect.wither": "Potion of Wither", @@ -111,6 +113,7 @@ "majruszsdifficulty.undead_army.approached": "An Undead Army has arrived!", "majruszsdifficulty.undead_army.warning": "Drums begin to echo in the distance...", "majruszsdifficulty.undead_army.on_expert": "The Undead Army has been empowered by Nether forces", + "majruszsdifficulty.undead_army.on_master": "The Undead Army has been empowered by gigantic forces", "majruszsdifficulty.undead_army.west": "west", "majruszsdifficulty.undead_army.east": "east", "majruszsdifficulty.undead_army.north": "north", @@ -127,6 +130,8 @@ "majruszsdifficulty.sets.undead.bonus_2": "Doubles hunger points restored by %1$s.", "majruszsdifficulty.sets.undead.bonus_3": "Increases armor by %1$s.", "majruszsdifficulty.sets.undead.bonus_4": "Doubles boosts applied by %1$s.", + "majruszsdifficulty.scrolls.attack_damage": " %1$s Attack Damage", + "majruszsdifficulty.scrolls.attack_range": " %1$s Attack Range", "death.attack.bleeding": "%1$s bled to death", "death.attack.bleeding.player": "%1$s bled to death from injuries caused by %2$s", "advancements.progressive_difficulty.root.title": "Normal Mode", @@ -135,7 +140,7 @@ "advancements.progressive_difficulty.master_mode.title": "Master Mode", "advancements.progressive_difficulty.bleeding.title": "Is this... blood?", "advancements.progressive_difficulty.bleeding.description": "Bleed for the first time", - "advancements.progressive_difficulty.bleeding_inflicted.title": "Make'em Bleed", + "advancements.progressive_difficulty.bleeding_inflicted.title": "Bloodthirsty", "advancements.progressive_difficulty.bleeding_inflicted.description": "Make any mob bleed", "advancements.progressive_difficulty.bleeding_cactus.title": "Ouch!", "advancements.progressive_difficulty.bleeding_cactus.description": "Touch a cactus and bleed", @@ -149,7 +154,7 @@ "advancements.progressive_difficulty.undead_army.description": "Defeat the Undead Army", "advancements.progressive_difficulty.creeperling.title": "What Was That!?", "advancements.progressive_difficulty.creeperling.description": "Encounter a Creeperling", - "advancements.progressive_difficulty.enderman_teleport_attack.title": "I am Confusion", + "advancements.progressive_difficulty.enderman_teleport_attack.title": "I Am Confusion", "advancements.progressive_difficulty.enderman_teleport_attack.description": "Get teleported by the Enderman", "advancements.progressive_difficulty.enderium_shard.title": "Strange Shards", "advancements.progressive_difficulty.enderium_shard.description": "Acquire Enderium Shard", diff --git a/src/main/resources/assets/majruszsdifficulty/lang/es_es.json b/src/main/resources/assets/majruszsdifficulty/lang/es_es.json index 65d1e28d1..176e09e78 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/es_es.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/es_es.json @@ -3,7 +3,6 @@ "entity.majruszsdifficulty.tank": "Tanque", "entity.majruszsdifficulty.cursed_armor": "Armadura maldita", "entity.majruszsdifficulty.cerberus": "Cerbero", - "entity.majruszsdifficulty.black_widow": "Viuda negra", "effect.majruszsdifficulty.bleeding": "Sangrado", "effect.majruszsdifficulty.bleeding.description": "Inflige daño letal a lo largo del tiempo. Lo causan principalmente herramientas afiladas, zombis y arañas. No afecta a los muertos vivientes.", "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s de probabilidad de infligir sangrado durante %2$s", @@ -15,7 +14,6 @@ "item.majruszsdifficulty.illusioner_spawn_egg": "Generar ilusionista", "item.majruszsdifficulty.creeperling_spawn_egg": "Generar creepercito", "item.majruszsdifficulty.tank_spawn_egg": "Generar tanque", - "item.majruszsdifficulty.black_widow_spawn_egg": "Generar viuda negra", "item.majruszsdifficulty.cursed_armor_spawn_egg": "Generar armadura maldita", "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "La armadura maldita se puede encontrar en estos cofres:", "item.majruszsdifficulty.cerberus_spawn_egg": "Generar cerbero", @@ -56,8 +54,6 @@ "item.majruszsdifficulty.golden_bandage": "Venda dorada", "item.majruszsdifficulty.recall_potion": "Poción de retirada", "item.majruszsdifficulty.recall_potion.effect": "Teletransporta de vuelta a casa", - "item.majruszsdifficulty.bad_omen_potion": "Poción de mal presagio", - "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s Nivel de mal presagio", "item.majruszsdifficulty.cerberus_fang": "Colmillo de Cerbero", "item.majruszsdifficulty.soul_jar": "Frasco de almas", "item.majruszsdifficulty.soul_jar.item_tooltip1": "Contiene %1$s almas aleatorias dentro", diff --git a/src/main/resources/assets/majruszsdifficulty/lang/fr_fr.json b/src/main/resources/assets/majruszsdifficulty/lang/fr_fr.json index d3413b3b4..ae898f7cb 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/fr_fr.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/fr_fr.json @@ -1,83 +1,201 @@ { + "entity.majruszsdifficulty.creeperling": "Mini-Creeper", + "entity.majruszsdifficulty.tank": "Goliath mort-vivant", + "entity.majruszsdifficulty.cursed_armor": "Armure funeste", + "entity.majruszsdifficulty.cerberus": "Cerbère", "entity.majruszsdifficulty.giant": "Géant", - "entity.majruszsdifficulty.pillager_wolf": "Chien de pillard", - "entity.majruszsdifficulty.elite_skeleton": "Squelette d՚élite", - "entity.majruszsdifficulty.creeperling": "Bébé creeper", - "effect.majruszsdifficulty.bleeding": "Saignement", - "effect.majruszsdifficulty.bleeding_immunity": "Imunité au saignement", - "itemGroup.majruszsdifficulty.primary": "Majrusz՚s Progressive Difficulty", - "item.majruszsdifficulty.giant_spawn_egg": "Oeuf d՚apparition de Géant", - "item.majruszsdifficulty.illusioner_spawn_egg": "Oeuf d՚apparition d՚illusionniste", - "item.majruszsdifficulty.pillager_wolf_spawn_egg": "Oeuf d՚apparition de chien de pillard", - "item.majruszsdifficulty.elite_skeleton_spawn_egg": "Oeuf d՚apparition de squelette d՚élite", - "item.majruszsdifficulty.sky_keeper_spawn_egg": "Oeuf d՚apparition de guadien de l՚End", - "item.majruszsdifficulty.creeperling_spawn_egg": "Oeuf d՚apparition de bébé creeper", - "item.majruszsdifficulty.wither_sword": "Épée de Wither", - "item.majruszsdifficulty.wither_sword.effect": "Inflige Wither II pour quelques secondes en frappant.", - "item.majruszsdifficulty.undead_battle_standard": "Étendard de bataille de mort-vivants", - "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "Invoque l՚armée de mort-vivants.", - "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "L՚armée de mort-vivants peut être", - "item.majruszsdifficulty.undead_battle_standard.item_tooltip3": "invoquée seulement dans le monde normal!", - "item.majruszsdifficulty.undead_army_treasure_bag": "Sac au trésors de l՚armée de mort-vivants", - "item.majruszsdifficulty.elder_guardian_treasure_bag": "Sac au trésors de grand guardien", - "item.majruszsdifficulty.wither_treasure_bag": "Sac au trésors de Wither", - "item.majruszsdifficulty.ender_dragon_treasure_bag": "Sac au trésors d՚Ender Dragon", - "item.majruszsdifficulty.fishing_treasure_bag": "Sac au trésors de pêcheur", + "effect.majruszsdifficulty.bleeding": "Hémorragie", + "effect.majruszsdifficulty.bleeding.description": "Inflige des dégâts au fil du temps qui peuvent tuer. Principalement provoqué par des outils tranchants, des attaques de zombie ou des morsures d'araignée. N'affecte pas les morts-vivants", + "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s de chances d'infliger l'effet Hémorragie %2$s", + "effect.majruszsdifficulty.bleeding.armor_tooltip": "Chance de subir l'effet Hémorragie multipliée par %1$s (cumulable)", + "effect.majruszsdifficulty.bleeding_immunity": "Antihémorragie", + "effect.majruszsdifficulty.bleeding_immunity.description": "Immunise le joueur contre l'effet Hémorragie", + "effect.majruszsdifficulty.glass_regeneration": "Bandage régénérant", + "effect.majruszsdifficulty.glass_regeneration.description": "Version plus faible de l'effet Régénération qui peut être interrompue en subissant des dégâts", + "itemGroup.majruszsdifficulty.primary": "Majrusz's Progressive Difficulty", + "itemGroup.majruszsdifficulty.treasure_bags": "Sacs à trésors", + "item.majruszsdifficulty.advancement_bleeding": "Trophée de succès de l'effet Hémorragie", + "item.majruszsdifficulty.advancement_normal": "Trophée de succès du Stade Normal", + "item.majruszsdifficulty.advancement_expert": "Trophée de succès du Stade Expert", + "item.majruszsdifficulty.advancement_master": "Trophée de succès du Stade Maître", + "item.majruszsdifficulty.illusioner_spawn_egg": "Oeuf d'apparition d'illusionniste", + "item.majruszsdifficulty.creeperling_spawn_egg": "Oeuf d'apparition de Mini-Creeper", + "item.majruszsdifficulty.tank_spawn_egg": "Oeuf d'apparition de Goliath mort-vivant", + "item.majruszsdifficulty.cursed_armor_spawn_egg": "Oeuf d'apparition de l'Armure funeste", + "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "Une Armure funeste peut surgir de ces types de coffres : ", + "item.majruszsdifficulty.cerberus_spawn_egg": "Oeuf d'apparition de Cerbère", + "item.majruszsdifficulty.giant_spawn_egg": "Oeuf d'apparition de géant", + "item.majruszsdifficulty.undead_battle_standard": "Présage de l'armée de morts-vivants", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "Déploie une armée de morts-vivants à votre position.", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "Cette armée ne peut être invoquée", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip3": "que dans le monde normal !", + "item.majruszsdifficulty.undead_army_treasure_bag": "Sac à trésors de l'armée de morts-vivants", + "item.majruszsdifficulty.elder_guardian_treasure_bag": "Sac à trésors de grand gardien", + "item.majruszsdifficulty.wither_treasure_bag": "Sac à trésors de Wither", + "item.majruszsdifficulty.ender_dragon_treasure_bag": "Sac à trésors d'Ender Dragon", + "item.majruszsdifficulty.fishing_treasure_bag": "Sac à trésors de pêcheur", + "item.majruszsdifficulty.pillager_treasure_bag": "Sac à trésors d'invasion", + "item.majruszsdifficulty.warden_treasure_bag": "Sac à trésors de Warden", "item.majruszsdifficulty.bandage": "Bandage", - "item.majruszsdifficulty.hermes_boots": "Bottes d'Hermes", - "item.majruszsdifficulty.hermes_boots.item_tooltip": "Augmente la vitesse de déplacement quand elles sont équipés.", - "item.majruszsdifficulty.enderium_shard": "Fragment de l՚End", - "item.majruszsdifficulty.enderium_ingot": "Lingot de l՚End", - "item.majruszsdifficulty.enderium_sword": "Épée de l՚End", - "item.majruszsdifficulty.enderium_sword.item_tooltip": "Chance d՚infliger Lévitation en frappant tout en étant accroupi.", - "item.majruszsdifficulty.enderium_shovel": "Pelle de l՚End", - "item.majruszsdifficulty.enderium_pickaxe": "Pioche de l՚End", - "item.majruszsdifficulty.enderium_axe": "Hache de l՚End", - "item.majruszsdifficulty.enderium_hoe": "Houe de l՚End", - "item.majruszsdifficulty.enderium_helmet": "Casque de l՚End", - "item.majruszsdifficulty.enderium_helmet.item_tooltip": "armure", - "item.majruszsdifficulty.enderium_chestplate": "Plastron de l՚End", - "item.majruszsdifficulty.enderium_chestplate.item_tooltip": "armure", - "item.majruszsdifficulty.enderium_leggings": "Jambière de l՚End", - "item.majruszsdifficulty.enderium_leggings.item_tooltip": "bonus d'armure en fonction du niveau d՚enchantement", - "item.majruszsdifficulty.enderium_boots": "Bottes de l՚End", - "item.majruszsdifficulty.enderium_boots.item_tooltip": "armure", - "item.majruszsdifficulty.cloth": "tissue déchiré", - "item.majruszsdifficulty.enderium_shard_locator": "Localisateur de fragment de l՚End", + "item.majruszsdifficulty.bandage.effect": "Soigne de l'effet Hémorragie", + "item.majruszsdifficulty.enderium_shard": "Éclat d'Enderium", + "item.majruszsdifficulty.enderium_ingot": "Lingot d'Enderium", + "item.majruszsdifficulty.enderium_sword": "Épée en Enderium", + "item.majruszsdifficulty.enderium_shovel": "Pelle en Enderium", + "item.majruszsdifficulty.enderium_pickaxe": "Pioche en Enderium", + "item.majruszsdifficulty.enderium_axe": "Hache en Enderium", + "item.majruszsdifficulty.enderium_hoe": "Houe en Enderium", + "item.majruszsdifficulty.enderium_hoe.effect": " Laboure une zone de 3x3 lorsque vous n'êtes pas accroupi", + "item.majruszsdifficulty.enderium_helmet": "Casque en Enderium", + "item.majruszsdifficulty.enderium_chestplate": "Plastron en Enderium", + "item.majruszsdifficulty.enderium_leggings": "Jambières en Enderium", + "item.majruszsdifficulty.enderium_boots": "Bottes en Enderium", + "item.majruszsdifficulty.cloth": "Lambeau", + "item.majruszsdifficulty.tattered_helmet": "Chapeau en Lambeaux", + "item.majruszsdifficulty.tattered_chestplate": "Tunique en Lambeaux", + "item.majruszsdifficulty.tattered_leggings": "Pantalon en Lambeaux", + "item.majruszsdifficulty.tattered_boots": "Bottes en Lambeaux", + "item.majruszsdifficulty.wither_sword": "Épée de Wither", + "item.majruszsdifficulty.wither_sword.effect": " %1$s de chances d'infliger l'effet Décomposition %2$s", + "item.majruszsdifficulty.enderium_shard_locator": "Boussole d'éclats d'Enderium", + "item.majruszsdifficulty.ender_pouch": "Saccoche de l'Ender", "item.majruszsdifficulty.golden_bandage": "Bandage doré", - "block.majruszsdifficulty.enderium_shard_ore": "Minerai de fragment de l՚End", - "block.majruszsdifficulty.enderium_shard_ore.warning": "Après destruction de ce bloc, tout les Endermans proches vous attaqueront!", - "block.majruszsdifficulty.enderium_block": "Bloc de l՚End", - "block.majruszsdifficulty.infested_end_stone": "Pierre de l՚End infesté", - "commands.game_state.change": "Le jeu est maintenant en", - "commands.game_state.current": "Le jeu est en", - "commands.undead_army.undead_left": "nombre de monstres de l՚armée de mort-vivants restants:", - "commands.undead_army.missing": "Il n՚y a pas de monstres de l՚armée de mort-vivants ici!", - "commands.regional_difficulty": "difficulté régional actuelle:", - "majruszsdifficulty.stages.normal": "Mode Normal", - "majruszsdifficulty.stages.expert": "Mode Expert", - "majruszsdifficulty.stages.master": "Mode Maitre", - "majruszsdifficulty.on_expert_mode_start": "Les anciens esprits de lumière et ténèbres ont été relachés.", - "majruszsdifficulty.on_master_mode_start": "L՚Apocalypse approche...", - "majruszsdifficulty.treasure_bag.item_tooltip": "Clic droit en le tenant pour ouvrir le sac.", - "majruszsdifficulty.undead_army.title": "Armée de mort-vivants", + "item.majruszsdifficulty.recall_potion": "Potion de rappel", + "item.majruszsdifficulty.recall_potion.effect": "Téléporte au point de réapparition", + "item.majruszsdifficulty.evoker_fang_scroll": "Parchemin de maîtrise des mâchoires d'évocateur", + "item.majruszsdifficulty.cerberus_fang": "Croc de Cerbère", + "item.majruszsdifficulty.soul_jar": "Jarre des âmes", + "item.majruszsdifficulty.soul_jar.item_tooltip1": "Contient %1$s âmes aux bonus aléatoires.", + "item.majruszsdifficulty.soul_jar.item_tooltip2": "Clic droit pour libérer les pouvoirs des âmes...", + "item.majruszsdifficulty.soul_jar.item_tooltip3": "Âmes libérées : ", + "item.majruszsdifficulty.soul_jar.smite": "%1$s dégâts supplémentaires infligés aux morts-vivants", + "item.majruszsdifficulty.soul_jar.move": "%1$s de rapidité", + "item.majruszsdifficulty.soul_jar.range": "%1$s blocs de portée", + "item.majruszsdifficulty.soul_jar.armor": "%1$s points d'armure", + "item.majruszsdifficulty.soul_jar.mine": "%1$s de vitesse de minage", + "item.majruszsdifficulty.soul_jar.luck": "%1$s de chance", + "item.majruszsdifficulty.soul_jar.swim": "%1$s de vitesse de nage", + "item.majruszsdifficulty.sonic_boom_scroll": "Parchemin de maîtrise du hurlement sonique", + "item.minecraft.tipped_arrow.effect.wither": "Flèche de décomposition", + "item.minecraft.potion.effect.wither": "Potion de décomposition", + "item.minecraft.splash_potion.effect.wither": "Potion de décomposition jetable", + "item.minecraft.lingering_potion.effect.wither": "Potion de décomposition persistante", + "block.majruszsdifficulty.enderium_shard_ore": "Minerai d'éclats d'Enderium", + "block.majruszsdifficulty.enderium_block": "Bloc d'Enderium", + "block.majruszsdifficulty.infested_end_stone": "Pierre de l'End infestée", + "commands.gamestage.changed": "Le stade du jeu est maintenant réglé sur le %s", + "commands.gamestage.cannot_change": "Rien n'a changé, le stade du jeu est déjà réglé sur le %s !", + "commands.gamestage.current": "Le stade du jeu est actuellement réglé sur le %s", + "commands.undeadarmy.finished": "Une armée de morts-vivants a été repliée à la position %s", + "commands.undeadarmy.missing": "Il n'y a pas d'armée de morts-vivants déployée à la position %s", + "commands.undeadarmy.started": "Une armée de morts-vivants a été déployée à la position %s", + "commands.undeadarmy.cannot_start": "Impossible de déployer une armée de morts-vivants à la position %s", + "commands.undeadarmy.killed": "Toutes les unités de l'armée de morts-vivants à la position %s ont été anéanties", + "commands.undeadarmy.highlighted": "Toutes les unités de l'armée de morts-vivants à la position %s ont été mises en surbrillance", + "commands.undeadarmy.list": "Liste de toutes les armées de morts-vivants déployées : ", + "commands.undeadarmy.list_empty": "Il n'y a aucune armée de morts-vivants déployée actuellement !", + "commands.undeadarmy.progress": "%1$s doit encore tuer %2$s mort(s)-vivant(s) avant de pouvoir déployer une armée", + "commands.treasurebag.reset": "Tous les butins possibles des sacs à trésors connus de %1$s ont été réinitialisés", + "commands.treasurebag.unlockall": "Tout les butins possibles des sacs à trésors ont été révélés à %1$s", + "commands.clampedregionaldifficulty": "La difficulté régionale bornée à la position %1$s est de %2$s", + "majruszsdifficulty.stages.normal": "Stade Normal", + "majruszsdifficulty.stages.expert": "Stade Expert", + "majruszsdifficulty.stages.master": "Stade Maître", + "majruszsdifficulty.on_expert_mode_start": "Les antiques esprits de clarté et de ténèbres se sont éveillés", + "majruszsdifficulty.on_master_mode_start": "Un présage funeste se rapproche...", + "majruszsdifficulty.treasure_bag.item_tooltip": "Clic droit pour ouvrir le sac", + "majruszsdifficulty.treasure_bag.hint_tooltip": "Maintenez MAJ appuyé pour voir les butins possibles...", + "majruszsdifficulty.treasure_bag.list_tooltip": "Butins possibles (%1$s/%2$s)", + "majruszsdifficulty.treasure_bag.new_items": "Le %1$s vient de révéler un nouveau butin !", + "majruszsdifficulty.undead_army.title": "Armée de morts-vivants", "majruszsdifficulty.undead_army.wave": "(Vague %1$s)", - "majruszsdifficulty.undead_army.victory": "Victoire!", - "majruszsdifficulty.undead_army.failed": "L՚armée de mort-vivants à gagné", - "majruszsdifficulty.undead_army.between_waves": "Vague vaincus", - "majruszsdifficulty.undead_army.approaching": "Une armée de mort-vivants approche depuis %1$s!", - "majruszsdifficulty.undead_army.west": "l՚ouest", - "majruszsdifficulty.undead_army.east": "l՚est", - "majruszsdifficulty.undead_army.north": "le nord", - "majruszsdifficulty.undead_army.south": "le sud", - "majruszsdifficulty.subtitle.undead_army.approaching": "L՚armée de mort-vivants approche", - "majruszsdifficulty.subtitle.undead_army.wave_started": "La vague à commencé", - "majruszsdifficulty.effects.haste_tooltip": "Donne Hate en cassant un bloc.", - "item.majruszsdifficulty.tattered_helmet": "Casque de mort-vivants", - "item.majruszsdifficulty.tattered_chestplate": "Plastron de mort-vivants", - "item.majruszsdifficulty.tattered_leggings": "Jambière de mort-vivants", - "item.majruszsdifficulty.tattered_boots": "Bottes de mort-vivants", - "majruszsdifficulty.items.disabled_tooltip": "Cet item est désactivé et n՚est pas disponible en mode survie!", - "death.attack.bleeding": "%1$s à saigné à mort", - "death.attack.bleeding.player": "%1$s à saigné à mort par blessures infligé par %2$s" -} \ No newline at end of file + "majruszsdifficulty.undead_army.victory": "Victoire", + "majruszsdifficulty.undead_army.failed": "Défaite", + "majruszsdifficulty.undead_army.between_waves": "Une nouvelle vague approche...", + "majruszsdifficulty.undead_army.approaching": "Une armée de morts-vivants approche %1$s !", + "majruszsdifficulty.undead_army.approached": "Une armée de morts-vivants a été déployée !", + "majruszsdifficulty.undead_army.warning": "Le grondement lointain de tambours commence à résonner...", + "majruszsdifficulty.undead_army.on_expert": "Des âmes troublées du Nether se sont ralliées à l'armée de morts-vivants", + "majruszsdifficulty.undead_army.on_master": "De puissantes forces en quête de vengeance viennent renforcer l'armée de morts-vivants", + "majruszsdifficulty.undead_army.west": "de l'ouest", + "majruszsdifficulty.undead_army.east": "de l'est", + "majruszsdifficulty.undead_army.north": "du nord", + "majruszsdifficulty.undead_army.south": "du sud", + "majruszsdifficulty.subtitle.undead_army.approaching": "Armée de morts-vivants s'approchant", + "majruszsdifficulty.subtitle.undead_army.wave_started": "Vague d'ennemi qui démarre", + "majruszsdifficulty.sets.enderium.name": "Équipement en Enderium", + "majruszsdifficulty.sets.enderium.bonus_1": "Permet de regarder sans risque un Enderman dans les yeux", + "majruszsdifficulty.sets.enderium.bonus_2": "Confère un niveau supplémentaire de Butin dans l'End", + "majruszsdifficulty.sets.enderium.bonus_3": "Remplace l'effet de téléportation aléatoire du %1$s par un effet de potion bénéfique aléatoire", + "majruszsdifficulty.sets.enderium.bonus_4": "Préserve de la mort si vous tombez dans le Vide", + "majruszsdifficulty.sets.undead.name": "Équipement en Lambeaux", + "majruszsdifficulty.sets.undead.bonus_1": "Retire l'effet %1$s lorsque de la %2$s est consommée", + "majruszsdifficulty.sets.undead.bonus_2": "Double les points de faim restaurés par la %1$s", + "majruszsdifficulty.sets.undead.bonus_3": "Augmente le nombre de points d'armure par %1$s", + "majruszsdifficulty.sets.undead.bonus_4": "Chaque âme libérée de la %1$s est doublement efficace", + "majruszsdifficulty.scrolls.attack_damage": " %1$s dégâts supplémentaires", + "majruszsdifficulty.scrolls.attack_range": " %1$s de portée d'attaque", + "majruszsdifficulty.smithing.enderium.upgrade": "Amélioration en Enderium", + "majruszsdifficulty.smithing.enderium.applies_to": "Équipement en Netherite", + "majruszsdifficulty.smithing.enderium.ingredients": "Lingot d'Enderium", + "majruszsdifficulty.smithing.enderium.base_slot": "Ajoutez une pièce d'armure, une arme ou un outil en Netherite", + "majruszsdifficulty.smithing.enderium.additions_slot": "Ajoutez un lingot d'Enderium", + "death.attack.bleeding": "%1$s est mort(e) d'une hémorragie", + "death.attack.bleeding.player": "%1$s est mort(e) d'une hémorragie suite aux blessures causées par (un(e)) %2$s", + "advancements.progressive_difficulty.root.title": "Stade Normal", + "advancements.progressive_difficulty.root.description": "J'préfère quand c'est un peu trop plus moins calme...", + "advancements.progressive_difficulty.expert_mode.title": "Stade Expert", + "advancements.progressive_difficulty.expert_mode.description": "Bienvenue en enfer, comment était la chute ?", + "advancements.progressive_difficulty.master_mode.title": "Stade Maître", + "advancements.progressive_difficulty.master_mode.description": "N'oubliez pas que c'est au fond du trou qu'on voit mieux le trou", + "advancements.progressive_difficulty.bleeding.title": "Ça ne peut pas être... du SANG !", + "advancements.progressive_difficulty.bleeding.description": "Subissez une hémorragie", + "advancements.progressive_difficulty.bleeding_inflicted.title": "Ce sang, tout ce sang !", + "advancements.progressive_difficulty.bleeding_inflicted.description": "Provoquez une hémorragie sur une créature", + "advancements.progressive_difficulty.bleeding_cactus.title": "Aïe !", + "advancements.progressive_difficulty.bleeding_cactus.description": "Frottez-vous à un cactus... et subissez-en les conséquences", + "advancements.progressive_difficulty.bleeding_healed.title": "J'ai été touché... ou pas", + "advancements.progressive_difficulty.bleeding_healed.description": "Utilisez un bandage pour arrêter votre hémorragie", + "advancements.progressive_difficulty.bleeding_healed_other.title": "C'est pour un \"ami\"", + "advancements.progressive_difficulty.bleeding_healed_other.description": "Faites le garrot à quelqu'un d'autre à l'aide d'un bandage doré", + "advancements.progressive_difficulty.kill_yourself.title": "\"Soit ton propre ennemi\"", + "advancements.progressive_difficulty.kill_yourself.description": "Tuez votre alter ego mort-vivant", + "advancements.progressive_difficulty.undead_army.title": "Retour dans la tombe", + "advancements.progressive_difficulty.undead_army.description": "Tuez toutes les unités d'une armée de morts-vivants", + "advancements.progressive_difficulty.creeperling.title": "Petit et... explosif ?!", + "advancements.progressive_difficulty.creeperling.description": "Faites la connaissance d'un Mini-Crepeer, que vous le vouliez ou non", + "advancements.progressive_difficulty.enderman_teleport_attack.title": "Quelle est cette sorcellerie ?", + "advancements.progressive_difficulty.enderman_teleport_attack.description": "Faites-vous téléporter hors de votre cachette par un Enderman", + "advancements.progressive_difficulty.enderium_shard.title": "Un sans-éclat sans renom", + "advancements.progressive_difficulty.enderium_shard.description": "Obtenez des éclats d'Enderium dans la dernière dimension du jeu", + "advancements.progressive_difficulty.enderium_ingot.title": "Drôle de lingot", + "advancements.progressive_difficulty.enderium_ingot.description": "Obtenez un lingot d'Enderium dans votre inventaire", + "advancements.progressive_difficulty.fishing_treasure_bag.title": "Pêcheur en intérim", + "advancements.progressive_difficulty.fishing_treasure_bag.description": "Ouvrez votre premier sac à trésors de pêcheur", + "advancements.progressive_difficulty.fishing_treasure_bag_16.title": "Mordu de la pêche", + "advancements.progressive_difficulty.fishing_treasure_bag_16.description": "Témoignez de votre addiction au butin de pêche en ouvrant votre seizième sac à trésors de pêcheur", + "advancements.progressive_difficulty.undead_army_treasure_bag.title": "Jouons aux osselets", + "advancements.progressive_difficulty.undead_army_treasure_bag.description": "Ouvrez votre premier sac à trésors de l'armée de morts-vivants", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.title": "Nécrologue en chair et en os", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.description": "Devenez la hantise des morts-vivants en ouvrant votre seizième sac à trésors de l'armée de morts-vivants", + "advancements.progressive_difficulty.pillager_treasure_bag.title": "Héros (récompensé) du village", + "advancements.progressive_difficulty.pillager_treasure_bag.description": "Ouvrez votre premier sac à trésors d'invasion", + "advancements.progressive_difficulty.pillager_treasure_bag_16.title": "Consultant en sécurité", + "advancements.progressive_difficulty.pillager_treasure_bag_16.description": "Démontrez vos aptitudes de défense en ouvrant votre seizième sac à trésors d'invasion", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.title": "Un sujet épineux", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.description": "Ouvrez votre premier sac à trésors de grand gardien", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.title": "Nettoyeur d'océans", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.description": "Affirmez votre engagement pour l'environnement en ouvrant votre seizième sac à trésors de grand gardien", + "advancements.progressive_difficulty.wither_treasure_bag.title": "Un trésor si flétrissable", + "advancements.progressive_difficulty.wither_treasure_bag.description": "Ouvrez votre premier sac à trésors de Wither", + "advancements.progressive_difficulty.wither_treasure_bag_16.title": "Conservateur face au dépéris", + "advancements.progressive_difficulty.wither_treasure_bag_16.description": "Régnez sur le flétrissement en ouvrant votre seizième sac à trésors de Wither", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.title": "Trésor d'un autre monde", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.description": "Ouvrez votre premier sac à trésors d'Ender Dragon", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.title": "Fin ? Fin.", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.description": "Achevez un nouveau chapitre de votre aventure en ouvrant votre seizième sac à trésors d'Ender Dragon", + "advancements.progressive_difficulty.warden_treasure_bag.title": "Le sac du silence", + "advancements.progressive_difficulty.warden_treasure_bag.description": "Ouvrez (sans faire trop de bruit) votre premier sac à trésors de Warden", + "advancements.progressive_difficulty.warden_treasure_bag_16.title": "Empereur du silence", + "advancements.progressive_difficulty.warden_treasure_bag_16.description": "Montrez votre contrôle parfait de vos mouvements en ouvrant votre seizième sac à trésors de Warden" +} diff --git a/src/main/resources/assets/majruszsdifficulty/lang/pl_pl.json b/src/main/resources/assets/majruszsdifficulty/lang/pl_pl.json index 98a51c5fb..accdb6381 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/pl_pl.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/pl_pl.json @@ -3,22 +3,24 @@ "entity.majruszsdifficulty.tank": "Tank", "entity.majruszsdifficulty.cursed_armor": "Przeklęta zbroja", "entity.majruszsdifficulty.cerberus": "Cerber", - "entity.majruszsdifficulty.black_widow": "Czarna wdowa", + "entity.majruszsdifficulty.giant": "Gigant", "effect.majruszsdifficulty.bleeding": "Krwawienie", "effect.majruszsdifficulty.bleeding.description": "Zadaje śmiertelne obrażenia od czasu do czasu. Głównie wywoływane ostrymi przedmiotami, przez zombie oraz przez pająki. Nie wpływa na nieumarłych.", "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s szansy na wywołanie krwawienia %2$s", "effect.majruszsdifficulty.bleeding.armor_tooltip": "x%1$s szansa na krwawienie", "effect.majruszsdifficulty.bleeding_immunity": "Odporność na krwawienie", "effect.majruszsdifficulty.bleeding_immunity.description": "Powoduje, że gracz nie otrzymuje żadnych obrażeń od krwawienia.", + "effect.majruszsdifficulty.glass_regeneration": "Szklana regeneracja", + "effect.majruszsdifficulty.glass_regeneration.description": "Słabsza wersja efektu regeneracji, która może zostać przerwana poprzez otrzymanie obrażeń.", "itemGroup.majruszsdifficulty.primary": "Majrusz's Progressive Difficulty", "itemGroup.majruszsdifficulty.treasure_bags": "Worki ze skarbami", "item.majruszsdifficulty.illusioner_spawn_egg": "Jajo przywołujące iluzjoniera", "item.majruszsdifficulty.creeperling_spawn_egg": "Jajo przywołujące creeperlinga", "item.majruszsdifficulty.tank_spawn_egg": "Jajo przywołujące tanka", - "item.majruszsdifficulty.black_widow_spawn_egg": "Jajo przywołujące czarną wdowę", "item.majruszsdifficulty.cursed_armor_spawn_egg": "Jajo przywołujące przeklętą zbroję", "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "Przeklęta zbroja może zostać znaleziona w tych skrzyniach:", "item.majruszsdifficulty.cerberus_spawn_egg": "Jajo przywołujące cerbera", + "item.majruszsdifficulty.giant_spawn_egg": "Jajo przywołujące giganta", "item.majruszsdifficulty.undead_battle_standard": "Bitewny sztandar nieumarłych", "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "Przywołuje armię nieumarłych.", "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "Armia nieumarłych może zostać", @@ -56,8 +58,7 @@ "item.majruszsdifficulty.golden_bandage": "Złoty bandaż", "item.majruszsdifficulty.recall_potion": "Mikstura powrotu", "item.majruszsdifficulty.recall_potion.effect": "Teleportuje z powrotem do domu", - "item.majruszsdifficulty.bad_omen_potion": "Mikstura złego omenu", - "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s poziom złego omenu", + "item.majruszsdifficulty.evoker_fang_scroll": "Zwój kłów evokera", "item.majruszsdifficulty.cerberus_fang": "Kieł cerbera", "item.majruszsdifficulty.soul_jar": "Słój dusz", "item.majruszsdifficulty.soul_jar.item_tooltip1": "Zawiera %1$s losowe dusze w środku.", @@ -70,6 +71,7 @@ "item.majruszsdifficulty.soul_jar.mine": "%1$s prędkości kopania", "item.majruszsdifficulty.soul_jar.luck": "%1$s szczęścia", "item.majruszsdifficulty.soul_jar.swim": "%1$s prędkości pływania", + "item.majruszsdifficulty.sonic_boom_scroll": "Zwój fali dźwiękowej", "item.minecraft.tipped_arrow.effect.wither": "Strzała obumierania", "item.minecraft.potion.effect.wither": "Mikstura obumierania", "item.minecraft.splash_potion.effect.wither": "Miotana mikstura obumierania", @@ -109,7 +111,8 @@ "majruszsdifficulty.undead_army.approaching": "Armia nieumarłych nadchodzi %1$s!", "majruszsdifficulty.undead_army.approached": "Armia nieumarłych nadeszła!", "majruszsdifficulty.undead_army.warning": "W oddali zaczynają rozbrzmiewać bębny...", - "majruszsdifficulty.undead_army.on_expert": "Armia nieumarłych została zasilona piekielnymi oddziałami", + "majruszsdifficulty.undead_army.on_expert": "Armia nieumarłych została wzmocniona piekielnymi oddziałami", + "majruszsdifficulty.undead_army.on_master": "Armia nieumarłych została wzmocniona olbrzymimi oddziałami", "majruszsdifficulty.undead_army.west": "z zachodu", "majruszsdifficulty.undead_army.east": "ze wschodu", "majruszsdifficulty.undead_army.north": "z północy", @@ -126,6 +129,8 @@ "majruszsdifficulty.sets.undead.bonus_2": "Podwaja liczbę punktów głodu zregenerowanych przez %1$s.", "majruszsdifficulty.sets.undead.bonus_3": "Zwiększa pancerz o %1$s.", "majruszsdifficulty.sets.undead.bonus_4": "Podwaja premie przyznawane za %1$s.", + "majruszsdifficulty.scrolls.attack_damage": " %1$s obrażeń", + "majruszsdifficulty.scrolls.attack_range": " %1$s zasięg ataku", "death.attack.bleeding": "%1$s wykrwawił się na śmierć", "death.attack.bleeding.player": "%1$s wykrwawił się na śmierć na wskutek ran od %2$s", "death.attack.infested": "%1$s został zjedzony od środka ", @@ -136,7 +141,7 @@ "advancements.progressive_difficulty.master_mode.title": "Tryb mistrza", "advancements.progressive_difficulty.bleeding.title": "Czy ja krwawię?", "advancements.progressive_difficulty.bleeding.description": "Zacznij krwawić po raz pierwszy", - "advancements.progressive_difficulty.bleeding_inflicted.title": "Dziś zamieszkasz w glebie", + "advancements.progressive_difficulty.bleeding_inflicted.title": "Żądny krwi", "advancements.progressive_difficulty.bleeding_inflicted.description": "Wywołaj krwawienie u dowolnego moba", "advancements.progressive_difficulty.bleeding_cactus.title": "Auć!", "advancements.progressive_difficulty.bleeding_cactus.description": "Zacznij krwawić po dotknięciu kaktusa", diff --git a/src/main/resources/assets/majruszsdifficulty/lang/uk_ua.json b/src/main/resources/assets/majruszsdifficulty/lang/uk_ua.json index 88ad4c50e..88d66b59f 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/uk_ua.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/uk_ua.json @@ -14,7 +14,6 @@ "item.majruszsdifficulty.illusioner_spawn_egg": "Яйце виклику іллюзіонина", "item.majruszsdifficulty.creeperling_spawn_egg": "Яйце виклику кріплінґа", "item.majruszsdifficulty.tank_spawn_egg": "Яйце виклику велетня", - "item.majruszsdifficulty.black_widow_spawn_egg": "Яйце виклику чорної вдови", "item.majruszsdifficulty.cursed_armor_spawn_egg": "Яйце виклику проклятих обладунків", "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "Прокляті обладунки можна знайти в цих скринях:", "item.majruszsdifficulty.undead_battle_standard": "Стяг армії нежиті", diff --git a/src/main/resources/assets/majruszsdifficulty/lang/zh_cn.json b/src/main/resources/assets/majruszsdifficulty/lang/zh_cn.json index 03b2db030..2f220e5be 100644 --- a/src/main/resources/assets/majruszsdifficulty/lang/zh_cn.json +++ b/src/main/resources/assets/majruszsdifficulty/lang/zh_cn.json @@ -3,7 +3,6 @@ "entity.majruszsdifficulty.tank": "坦克", "entity.majruszsdifficulty.cursed_armor": "被诅咒的盔甲", "entity.majruszsdifficulty.cerberus": "地狱犬", - "entity.majruszsdifficulty.black_widow": "黑寡妇", "effect.majruszsdifficulty.bleeding": "流血", "effect.majruszsdifficulty.bleeding.description": "感染后造成可以致死的伤害,主要由锋利的工具、僵尸和蜘蛛造成,对亡灵无效。", "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s 概率造成 %2$s", @@ -15,7 +14,6 @@ "item.majruszsdifficulty.illusioner_spawn_egg": "幻术师刷怪蛋", "item.majruszsdifficulty.creeperling_spawn_egg": "小苦力怕刷怪蛋", "item.majruszsdifficulty.tank_spawn_egg": "坦克刷怪蛋", - "item.majruszsdifficulty.black_widow_spawn_egg": "黑寡妇刷怪蛋", "item.majruszsdifficulty.cursed_armor_spawn_egg": "诅咒盔甲刷怪蛋", "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "诅咒盔甲可以在以下箱子中找到:", "item.majruszsdifficulty.cerberus_spawn_egg": "地狱犬刷怪蛋", @@ -56,8 +54,6 @@ "item.majruszsdifficulty.golden_bandage": "金绷带", "item.majruszsdifficulty.recall_potion": "回忆药水", "item.majruszsdifficulty.recall_potion.effect": "传送回家", - "item.majruszsdifficulty.bad_omen_potion": "恶兆药水", - "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s 恶兆等级", "item.majruszsdifficulty.cerberus_fang": "地狱犬牙", "item.majruszsdifficulty.soul_jar": "灵魂罐", "item.majruszsdifficulty.soul_jar.item_tooltip1": "含有 %1$s 种随机灵魂在内", diff --git a/src/main/resources/assets/majruszsdifficulty/lang/zh_tw.json b/src/main/resources/assets/majruszsdifficulty/lang/zh_tw.json new file mode 100644 index 000000000..9e7ee2920 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/lang/zh_tw.json @@ -0,0 +1,191 @@ +{ + "entity.majruszsdifficulty.creeperling": "迷你苦力怕", + "entity.majruszsdifficulty.tank": "坦克", + "entity.majruszsdifficulty.cursed_armor": "受詛咒的盔甲", + "entity.majruszsdifficulty.cerberus": "地獄三頭犬", + "entity.majruszsdifficulty.black_widow": "黑寡婦", + "effect.majruszsdifficulty.bleeding": "失血", + "effect.majruszsdifficulty.bleeding.description": "持續給予可致命的傷害,主要由鋒利的工具、殭屍和蜘蛛造成,對不死族無效.", + "effect.majruszsdifficulty.bleeding.item_tooltip": " %1$s機率造成%2$s", + "effect.majruszsdifficulty.bleeding.armor_tooltip": "x%1$s機率失血", + "effect.majruszsdifficulty.bleeding_immunity": "免疫失血", + "effect.majruszsdifficulty.bleeding_immunity.description": "使玩家免疫於失血.", + "itemGroup.majruszsdifficulty.primary": "Majrusz的漸進式難度", + "itemGroup.majruszsdifficulty.treasure_bags": "寶藏袋", + "item.majruszsdifficulty.illusioner_spawn_egg": "幻術師 生怪蛋", + "item.majruszsdifficulty.creeperling_spawn_egg": "迷你苦力怕 生怪蛋", + "item.majruszsdifficulty.tank_spawn_egg": "坦克 生怪蛋", + "item.majruszsdifficulty.black_widow_spawn_egg": "黑寡婦 生怪蛋", + "item.majruszsdifficulty.cursed_armor_spawn_egg": "受詛咒的盔甲 生怪蛋", + "item.majruszsdifficulty.cursed_armor_spawn_egg.locations": "受詛咒的盔甲可以在這些地點的箱子中找到:", + "item.majruszsdifficulty.cerberus_spawn_egg": "地獄三頭犬 生怪蛋", + "item.majruszsdifficulty.undead_battle_standard": "不死族軍旗", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip1": "召喚不死軍團。", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip2": "不死軍團", + "item.majruszsdifficulty.undead_battle_standard.item_tooltip3": "僅能在主世界中召喚!", + "item.majruszsdifficulty.undead_army_treasure_bag": "不死軍團寶藏袋", + "item.majruszsdifficulty.elder_guardian_treasure_bag": "遠古深海守衛寶藏袋", + "item.majruszsdifficulty.wither_treasure_bag": "凋零寶藏袋", + "item.majruszsdifficulty.ender_dragon_treasure_bag": "終界龍寶藏袋", + "item.majruszsdifficulty.fishing_treasure_bag": "釣魚者寶藏袋", + "item.majruszsdifficulty.pillager_treasure_bag": "突襲寶藏袋", + "item.majruszsdifficulty.warden_treasure_bag": "伏守者寶藏袋", + "item.majruszsdifficulty.bandage": "繃帶", + "item.majruszsdifficulty.bandage.effect": "止血", + "item.majruszsdifficulty.enderium_shard": "終界合金碎片", + "item.majruszsdifficulty.enderium_ingot": "終界合金錠", + "item.majruszsdifficulty.enderium_sword": "終界合金劍", + "item.majruszsdifficulty.enderium_shovel": "終界合金鏟", + "item.majruszsdifficulty.enderium_pickaxe": "終界合金鎬", + "item.majruszsdifficulty.enderium_axe": "終界合金斧", + "item.majruszsdifficulty.enderium_hoe": "終界合金鋤", + "item.majruszsdifficulty.enderium_hoe.effect": " 增加耕種面積", + "item.majruszsdifficulty.enderium_helmet": "終界合金頭盔", + "item.majruszsdifficulty.enderium_chestplate": "終界合金胸甲", + "item.majruszsdifficulty.enderium_leggings": "終界合金護腿", + "item.majruszsdifficulty.enderium_boots": "終界合金靴子", + "item.majruszsdifficulty.cloth": "布料", + "item.majruszsdifficulty.tattered_helmet": "破爛的帽子", + "item.majruszsdifficulty.tattered_chestplate": "破爛的袍子", + "item.majruszsdifficulty.tattered_leggings": "破爛的褲子", + "item.majruszsdifficulty.tattered_boots": "破爛的靴子", + "item.majruszsdifficulty.wither_sword": "凋零劍", + "item.majruszsdifficulty.wither_sword.effect": " %1$s機率造成凋零%2$s", + "item.majruszsdifficulty.enderium_shard_locator": "終界合金碎片定位器", + "item.majruszsdifficulty.ender_pouch": "終界錦囊", + "item.majruszsdifficulty.golden_bandage": "黃金繃帶", + "item.majruszsdifficulty.recall_potion": "回憶藥水", + "item.majruszsdifficulty.recall_potion.effect": "傳送回重生點", + "item.majruszsdifficulty.bad_omen_potion": "不祥之兆藥水n", + "item.majruszsdifficulty.bad_omen_potion.effect": "%1$s不祥之兆等級", + "item.majruszsdifficulty.cerberus_fang": "三頭犬之牙", + "item.majruszsdifficulty.soul_jar": "靈魂罐", + "item.majruszsdifficulty.soul_jar.item_tooltip1": "隨機裝著%1$s種靈魂在罐中。", + "item.majruszsdifficulty.soul_jar.item_tooltip2": "點擊右鍵揭密靈魂...", + "item.majruszsdifficulty.soul_jar.item_tooltip3": "裝著靈魂:", + "item.majruszsdifficulty.soul_jar.smite": "%1$s對不死族的傷害", + "item.majruszsdifficulty.soul_jar.move": "%1$s移動速度", + "item.majruszsdifficulty.soul_jar.range": "%1$s範圍", + "item.majruszsdifficulty.soul_jar.armor": "%1$s護甲", + "item.majruszsdifficulty.soul_jar.mine": "%1$s挖掘速度", + "item.majruszsdifficulty.soul_jar.luck": "%1$s幸運", + "item.majruszsdifficulty.soul_jar.swim": "%1$s水中速度", + "entity.minecraft.sniffer": "嗅探獸", + "item.minecraft.tipped_arrow.effect.wither": "凋零之箭", + "item.minecraft.potion.effect.wither": "凋零藥水", + "item.minecraft.splash_potion.effect.wither": "飛濺 凋零藥水", + "item.minecraft.lingering_potion.effect.wither": "滯留 凋零藥水", + "block.majruszsdifficulty.enderium_shard_ore": "終界合金礦", + "block.majruszsdifficulty.enderium_block": "終界合金方塊", + "block.majruszsdifficulty.infested_end_stone": "蛀蝕的終界石", + "commands.gamestage.changed": "遊戲階段變更為%s.", + "commands.gamestage.cannot_change": "遊戲階段已經是%s!", + "commands.gamestage.current": "目前遊戲階段是%s.", + "commands.undeadarmy.finished": "一支不死軍團已停留在位置: %s", + "commands.undeadarmy.missing": "這裡沒有沒有不死軍團: %s", + "commands.undeadarmy.started": "一支不死軍團生成在位置: %s", + "commands.undeadarmy.cannot_start": "不死軍團無法生成在此位置: %s", + "commands.undeadarmy.killed": "此位置的不死軍團成員皆被殺死: %s", + "commands.undeadarmy.highlighted": "此位置的不死軍團成員皆被標記: %s", + "commands.undeadarmy.list": "顯示所有不死軍團進度:", + "commands.undeadarmy.list_empty": "目前進度中沒有不死軍團!", + "commands.undeadarmy.progress": "%1$s還需要再擊殺%2$s之不死生物來召喚不死軍團。", + "commands.treasurebag.reset": "%1$s的寶藏袋進度已被重設。", + "commands.treasurebag.unlockall": "%1$s的寶藏袋進度已升至最高級。", + "commands.clampedregionaldifficulty": "Clamped regional difficulty at %1$s is %2$s.", + "majruszsdifficulty.stages.normal": "一般模式", + "majruszsdifficulty.stages.expert": "專家模式", + "majruszsdifficulty.stages.master": "大師模式", + "majruszsdifficulty.on_expert_mode_start": "遠古的黑暗與光明靈魂被釋放了", + "majruszsdifficulty.on_master_mode_start": "災難即將到來...", + "majruszsdifficulty.treasure_bag.item_tooltip": "右鍵來開啟寶藏袋.", + "majruszsdifficulty.treasure_bag.hint_tooltip": "按下SHIFT來顯示掉落品列表...", + "majruszsdifficulty.treasure_bag.list_tooltip": "可能的掉落物(%1$s/%2$s)", + "majruszsdifficulty.treasure_bag.new_items": "你在 %1$s 找到了新物品!", + "majruszsdifficulty.undead_army.title": "不死軍團", + "majruszsdifficulty.undead_army.wave": "(波次%1$s)", + "majruszsdifficulty.undead_army.victory": "勝利!", + "majruszsdifficulty.undead_army.failed": "不死軍團獲勝", + "majruszsdifficulty.undead_army.between_waves": "波次完成", + "majruszsdifficulty.undead_army.approaching": "一支不死軍團由%1$s襲來!", + "majruszsdifficulty.undead_army.approached": "不死軍團抵達!", + "majruszsdifficulty.undead_army.warning": "鼓聲在遠方迴盪...", + "majruszsdifficulty.undead_army.on_expert": "不死軍團得到地獄之力", + "majruszsdifficulty.undead_army.west": "西方", + "majruszsdifficulty.undead_army.east": "東方", + "majruszsdifficulty.undead_army.north": "北方", + "majruszsdifficulty.undead_army.south": "南方", + "majruszsdifficulty.subtitle.undead_army.approaching": "不死軍團接近中", + "majruszsdifficulty.subtitle.undead_army.wave_started": "波次開始", + "majruszsdifficulty.sets.enderium.name": "終界套裝", + "majruszsdifficulty.sets.enderium.bonus_1": "減少終界使者所產生的敵意.", + "majruszsdifficulty.sets.enderium.bonus_2": "在終界可以提升掠奪等級.", + "majruszsdifficulty.sets.enderium.bonus_3": "吃下%1$s會獲得隨機藥水效果", + "majruszsdifficulty.sets.enderium.bonus_4": "在虛空中不會死亡.", + "majruszsdifficulty.sets.undead.name": "不死套裝", + "majruszsdifficulty.sets.undead.bonus_1": "移除%2$s的%1$s效果.", + "majruszsdifficulty.sets.undead.bonus_2": "%1$s的飢餓值回復量為兩倍", + "majruszsdifficulty.sets.undead.bonus_3": "增加%1$s護甲值。", + "majruszsdifficulty.sets.undead.bonus_4": "%1$s效果翻倍", + "majruszsdifficulty.smithing.enderium.upgrade": "終界合金升級", + "majruszsdifficulty.smithing.enderium.applies_to": "獄髓裝備", + "majruszsdifficulty.smithing.enderium.ingredients": "終界合金錠", + "majruszsdifficulty.smithing.enderium.base_slot": "Add netherite armor, weapon, or tool", + "majruszsdifficulty.smithing.enderium.additions_slot": "增加終界合金錠", + "death.attack.bleeding": "%1$s失血過多致死", + "death.attack.bleeding.player": " 因為%2$s導致%1$s失血過多致死", + "advancements.progressive_difficulty.root.title": "一般模式", + "advancements.progressive_difficulty.root.description": "一切看起來很和平", + "advancements.progressive_difficulty.expert_mode.title": "專家模式", + "advancements.progressive_difficulty.master_mode.title": "大師模式", + "advancements.progressive_difficulty.bleeding.title": "這難道....是血?", + "advancements.progressive_difficulty.bleeding.description": "第一次流血", + "advancements.progressive_difficulty.bleeding_inflicted.title": "讓他們流血", + "advancements.progressive_difficulty.bleeding_inflicted.description": "使任意生物流血", + "advancements.progressive_difficulty.bleeding_cactus.title": "噢!", + "advancements.progressive_difficulty.bleeding_cactus.description": "碰到仙人掌並流血", + "advancements.progressive_difficulty.bleeding_healed.title": "不痛不癢!", + "advancements.progressive_difficulty.bleeding_healed.description": "使用繃帶來止血", + "advancements.progressive_difficulty.bleeding_healed_other.title": "患難見真情", + "advancements.progressive_difficulty.bleeding_healed_other.description": "對他人使用黃金繃帶", + "advancements.progressive_difficulty.kill_yourself.title": "重新定義「自殺」", + "advancements.progressive_difficulty.kill_yourself.description": "擊殺僵屍化的自己", + "advancements.progressive_difficulty.undead_army.title": "幽靈般可怕的軍隊", + "advancements.progressive_difficulty.undead_army.description": "擊敗不死軍團", + "advancements.progressive_difficulty.creeperling.title": "那啥!?", + "advancements.progressive_difficulty.creeperling.description": "遇到迷你苦力怕", + "advancements.progressive_difficulty.enderman_teleport_attack.title": "我很困擾", + "advancements.progressive_difficulty.enderman_teleport_attack.description": "被終界使者傳送", + "advancements.progressive_difficulty.enderium_shard.title": "奇怪的碎片", + "advancements.progressive_difficulty.enderium_shard.description": "獲得終界合金碎片", + "advancements.progressive_difficulty.enderium_ingot.title": "神密的金屬錠", + "advancements.progressive_difficulty.enderium_ingot.description": "獲得終界合金錠", + "advancements.progressive_difficulty.fishing_treasure_bag.title": "新手釣魚家", + "advancements.progressive_difficulty.fishing_treasure_bag.description": "打開第一個釣魚者寶藏袋", + "advancements.progressive_difficulty.fishing_treasure_bag_16.title": "釣魚狂樂者", + "advancements.progressive_difficulty.fishing_treasure_bag_16.description": "打開第十六個釣魚者寶藏袋", + "advancements.progressive_difficulty.undead_army_treasure_bag.title": "墓園", + "advancements.progressive_difficulty.undead_army_treasure_bag.description": "打開第一個不死軍團寶藏袋", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.title": "一堆骨頭", + "advancements.progressive_difficulty.undead_army_treasure_bag_16.description": "打開第十六個不死軍團寶藏袋", + "advancements.progressive_difficulty.pillager_treasure_bag.title": "給英雄的獎勵", + "advancements.progressive_difficulty.pillager_treasure_bag.description": "打開第一個掠奪寶藏袋", + "advancements.progressive_difficulty.pillager_treasure_bag_16.title": "守護者", + "advancements.progressive_difficulty.pillager_treasure_bag_16.description": "打開第十六個掠奪寶藏袋", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.title": "尖刺的袋子", + "advancements.progressive_difficulty.elder_guardian_treasure_bag.description": "打開第一個遠古深海守衛寶藏袋", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.title": "海洋掠奪者", + "advancements.progressive_difficulty.elder_guardian_treasure_bag_16.description": "打開第十六個遠古深海守衛寶藏袋", + "advancements.progressive_difficulty.wither_treasure_bag.title": "凋零的寶藏", + "advancements.progressive_difficulty.wither_treasure_bag.description": "打開第一個凋零寶藏袋", + "advancements.progressive_difficulty.wither_treasure_bag_16.title": "地獄之王", + "advancements.progressive_difficulty.wither_treasure_bag_16.description": "打開第十六個凋零寶藏袋", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.title": "荒謬的寶藏", + "advancements.progressive_difficulty.ender_dragon_treasure_bag.description": "打開第一個終界龍寶藏袋", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.title": "結束的結束?", + "advancements.progressive_difficulty.ender_dragon_treasure_bag_16.description": "打開第十六個終界龍寶藏袋", + "advancements.progressive_difficulty.warden_treasure_bag.title": "被遺忘的袋子", + "advancements.progressive_difficulty.warden_treasure_bag.description": "打開第一個伏守者寶藏袋", + "advancements.progressive_difficulty.warden_treasure_bag_16.title": "潛行之王", + "advancements.progressive_difficulty.warden_treasure_bag_16.description": "打開第十六個伏守者寶藏袋" +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/bad_omen_potion.json b/src/main/resources/assets/majruszsdifficulty/models/item/bad_omen_potion.json deleted file mode 100644 index b78da4b43..000000000 --- a/src/main/resources/assets/majruszsdifficulty/models/item/bad_omen_potion.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "majruszsdifficulty:item/bad_omen_potion" - } -} diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/black_widow_spawn_egg.json b/src/main/resources/assets/majruszsdifficulty/models/item/black_widow_spawn_egg.json deleted file mode 100644 index 7a2c6da81..000000000 --- a/src/main/resources/assets/majruszsdifficulty/models/item/black_widow_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "item/template_spawn_egg" -} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_boots.json b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_boots.json index 5f4fe3de1..0fa3baf0d 100644 --- a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_boots.json +++ b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_boots.json @@ -1,5 +1,67 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "majruszsdifficulty:item/trim/enderium_boots_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_boots_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], "textures": { "layer0": "majruszsdifficulty:item/enderium_boots" } diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_chestplate.json b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_chestplate.json index af1698d6c..1c38b9118 100644 --- a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_chestplate.json +++ b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_chestplate.json @@ -1,5 +1,67 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_chestplate_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], "textures": { "layer0": "majruszsdifficulty:item/enderium_chestplate" } diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_helmet.json b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_helmet.json index 57d226995..458e109ae 100644 --- a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_helmet.json +++ b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_helmet.json @@ -1,5 +1,67 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_helmet_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], "textures": { "layer0": "majruszsdifficulty:item/enderium_helmet" } diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_leggings.json b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_leggings.json index 9ca63f0f3..e19e4c051 100644 --- a/src/main/resources/assets/majruszsdifficulty/models/item/enderium_leggings.json +++ b/src/main/resources/assets/majruszsdifficulty/models/item/enderium_leggings.json @@ -1,5 +1,67 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "majruszsdifficulty:item/trim/enderium_leggings_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], "textures": { "layer0": "majruszsdifficulty:item/enderium_leggings" } diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/evoker_fang_scroll.json b/src/main/resources/assets/majruszsdifficulty/models/item/evoker_fang_scroll.json new file mode 100644 index 000000000..307a4ff7e --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/evoker_fang_scroll.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/evoker_fang_scroll" + } +} diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/sonic_boom_scroll.json b/src/main/resources/assets/majruszsdifficulty/models/item/sonic_boom_scroll.json new file mode 100644 index 000000000..15a711e81 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/sonic_boom_scroll.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/sonic_boom_scroll" + } +} diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/soul_jar.json b/src/main/resources/assets/majruszsdifficulty/models/item/soul_jar.json index ed55a08dd..75ce9dc92 100644 --- a/src/main/resources/assets/majruszsdifficulty/models/item/soul_jar.json +++ b/src/main/resources/assets/majruszsdifficulty/models/item/soul_jar.json @@ -1,6 +1,9 @@ { "parent": "item/generated", "textures": { - "layer0": "majruszsdifficulty:item/soul_jar" + "layer0": "majruszsdifficulty:item/soul_jar", + "layer1": "majruszsdifficulty:item/soul_jar_soul1", + "layer2": "majruszsdifficulty:item/soul_jar_soul2", + "layer3": "majruszsdifficulty:item/soul_jar_soul3" } } diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_amethyst_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_amethyst_trim.json new file mode 100644 index 000000000..25606c11e --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_copper_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_copper_trim.json new file mode 100644 index 000000000..049afee8f --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_diamond_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_diamond_trim.json new file mode 100644 index 000000000..f00300a26 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_emerald_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_emerald_trim.json new file mode 100644 index 000000000..608011747 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_gold_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_gold_trim.json new file mode 100644 index 000000000..950e7112d --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_iron_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_iron_trim.json new file mode 100644 index 000000000..7270a2f0f --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_lapis_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_lapis_trim.json new file mode 100644 index 000000000..43246a708 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_netherite_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_netherite_trim.json new file mode 100644 index 000000000..624cfd32d --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_quartz_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_quartz_trim.json new file mode 100644 index 000000000..bfb5a4b44 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_redstone_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_redstone_trim.json new file mode 100644 index 000000000..06bd9b8f7 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_boots_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_boots", + "layer1": "minecraft:trims/items/boots_trim_redstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_amethyst_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_amethyst_trim.json new file mode 100644 index 000000000..b21ee7908 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_copper_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_copper_trim.json new file mode 100644 index 000000000..527655e0c --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_diamond_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_diamond_trim.json new file mode 100644 index 000000000..2ed419e43 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_emerald_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_emerald_trim.json new file mode 100644 index 000000000..88e62601d --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_gold_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_gold_trim.json new file mode 100644 index 000000000..b2717415b --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_iron_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_iron_trim.json new file mode 100644 index 000000000..295059c96 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_lapis_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_lapis_trim.json new file mode 100644 index 000000000..162f36bea --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_netherite_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_netherite_trim.json new file mode 100644 index 000000000..82c14d03c --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_quartz_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_quartz_trim.json new file mode 100644 index 000000000..e9cd475d8 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_redstone_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_redstone_trim.json new file mode 100644 index 000000000..bf7deed15 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_chestplate_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_redstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_amethyst_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_amethyst_trim.json new file mode 100644 index 000000000..22bd96311 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_copper_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_copper_trim.json new file mode 100644 index 000000000..a2cac70fc --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_diamond_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_diamond_trim.json new file mode 100644 index 000000000..73feadc54 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_emerald_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_emerald_trim.json new file mode 100644 index 000000000..9c71c2be9 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_gold_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_gold_trim.json new file mode 100644 index 000000000..42a4c6abb --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_iron_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_iron_trim.json new file mode 100644 index 000000000..5ac026e02 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_lapis_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_lapis_trim.json new file mode 100644 index 000000000..f297ff72f --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_netherite_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_netherite_trim.json new file mode 100644 index 000000000..7cfa2b58e --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_quartz_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_quartz_trim.json new file mode 100644 index 000000000..38fcb59bf --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_redstone_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_redstone_trim.json new file mode 100644 index 000000000..66b820433 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_helmet_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_helmet", + "layer1": "minecraft:trims/items/helmet_trim_redstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_amethyst_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_amethyst_trim.json new file mode 100644 index 000000000..50166e207 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_copper_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_copper_trim.json new file mode 100644 index 000000000..fe0b5e275 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_diamond_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_diamond_trim.json new file mode 100644 index 000000000..f33d2a5f0 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_emerald_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_emerald_trim.json new file mode 100644 index 000000000..ac69efbca --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_gold_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_gold_trim.json new file mode 100644 index 000000000..e9694b32d --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_iron_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_iron_trim.json new file mode 100644 index 000000000..477544e0e --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_lapis_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_lapis_trim.json new file mode 100644 index 000000000..175b8c69c --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_netherite_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_netherite_trim.json new file mode 100644 index 000000000..e6d34e069 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_quartz_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_quartz_trim.json new file mode 100644 index 000000000..9d976bda3 --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_redstone_trim.json b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_redstone_trim.json new file mode 100644 index 000000000..425ca01ef --- /dev/null +++ b/src/main/resources/assets/majruszsdifficulty/models/item/trim/enderium_leggings_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "majruszsdifficulty:item/enderium_leggings", + "layer1": "minecraft:trims/items/leggings_trim_redstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow.png b/src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow.png deleted file mode 100644 index 72a05af1f2511881af3a61efea27162d132ec46c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmV;U0$lxxP)Px%T}ebiR9J=WRZVZxKoEVgGp-#+COJf{lyb-gPTV;17klGJ^oQ^lIH3wuQHd&t z2FvSpcH){t*y$#=6B8rEA@8#BWIgld&4&kQ!JEbFiiW;C=ehs@7%ppf1M>0p`;S4J zuR|Cf`ja;$Xy_vfFTk4;D*sKwn0*ST#0CI(t-+Z=Lm#{;p^G&DV3NcL$VU*o1Pp?p zfzV$d06?e!4e6`hn2lg_P_xJ0`i4Kt_$S405glNZ(xhT z;`*vGTp}KY0JgPvK}2FRTne$R3J|*`O+?Z=%zSh@yipV)9))0L36v=hx^2@U|Y2AN;Z zD%(sdFLs?8gXPoD+B>u9tIBZ*9&kI^&bw8jY2nN-XH}E!;c?lCM2&zuMnrT} z%D(%cM!?+z%v>wMKK?}RCJf%cdt2#Zja8~JNn$wx)NE0B0bQ)+(>#hoeE#yS7XdHL za;#DXV+^Ku_qfsP?H1dVxY27&@9trY!75cqvmCiDwq+uMyF*S^V17BP+%@d3Ui;gg zP5scd+1lVeJT3>!jHgu!!=;>=(n7@AWWgANfc)OU0l-^aU)9EFALBTZX0&IfG`hTd z3_BUzCW$!wm}O%B^!(gA)6Q^7eDJ*986Ly`r@$F!oN>m##xIdTk)>7yxeovU002ov JPDHLkV1h7#G{OJ? diff --git a/src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow_eyes.png b/src/main/resources/assets/majruszsdifficulty/textures/entity/black_widow_eyes.png deleted file mode 100644 index 750ff85cd2eac3ecd7488f8fff49c82a57d1cd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}uAVNAArY-_ zFFA4nRk>U|xwvY>wAjmGjVxQWx&Gbe)#%V-WMELyb2aXsI6HEO$Zols^-nhJDxdqR k@09bMiUZ%x7#OyfCLZRwslR@jAJ9MsPgg&ebxsLQ0IOjxe*gdg diff --git a/src/main/resources/assets/majruszsdifficulty/textures/entity/cerberus.png b/src/main/resources/assets/majruszsdifficulty/textures/entity/cerberus.png index a7ad405199c705d03f4aad2e9dce5a2cefbcd6cb..75eac245d9ee0138f50ac77c6b60b06d6023f397 100644 GIT binary patch delta 2361 zcmV-93C8xr5YQ5kFniw%%uet;a+U<4-07@wcApig;Cx0g;TYDQk&kG&LLATq@ z{470Bza7Vc)*8KDuVl8NdmMb+X0sX6|1jbEe$*$8XO3}KC@*TDwT2J^zVGK6AdWCu zpSKatY(wpoQZs}H03igFQghF0t>HM%+6hmvPJmJhT5Cut;rl+Ml<4((sXHc)Q%XTf z3CD3l0GTC0YkwV0plvc}96r&e(F7T(oy;HSAWas8lKlf&j-tKma&ywQz95!Ieq{01yNLK3rX4 z55VPcIMb;)iOYZp!QEmLTmnoZPZH4Wc1!fz^vZg@UTI?zVDm~EjYin-_oI95c00_o z4p0@PXN6%FZn9fyr1O1 z+d#g2*0DHIc}XE_`tAGvO5Rw{N3;WklU5@JTH_|0>I3I&wq8@*tpL!;KtMDZt^y985l|bBTpD(<7)u^ zhlLOr3qe{UI5)4+XoRloVl)~d zu1s1;NhwqL@07`rB?}}kHa-EsEn$FZ49fF7Yy8P|-NZ5pi{dzOaiP1$+9x2+$A9K^ z%D^B3)$8@S_IvyLxEu~+OLV)|vAM6m2&?e%(_rl@VWkxI_V;Iqo}~@|*W+g~qT>^-R6n*8_)7BT2zxndZ@OnI+OO4@^Xj4H{(j+|j;){^? zu~VzfBq5N^F%32kX(ZXDSP6*p`G4cq26@0aZ?{^_RlgpOttB6a!s!?1=kR?WT5I^e zZ*^}^PEJbX6i{2<2j4H~cDtn{!qWXkDzE(f+0)SU?Fr@@0hmsN+5S&|{!1ozjR;2j z30dlCB;oDF1-QG((<~RQEzBJ=-Us!aB@D61n3rwD<38~}|2=(y)7OaVe18Lmw(&S@ z8#0`LyVWYLGuG3Tj^n^2U>2iF?J4%d9e`EGfD)5)2|PueUT8EL!Iq{HHz6Fm)he#X z3@RB zv1#iFGj<8SjDH1iJ6KZuC4qNMZI%6L&oxBe>zzAP6$mc|W#t+h9#k z2Y}``-{82_iljgYfv?`Y!9NZT@Tgu-OjS4CKmr-nyrtF}d;9zFeSbf;1m+KAnCHya zoqm{vvep`t$z*C&2LqJLQ@iXq4w?Y|`1&=zK01O@3V;3nd;ASkBEMylK?a&X3(RvR zmmaM(#CRM{Qrf!XIM}ULacLx^hFgR+!zE+g*4)fINDRU8X}&BM!u3TNNE3%mfN7zDwL>&W}#le1f`;w@{Frrz)OOMgUUTS?dkHB=6Q0D~Kj zrql4mIdP(^wFZVmTn>lPeJSP4UM^stKnBg5O3U-2 z-~LZOL5#<9`=YIOd#;oJoSj7k|M>Ca!a*sbn5RqwZtRPW^1r_OF3}~EQifz3wAMI1 zIa$i3d+^{v^nYQEJY^d2*j3?G(4q!h9WDFe4PbpofM^nmZipA|3G=+jZGo9kTV$mA zRz%Uc$iy~yKZJWJ0l=*xF8V~IN=w-`DIhm=8<09LXcY!{ouDn$qT7Il6OhLZEDE;a zearM=BNMhX?q;(Ya^1=kkg}w6-z9j$Z_#Z)SxSjtd4Jwa6qL%i&y3Nh$au_%pDSKR zM)7?@8JLC=fGKe=hr^j@XdKLFD4{6&meLBhA{JyuK?zx+p@fU`^SgP=9N30cFi?OK zGIs$p1-{5zlK1kUHW7at+|WXtkXbcohwg^k3$2PaDvJCwH9-6qaCz1SPY(xfodEO8 zy0pPWCx0z@TiZDN{8-v?c)O&Nmr2;D1n|@qN(=xHZSwPL9CUwge}C>7BFejW?@9pB z>2$(0;}CXgwP<@b%{XUgXC(l5{P^*9oRBdwxJiYX+;A=J8BZn?AnqEkvvmqjiQxzK zh)|2hiT0{}A3vlVXBGBkqbi7woE{t=#&SJRcQVm#D delta 2090 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/majruszsdifficulty/textures/item/bad_omen_potion.png b/src/main/resources/assets/majruszsdifficulty/textures/item/bad_omen_potion.png deleted file mode 100644 index 8a9d2b0cb28da42a1b97e4a2a016b8c865e17859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|UV6GXhFJ6_ zCrD%*=h13gTHf#J4b}ByUT5?7-~Zz)OAG!LvzD{PI}7rB)!D(b zeSZH>dO|`%$6Na^^3$c%F7>Jk#Z>j|Ah6*`>7+b{GieLYtmHAbPUg7T%4Igc q-Z@0)!CCGTv&6)2Jq-0WV_-Px$Ur9tkR5*>LlCf*TKp4e;imM!-iinBZfAc!22*v0NnSu80khnfwebMVD14@qJd(-H)cgYUniCXmhR%^ZM1 zf2N4i)Klla{|>lcE8he`5LJ=ACgT;RCCKuSEDtd)!DPHbv_~}S_77R*U5$p(QA9!H5JV25Jt9p#45LG>+Tg5r z!R=kI*dquc2LQw9DA#pj-LJg~bQ!-v-s#_5*)5VUx0*v$C}rt2pE4*^5@i;Sfeg~q z<2@=!c6a(`h|<&}%R`*k2kh=t`K2VtaSwT*$5^g13rd3gmSZ7Px$K1oDDR5*>LlCg@yKoEw%h^-*OCZGgtEi7^ta&UDXL0g~V?g{R?djs19j_a*$ zEOd($wnst&HWDIvfL!D3WutKA<|u&V9D9`2)FMU`PMa| z0D8{YI1)0&`^U60C}uWY9kZ$rp z0Jc3cKt-9JX;5h=iWlw)G1B+fC)!A|rduY;^F2kGqP9!C$$}(PCWYqMO~41^@s6AM^iV00001b5ch_0Itp)=>Px#u1Q2eR5*=eV4x5% zViUZQ>-is>_|;o?7{YhnM$v;|z?G-p|Nl6(4yTRJ72Fwo4MpJkSkM*RfAy8&+l&Sj zv3DOn!r3x2uHiHs4mO{EgVhVM{f98bnXoBT6yqjr3odZw>0WoNw&QaJhGtw|z-9=B z7dD@N^B*~s2?4BOKnlPxfE3#?47mU5D?tt2YcHUL4|Tn8Px&(Md!>RA_HOlA%imak7*Qg4AX)OXy%a z2wem@sV%X@e#v>fxVm;A za+a^k?upffJCAmVsNE%hW+hcK`mQ&6dBJ^{?ShvPZWk)MCuICd7J4>qJ+Sa}g6n}e z22DHa%cWVN`+wYF9ABA1vRc=Gx^*uaN#IzZZ3$%{Mr5M!sPpVQat$2d9X4AJryS`6L=EFAX%+z zh$XCR5m30pNXI+5Ue*8;D6LceFmidovVdx8cuURz6@SZu!u+;;7AhXtQalK#Kgt7c z5G%VUWNvy)(^GNtfmp)I%=7Y$!FeV~8+iS85Hy{W>t!vuUe=_6(rEVp45HZ@0ARyp zYIqC#-+st>u(~wj=x;RQ-3^Bn4{RwO1XOr<001l#9&_3XV_>E81x(-?*sKgWt|=3w z446DHQ-6B7G)w4ig=VCb2hSf2TW@Qf9tf8=Tqz#dQalK#aO@Y@85&@?AY%Z4H9G@< z*QSFzjGL7qM@9m`MGFl}wC^kn05c<{V?gDb1%ToKE5(C=3I`81D?`ZSyRJ>RlmWn; zU}MoU>ska9&-wvfwd>h5VGER=9yHoL7YhL3)qmZRoB=A91)|jnSBeL=6b}L_Jo^P& zON&L%T>EJ%&lsF%f|P1TpYYOIPsQb?_eQ%1w)m)L(?n0ji7y^(EE<}lf+@Q?0Td5d zDINq=cz6H+EE5j9`>wXa7|?XShzVQ+rM*eV_3F}yCQT$-KPb#^YkD?qeIoHyKiF6_ z?0>g44}{Abt`rY!DINq=IQ9!WA8uPI?e+cLbFoboi=GLMaEGz9H~Bjw4Tq7#u7n4T zb`KkihJyvGOC#FoXwzR80QhGCpm@Ma@gShW!GqG?Bo>}dxK`~_1^{z{Wk1sS;sG6R z`qe*I?2u+l(t}332bKj?)7QSp8L-5#K!3D4;Y#tqmf}G`g=fD&YiZF)LUGY03G zAf=koC%kmdD|SdG-zC0ykgV1<)`+h%h~j}Q#e;wf4-WwQSYb4h!10m0 ztuO{OoqaQ*X7q{ZWTZR~V15#CoLTl$KQK>AoAP~T`QPKgFZC~l{zMuIG5`Po00>D% JPDHLkV1m7-+6Djs diff --git a/src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul1.png b/src/main/resources/assets/majruszsdifficulty/textures/item/soul_jar_soul1.png new file mode 100644 index 0000000000000000000000000000000000000000..8660408d9cd8828a9d80bd110bf00d5c3572c667 GIT binary patch literal 272 zcmV+r0q_2aP)Px#%1J~)RA_Px#%1J~)RA_vPvUuy#%0Mz~vE9WznQ3L< zT}w+B+qtzHv(q_sW7<0dm`zfwWkN9z7_h)!2_g88!&*Y6ivRDxSPx#$Vo&&RA_Kv&&728@x^;BB~m`2>?fJltn7y+|0~U)CD1W08e*ooIl>f<2ZWvCCWfH?6BRW zdomMc;9pIoi*c?^qdT2*8uPa^fYr<_MV(OW0|qRx6;mkNafY{e@T_d?P$rA$O96yS->EHxc-a+x$Y689&-7Jj>6O_|){3$LZ( UR*EbZaR2}S07*qoM6N<$f^YV0!T(`vt^Cvhik!rfEu!`YJ!%;R4HZ#LE!CVeIUKQykU*(%^3epZ6 c6`iFS7`WGynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/majruszsdifficulty/textures/mob_effect/regenerative_wrap.png b/src/main/resources/assets/majruszsdifficulty/textures/mob_effect/regenerative_wrap.png new file mode 100644 index 0000000000000000000000000000000000000000..951a363aab32ce487f8162dfe538f12bb4a0d91c GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}1)eUBAr`&K z2@=R7?HmPw=If4OeW-TnDwSeH{~!K dZR5#hV8~H7WRbqWQ3AA^!PC{xWt~$(698w!J`n%_ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed.json b/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed.json index 3fd586f55..3957de955 100644 --- a/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed.json +++ b/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed.json @@ -17,10 +17,9 @@ }, "criteria": { "bleeding_healed": { - "trigger": "majruszsdifficulty:bandage_used", + "trigger": "majruszsdifficulty:basic_trigger", "conditions": { - "bandage_id": "majruszsdifficulty:bandage", - "used_on_oneself": true + "type": "bandage_used" } } }, diff --git a/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed_other.json b/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed_other.json index cc17da2a7..38e2a0cf7 100644 --- a/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed_other.json +++ b/src/main/resources/data/majruszsdifficulty/advancements/progressive_difficulty/bleeding_healed_other.json @@ -20,10 +20,9 @@ }, "criteria": { "bleeding_healed": { - "trigger": "majruszsdifficulty:bandage_used", + "trigger": "majruszsdifficulty:basic_trigger", "conditions": { - "bandage_id": "majruszsdifficulty:golden_bandage", - "used_on_oneself": false + "type": "golden_bandage_used_on_others" } } }, diff --git a/src/main/resources/data/majruszsdifficulty/custom/bleeding_armor.json b/src/main/resources/data/majruszsdifficulty/custom/bleeding_armor.json new file mode 100644 index 000000000..ceb34943b --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/custom/bleeding_armor.json @@ -0,0 +1,18 @@ +[ + { + "id": "{regex}.*_helmet", + "chance_multiplier": 0.8 + }, + { + "id": "{regex}.*_chestplate", + "chance_multiplier": 0.6 + }, + { + "id": "{regex}.*_leggings", + "chance_multiplier": 0.7 + }, + { + "id": "{regex}.*_boots", + "chance_multiplier": 0.9 + } +] \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/custom/bleeding_tools.json b/src/main/resources/data/majruszsdifficulty/custom/bleeding_tools.json new file mode 100644 index 000000000..be35deefd --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/custom/bleeding_tools.json @@ -0,0 +1,46 @@ +[ + { + "id": "minecraft:trident", + "chance": 0.25 + }, + { + "id": "{regex}.*_sword", + "chance": 0.25, + "enchantments": [ + { + "id": "minecraft:sharpness", + "extra_chance": 0.015 + }, + { + "id": "{regex}(minecraft:smite)|(minecraft:bane_of_arthropods)|(majruszsenchantments:misanthropy)", + "extra_chance": 0.01 + } + ] + }, + { + "id": "{regex}.*_axe", + "chance": 0.225, + "enchantments": [ + { + "id": "minecraft:sharpness", + "extra_chance": 0.015 + }, + { + "id": "{regex}(minecraft:smite)|(minecraft:bane_of_arthropods)|(majruszsenchantments:misanthropy)", + "extra_chance": 0.01 + } + ] + }, + { + "id": "{regex}(.*_pickaxe)|minecraft:shears", + "chance": 0.2 + }, + { + "id": "{regex}.*_shovel", + "chance": 0.175 + }, + { + "id": "{regex}.*_hoe", + "chance": 0.15 + } +] \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/custom/cursed_armor_locations.json b/src/main/resources/data/majruszsdifficulty/custom/cursed_armor_locations.json new file mode 100644 index 000000000..749e3ccc0 --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/custom/cursed_armor_locations.json @@ -0,0 +1,48 @@ +[ + { + "loot": "majruszsdifficulty:gameplay/cursed_armor_dungeon", + "chests": [ + "minecraft:chests/simple_dungeon" + ], + "sound": "minecraft:item.armor.equip_leather", + "chance": 0.5 + }, + { + "loot": "majruszsdifficulty:gameplay/cursed_armor_stronghold", + "chests": [ + "minecraft:chests/stronghold_corridor", + "minecraft:chests/stronghold_crossing", + "minecraft:chests/stronghold_library" + ], + "sound": "minecraft:item.armor.equip_chain", + "chance": 0.4 + }, + { + "loot": "majruszsdifficulty:gameplay/cursed_armor_portal", + "chests": [ + "minecraft:chests/ruined_portal" + ], + "sound": "minecraft:item.armor.equip_gold", + "chance": 1.0 + }, + { + "loot": "majruszsdifficulty:gameplay/cursed_armor_nether", + "chests": [ + "minecraft:chests/bastion_bridge", + "minecraft:chests/bastion_hoglin_stable", + "minecraft:chests/bastion_other", + "minecraft:chests/bastion_treasure", + "minecraft:chests/nether_bridge" + ], + "sound": "minecraft:item.armor.equip_gold", + "chance": 0.25 + }, + { + "loot": "majruszsdifficulty:gameplay/cursed_armor_end", + "chests": [ + "minecraft:chests/end_city_treasure" + ], + "sound": "minecraft:item.armor.equip_diamond", + "chance": 0.5 + } +] \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/game_stages/messages.json b/src/main/resources/data/majruszsdifficulty/custom/game_stage_messages.json similarity index 71% rename from src/main/resources/data/majruszsdifficulty/game_stages/messages.json rename to src/main/resources/data/majruszsdifficulty/custom/game_stage_messages.json index dce98d1c1..15d38a677 100644 --- a/src/main/resources/data/majruszsdifficulty/game_stages/messages.json +++ b/src/main/resources/data/majruszsdifficulty/custom/game_stage_messages.json @@ -11,5 +11,10 @@ { "id": "majruszsdifficulty.on_master_mode_start", "game_stage": "MASTER" + }, + { + "id": "majruszsdifficulty.undead_army.on_master", + "game_stage": "MASTER", + "style": "DARK_PURPLE" } ] \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/undead_army/waves.json b/src/main/resources/data/majruszsdifficulty/custom/undead_army_waves.json similarity index 79% rename from src/main/resources/data/majruszsdifficulty/undead_army/waves.json rename to src/main/resources/data/majruszsdifficulty/custom/undead_army_waves.json index 60699cf02..3cd5b44f5 100644 --- a/src/main/resources/data/majruszsdifficulty/undead_army/waves.json +++ b/src/main/resources/data/majruszsdifficulty/custom/undead_army_waves.json @@ -9,7 +9,7 @@ { "type": "minecraft:skeleton", "count": 2, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_1_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_1" }, { "type": "minecraft:zombie", @@ -19,7 +19,7 @@ { "type": "minecraft:skeleton", "count": 2, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_1_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_1" } ], "exp": 8 @@ -34,7 +34,7 @@ { "type": "minecraft:skeleton", "count": 3, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_2_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_2" }, { "type": "minecraft:zombie", @@ -44,7 +44,7 @@ { "type": "minecraft:skeleton", "count": 2, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_2_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_2" } ], "exp": 16 @@ -86,7 +86,7 @@ }, { "type": "minecraft:wither_skeleton", - "equipment": "majruszsdifficulty:undead_army/equipment_wave_4_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_4" }, { "type": "minecraft:skeleton", @@ -95,7 +95,7 @@ }, { "type": "minecraft:wither_skeleton", - "equipment": "majruszsdifficulty:undead_army/equipment_wave_4_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_4" }, { "type": "majruszsdifficulty:tank" @@ -107,7 +107,7 @@ }, { "type": "minecraft:wither_skeleton", - "equipment": "majruszsdifficulty:undead_army/equipment_wave_4_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_4" }, { "type": "minecraft:stray", @@ -116,7 +116,7 @@ }, { "type": "minecraft:wither_skeleton", - "equipment": "majruszsdifficulty:undead_army/equipment_wave_4_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_4" } ], "exp": 32, @@ -140,7 +140,7 @@ { "type": "minecraft:wither_skeleton", "count": 2, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_5_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_5" }, { "type": "majruszsdifficulty:tank" @@ -153,7 +153,7 @@ { "type": "minecraft:wither_skeleton", "count": 2, - "equipment": "majruszsdifficulty:undead_army/equipment_wave_5_wither_skeleton" + "equipment": "majruszsdifficulty:undead_army/equipment_wave_5" } ], "boss": { @@ -161,5 +161,41 @@ }, "exp": 40, "game_stage": "EXPERT" + }, + { + "mobs": [ + { + "type": "minecraft:zombie", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6" + }, + { + "type": "minecraft:skeleton", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6_skeleton" + }, + { + "type": "majruszsdifficulty:tank" + }, + { + "type": "minecraft:stray", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6_skeleton" + }, + { + "type": "minecraft:husk", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6" + }, + { + "type": "minecraft:wither_skeleton", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6_wither_skeleton" + }, + { + "type": "majruszsdifficulty:cerberus" + } + ], + "boss": { + "type": "majruszsdifficulty:giant", + "equipment": "majruszsdifficulty:undead_army/equipment_wave_6" + }, + "exp": 48, + "game_stage": "MASTER" } ] \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/forge/biome_modifier/nether_mobs_modifier.json b/src/main/resources/data/majruszsdifficulty/forge/biome_modifier/nether_mobs_modifier.json new file mode 100644 index 000000000..3cda2a30b --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/forge/biome_modifier/nether_mobs_modifier.json @@ -0,0 +1,12 @@ +{ + "type": "forge:add_spawns", + "biomes": "#minecraft:is_nether", + "spawners": [ + { + "type": "majruszsdifficulty:cerberus", + "weight": 1, + "minCount": 1, + "maxCount": 1 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/entities/giant.json b/src/main/resources/data/majruszsdifficulty/loot_tables/entities/giant.json new file mode 100644 index 000000000..4a6be1d2f --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/entities/giant.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:rotten_flesh", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 5.0, + "max": 10.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:looting_enchant", + "count": { + "min": 3.0, + "max": 5.0 + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon.json similarity index 92% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon.json index 6a3d8ac27..16b5818cf 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_dungeon.json @@ -1,10 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/cursed_armor_dungeon_loot", - "cursed_armor": { - "loot": "minecraft:chests/simple_dungeon", - "sound": "minecraft:item.armor.equip_leather", - "chance": 0.5 - }, "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end.json similarity index 93% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end.json index 92bea8fa1..3cfec073a 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_end.json @@ -1,10 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/cursed_armor_end_loot", - "cursed_armor": { - "loot": "minecraft:chests/end_city_treasure", - "sound": "minecraft:item.armor.equip_diamond", - "chance": 0.5 - }, "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether.json similarity index 92% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether.json index 6f5b77d94..2eefad61d 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether.json @@ -1,10 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/cursed_armor_portal_loot", - "cursed_armor": { - "loot": "minecraft:chests/ruined_portal", - "sound": "minecraft:item.armor.equip_gold", - "chance": 1.0 - }, "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal.json similarity index 86% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal.json index dd415a17a..2eefad61d 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_nether_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_portal.json @@ -1,16 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/cursed_armor_portal_loot", - "cursed_armor": { - "loot": [ - "minecraft:chests/bastion_bridge", - "minecraft:chests/bastion_hoglin_stable", - "minecraft:chests/bastion_other", - "minecraft:chests/bastion_treasure", - "minecraft:chests/nether_bridge" - ], - "sound": "minecraft:item.armor.equip_gold", - "chance": 0.25 - }, "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold.json similarity index 88% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold.json index 250d8e91e..0a08cbe0f 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/cursed_armor_stronghold.json @@ -1,14 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/cursed_armor_library_loot", - "cursed_armor": { - "loot": [ - "minecraft:chests/stronghold_corridor", - "minecraft:chests/stronghold_crossing", - "minecraft:chests/stronghold_library" - ], - "sound": "minecraft:item.armor.equip_chain", - "chance": 0.4 - }, "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/elder_guardian_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_elder_guardian.json similarity index 96% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/elder_guardian_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_elder_guardian.json index dcadbb097..581628a4a 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/elder_guardian_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_elder_guardian.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/elder_guardian_treasure_loot", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/ender_dragon_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_ender_dragon.json similarity index 94% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/ender_dragon_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_ender_dragon.json index bb83ac127..a239a9fce 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/ender_dragon_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_ender_dragon.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/ender_dragon_treasure_loot", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/fishing_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_fishing.json similarity index 98% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/fishing_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_fishing.json index fe112fce0..83f316730 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/fishing_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_fishing.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/fishing_treasure_loot", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/pillager_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_pillager.json similarity index 82% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/pillager_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_pillager.json index c74542e7d..50570654b 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/pillager_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_pillager.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/pillager_treasure_loot", "type": "minecraft:gift", "pools": [ { @@ -8,32 +7,23 @@ { "type": "minecraft:item", "name": "majruszsdifficulty:recall_potion", + "weight": 3, "quality": 4, "functions": [ { "function": "set_count", "count": { - "min": 2, - "max": 5 + "min": 4, + "max": 8 } } ] - } - ] - }, - { - "rolls": 1, - "entries": [ + }, { "type": "minecraft:item", - "name": "majruszsdifficulty:bad_omen_potion", - "quality": 4, - "conditions": [ - { - "condition": "minecraft:random_chance", - "chance": 0.33333 - } - ] + "name": "majruszsdifficulty:evoker_fang_scroll", + "weight": 1, + "quality": 4 } ] }, diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/undead_army_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_undead_army.json similarity index 97% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/undead_army_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_undead_army.json index bb81ba178..e45aa74c2 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/undead_army_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_undead_army.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/undead_army_treasure_loot", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/wither_treasure_loot.json b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_wither.json similarity index 95% rename from src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/wither_treasure_loot.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_wither.json index 2c11091de..b514cd505 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/wither_treasure_loot.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/gameplay/treasure_bag_wither.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:gameplay/wither_treasure_loot", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_leader.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_leader.json index fbac15ea8..4413f3bf4 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_leader.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_leader.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/piglin_leader", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_sidekick.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_sidekick.json index 7644d3bde..a72597b56 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_sidekick.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/piglin_sidekick.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/piglin_sidekick", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_leader.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_leader.json index f5f8c1425..102d2c912 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_leader.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_leader.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/skeleton_leader", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_sidekick.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_sidekick.json index 20f010d68..941e16090 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_sidekick.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/skeleton_sidekick.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/skeleton_sidekick", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_leader.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_leader.json index 8dd917e94..2124a4584 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_leader.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_leader.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/zombie_leader", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_sidekick.json b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_sidekick.json index 732e6ce55..157b386e2 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_sidekick.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/mob_groups/zombie_sidekick.json @@ -1,5 +1,4 @@ { - "mlib": "majruszsdifficulty:mob_groups/zombie_sidekick", "type": "minecraft:gift", "pools": [ { diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_2_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_2_skeleton.json deleted file mode 100644 index da9120167..000000000 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_2_skeleton.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "minecraft:gift", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:loot_table", - "name": "majruszsdifficulty:undead_army/equipment_wave_2" - } - ] - }, - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:bow", - "weight": 90, - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - } - ] - }, - { - "type": "minecraft:item", - "name": "minecraft:bow", - "weight": 10, - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - }, - { - "function": "minecraft:enchant_randomly" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_3_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_3_skeleton.json index 159ed6028..74f574e3c 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_3_skeleton.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_3_skeleton.json @@ -16,23 +16,6 @@ { "type": "minecraft:item", "name": "minecraft:bow", - "weight": 80, - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - } - ] - }, - { - "type": "minecraft:item", - "name": "minecraft:bow", - "weight": 20, "functions": [ { "function": "minecraft:set_damage", @@ -46,6 +29,12 @@ { "function": "minecraft:enchant_randomly" } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.2 + } ] } ] diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_skeleton.json index 60d0ae999..94a4e7817 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_skeleton.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_skeleton.json @@ -16,23 +16,6 @@ { "type": "minecraft:item", "name": "minecraft:bow", - "weight": 70, - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - } - ] - }, - { - "type": "minecraft:item", - "name": "minecraft:bow", - "weight": 30, "functions": [ { "function": "minecraft:set_damage", @@ -46,6 +29,12 @@ { "function": "minecraft:enchant_randomly" } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.3 + } ] } ] diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_skeleton.json index e383a36ca..8ee24b2a1 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_skeleton.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_skeleton.json @@ -16,23 +16,6 @@ { "type": "minecraft:item", "name": "minecraft:bow", - "weight": 60, - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - } - ] - }, - { - "type": "minecraft:item", - "name": "minecraft:bow", - "weight": 40, "functions": [ { "function": "minecraft:set_damage", @@ -46,6 +29,12 @@ { "function": "minecraft:enchant_randomly" } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.4 + } ] } ] diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_wither_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_wither_skeleton.json deleted file mode 100644 index a833f3c19..000000000 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_5_wither_skeleton.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "minecraft:gift", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:loot_table", - "name": "majruszsdifficulty:undead_army/equipment_wave_5" - } - ] - }, - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:stone_sword", - "functions": [ - { - "function": "minecraft:set_damage", - "damage": { - "type": "minecraft:uniform", - "max": 0.5, - "min": 0.25 - }, - "add": false - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6.json new file mode 100644 index 000000000..32f50e05c --- /dev/null +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6.json @@ -0,0 +1,97 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "majruszsdifficulty:tattered_helmet", + "functions": [ + { + "function": "minecraft:set_damage", + "damage": { + "type": "minecraft:uniform", + "max": 0.5, + "min": 0.25 + }, + "add": false + }, + { + "function": "minecraft:enchant_randomly" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "majruszsdifficulty:tattered_chestplate", + "functions": [ + { + "function": "minecraft:set_damage", + "damage": { + "type": "minecraft:uniform", + "max": 0.5, + "min": 0.25 + }, + "add": false + }, + { + "function": "minecraft:enchant_randomly" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "majruszsdifficulty:tattered_leggings", + "functions": [ + { + "function": "minecraft:set_damage", + "damage": { + "type": "minecraft:uniform", + "max": 0.5, + "min": 0.25 + }, + "add": false + }, + { + "function": "minecraft:enchant_randomly" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "majruszsdifficulty:tattered_boots", + "functions": [ + { + "function": "minecraft:set_damage", + "damage": { + "type": "minecraft:uniform", + "max": 0.5, + "min": 0.25 + }, + "add": false + }, + { + "function": "minecraft:enchant_randomly" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_1_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_skeleton.json similarity index 88% rename from src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_1_skeleton.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_skeleton.json index 6f6600bbd..2cc823633 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_1_skeleton.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_skeleton.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:loot_table", - "name": "majruszsdifficulty:undead_army/equipment_wave_1" + "name": "majruszsdifficulty:undead_army/equipment_wave_6" } ] }, @@ -25,6 +25,9 @@ "min": 0.25 }, "add": false + }, + { + "function": "minecraft:enchant_randomly" } ] } diff --git a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_wither_skeleton.json b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_wither_skeleton.json similarity index 88% rename from src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_wither_skeleton.json rename to src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_wither_skeleton.json index 3e40fb35a..f67c132a4 100644 --- a/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_4_wither_skeleton.json +++ b/src/main/resources/data/majruszsdifficulty/loot_tables/undead_army/equipment_wave_6_wither_skeleton.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:loot_table", - "name": "majruszsdifficulty:undead_army/equipment_wave_4" + "name": "majruszsdifficulty:undead_army/equipment_wave_6" } ] }, @@ -25,6 +25,9 @@ "min": 0.25 }, "add": false + }, + { + "function": "minecraft:enchant_randomly" } ] } diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json b/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json new file mode 100644 index 000000000..5a30d471b --- /dev/null +++ b/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json @@ -0,0 +1,5 @@ +{ + "values": [ + "majruszsdifficulty:bleeding" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/trimmable_armor.json b/src/main/resources/data/minecraft/tags/items/trimmable_armor.json new file mode 100644 index 000000000..c56ae2795 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/trimmable_armor.json @@ -0,0 +1,8 @@ +{ + "values": [ + "majruszsdifficulty:enderium_helmet", + "majruszsdifficulty:enderium_chestplate", + "majruszsdifficulty:enderium_leggings", + "majruszsdifficulty:enderium_boots" + ] +} \ No newline at end of file

nEIZ?X+Y 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