Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 44 lines 1.7 kB view raw
1package net.lerariemann.infinity.access; 2 3import net.lerariemann.infinity.util.InfinityMethods; 4import net.lerariemann.infinity.util.VersionMethods; 5import net.lerariemann.infinity.util.core.RandomProvider; 6import net.lerariemann.infinity.util.teleport.WarpLogic; 7import net.minecraft.core.Holder; 8import net.minecraft.core.Registry; 9import net.minecraft.core.registries.Registries; 10import net.minecraft.server.level.ServerPlayer; 11import net.minecraft.world.damagesource.DamageSource; 12import net.minecraft.world.damagesource.DamageType; 13import net.lerariemann.infinity.registry.var.ModCriteria; 14 15public interface Timebombable { 16 void infinity$timebomb(); 17 boolean infinity$tryRestore(); 18 19 boolean infinity$isTimebombed(); 20 int infinity$getTimebombProgress(); 21 22 static int getCooldownTicks() { 23 int i = RandomProvider.ruleInt("resetChargeCooldown"); 24 if (i <= 0) i = Integer.MAX_VALUE; 25 return i; 26 } 27 28 default void tickTimebombProgress(ServerPlayer player) { 29 int i = infinity$getTimebombProgress(); 30 if (i > 3540) { 31 WarpLogic.respawnAlive(player); 32 } 33 else if (i > 3500) { 34 ModCriteria.WHO_REMAINS.get().trigger(player); 35 } 36 else if (i > 200) { 37 if (i%4 == 0) { 38 Registry<DamageType> r = VersionMethods.getRegistry(player.level().getServer().registryAccess(), Registries.DAMAGE_TYPE); 39 Holder<DamageType> entry = r.wrapAsHolder(VersionMethods.getFromRegistry(r, InfinityMethods.getId("world_ceased"))); 40 player.hurt(new DamageSource(entry), i > 400 ? 2.0f : 1.0f); 41 } 42 } 43 } 44}