World Gets Harder

World Gets Harder (WGH) makes your Minecraft world more dangerous the longer you survive. The game is simple: the longer you play in one world, the harder it gets.

File Details

worldgetsharder-1.0.1.jar

  • R
  • Mar 21, 2026
  • 30.22 KB
  • 13
  • 1.21
  • Forge

File Name

worldgetsharder-1.0.0.jar

Supported Versions

  • 1.21

Curse Maven Snippet

Forge

implementation "curse.maven:world-gets-harder-1489436:7791054"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

📋 Changelog – World Gets Harder RPG

Version 1.0.1 – API Migration & Bugfixes

Date: March 2026 Minecraft: 1.21 | Forge: 51.0.33


🔧 Forge / Minecraft API Migration

This update migrates the entire mod to the new Forge 1.21 APIs. Several internal Forge libraries were fully replaced or renamed between 1.20.x and 1.21.

AttributeModifier API The entire AttributeModifier API was overhauled in Minecraft 1.21. Modifiers are no longer identified by UUID strings but by ResourceLocation objects. Additionally, all Operation enum values were renamed:

  • Operation.ADDITIONOperation.ADD_VALUE
  • Operation.MULTIPLY_BASEOperation.ADD_MULTIPLIED_BASE
  • Operation.MULTIPLY_TOTALOperation.ADD_MULTIPLIED_TOTAL

Affected: DayProgressionEvents.java – speed boost, bonus HP and mini-boss HP modifiers

ItemStack Data Component System Minecraft 1.21 replaces the old NBT tag system (CompoundTag) on ItemStack level with the new Data Components System. All item data is now stored and read via DataComponents.CUSTOM_DATA.

  • stack.getOrCreateTag()stack.get(DataComponents.CUSTOM_DATA)
  • stack.getOrCreateTagElement("display")DataComponents.LORE
  • Component.Serializer.toJson(component) → Raw JSON String (new signature requires HolderLookup.Provider)

Affected: ItemLevelingEvents.java – item XP, level, perks and lore display

VillagerProfession Enum VillagerProfession.BLACKSMITH no longer exists in Minecraft 1.21 and has been replaced with VillagerProfession.ARMORER.

Affected: VillageEvolutionEvents.java

AdvancementEarnEvent Package The package for AdvancementEarnEvent was moved in Forge 1.21:

  • Old: net.minecraftforge.event.advancements.AdvancementEarnEvent
  • New: net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementEarnEvent

Additionally, the method .getId() on advancement objects was replaced by .id().

Affected: WorldReactionEvents.java

VillageRaidEvent removed net.minecraftforge.event.village.VillageRaidEvent no longer exists in Forge 1.21 and has been fully removed. Affected functionality was replaced by alternative mechanisms.

Affected: VillageEvolutionEvents.java

EnderDragon & WitherBoss Imports Boss classes had to be updated to their correct 1.21 packages:

  • EnderDragonnet.minecraft.world.entity.boss.enderdragon.EnderDragon
  • WitherBossnet.minecraft.world.entity.boss.wither.WitherBoss

Affected: WorldReactionEvents.java


🐛 Bug Fixes

DayProgressionEvents

  • Attribute modifiers are now correctly registered with ResourceLocation IDs – prevents conflicts when multiple mobs are buffed simultaneously
  • Added isClientSide() guard – prevents client-side crash during mob spawning
  • Added hasCustomName() check – boss entities such as the Wither are no longer unintentionally buffed
  • Added duplicate modifier check via attr.getModifier(id) == null – prevents double-stacking of modifiers
  • setHealth() is now correctly called after applying the max HP modifier
  • Drop chance for equipped armor set to 0.0f – prevents armor farming exploit
  • lastAnnouncedDay is now only tracked via the overworld tick – prevents duplicate messages from the Nether and End dimensions

ItemLevelingEvents

  • Added isEmpty() guard on ItemStack – prevents NPE when hand is empty
  • Added isClientSide() guard on block break event – prevents client-side execution
  • Progress bar value is now clamped to [0, 10] – prevents negative or overflowing bar values
  • Item lore is now correctly set via DataComponents.LORE instead of deprecated NBT display tags

VillageEvolutionEvents

  • Fixed ConcurrentModificationException – entity list is now copied as a snapshot before iterating
  • Added null check for EntityType.create() – prevents NPE on failed entity spawns
  • Added findSafeGround() method – villagers and iron golems no longer spawn in mid-air or underground
  • Wall placement now checks whether the target block is air – prevents accidentally overwriting existing structures
  • Village growth is now only triggered every N days – no more multiple triggers per day

WorldReactionEvents

  • All UUID-based sets migrated to Collections.synchronizedSet() – thread safety for server environments
  • Added chaos wave tick guard – chaos wave now correctly fires every 30 seconds instead of every tick
  • Added LightningBolt.setVisualOnly(false) – lightning now actually deals damage instead of being purely visual
  • All mob spawns now use Heightmap-based Y lookup – entities no longer spawn underground or in mid-air
  • Added isClientSide() guard on all event handlers

TitleScreenOverlay

  • Removed unused PoseStack import

⚠️ Notes

  • This version is not save-compatible with item level data from version 1.0.0, as the NBT system has been replaced by Data Components. Item levels and XP will be reset.