From 5d0cd86d22b1dcc636793ce357c538e0440a2a45 Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Fri, 30 Jan 2026 14:49:33 +0530 Subject: [PATCH 1/2] First few event listeners updated to match Neo's system --- .../registries/SpectrumEventListeners.java | 281 +++++++++++++----- 1 file changed, 208 insertions(+), 73 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java index 956ce1da0f..4c67b889e7 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java @@ -17,6 +17,7 @@ import de.dafuqs.spectrum.progression.*; import de.dafuqs.spectrum.registries.client.*; import net.minecraft.advancements.*; +import net.minecraft.core.*; import net.minecraft.core.component.*; import net.minecraft.core.particles.*; import net.minecraft.core.registries.*; @@ -44,12 +45,21 @@ import net.minecraft.world.level.block.state.*; import net.minecraft.world.level.material.*; import net.minecraft.world.phys.*; +import net.neoforged.bus.api.*; +import net.neoforged.fml.event.lifecycle.*; +import net.neoforged.neoforge.common.util.*; +import net.neoforged.neoforge.event.*; +import net.neoforged.neoforge.event.enchanting.*; +import net.neoforged.neoforge.event.entity.living.*; +import net.neoforged.neoforge.event.entity.player.*; +import net.neoforged.neoforge.event.level.*; import java.util.*; import java.util.concurrent.atomic.*; public class SpectrumEventListeners { + /** * Caches the luminance states from fluids as int * for blocks that react to the light level of fluids @@ -57,71 +67,196 @@ public class SpectrumEventListeners { */ public static final HashMap fluidLuminance = new HashMap<>(); - public static void register() { - AttackBlockCallback.EVENT.register((player, world, hand, pos, direction) -> { - if (!world.isClientSide && !player.isSpectator()) { - - ItemStack mainHandStack = player.getMainHandItem(); - if (mainHandStack.getItem() instanceof ExchangeStaffItem exchangeStaffItem) { - BlockState targetBlockState = world.getBlockState(pos); - if (exchangeStaffItem.canInteractWith(targetBlockState, world, pos, player)) { - Optional storedBlock = ExchangeStaffItem.getStoredBlock(player.getMainHandItem()); - - if (storedBlock.isPresent() - && storedBlock.get() != targetBlockState.getBlock() - && storedBlock.get().asItem() != Items.AIR - && ExchangeStaffItem.exchange(world, pos, player, storedBlock.get(), player.getMainHandItem(), true, direction)) { - - return InteractionResult.SUCCESS; - } + + // I'm putting all event listeners here, they can be moved later so nbd + + @SubscribeEvent + public InteractionResult exchangeBlock(PlayerInteractEvent.LeftClickBlock event) { + Level world = event.getLevel(); + BlockPos pos = event.getPos(); + Player player = event.getEntity(); + Direction direction = event.getFace(); + + if (!world.isClientSide && !player.isSpectator()) { + + ItemStack mainHandStack = player.getMainHandItem(); + if (mainHandStack.getItem() instanceof ExchangeStaffItem exchangeStaffItem) { + BlockState targetBlockState = world.getBlockState(pos); + if (exchangeStaffItem.canInteractWith(targetBlockState, world, pos, player)) { + Optional storedBlock = ExchangeStaffItem.getStoredBlock(player.getMainHandItem()); + + if (storedBlock.isPresent() + && storedBlock.get() != targetBlockState.getBlock() + && storedBlock.get().asItem() != Items.AIR + && ExchangeStaffItem.exchange(world, pos, player, storedBlock.get(), player.getMainHandItem(), + true, direction)) { + return InteractionResult.SUCCESS; } - world.playSound(null, player.blockPosition(), SoundEvents.DISPENSER_FAIL, SoundSource.PLAYERS, 1.0F, 1.0F); - return InteractionResult.FAIL; } + world.playSound(null, player.blockPosition(), SoundEvents.DISPENSER_FAIL, SoundSource.PLAYERS, 1.0F, 1.0F); + return InteractionResult.FAIL; } - return InteractionResult.PASS; - }); + } - CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> { - if (client) { - SpectrumColorProviders.resetToggleableProviders(); + return InteractionResult.PASS; + } + + @SubscribeEvent + public void resetColorProviders(TagsUpdatedEvent event) { + if (event.getUpdateCause() == TagsUpdatedEvent.UpdateCause.CLIENT_PACKET_RECEIVED) { + SpectrumColorProviders.resetToggleableProviders(); + } + } + + //Curious: Gang idfk what to name this I'ma be so fr + //Curious TODO: Find a proper name for this event + @SubscribeEvent + public void triggerInertia(BlockEvent.BreakEvent event) { + Player player = event.getPlayer(); + BlockPos pos = event.getPos(); + Level level = event.getPlayer().level(); + BlockState state = event.getState(); + if (player instanceof ServerPlayer serverPlayerEntity) { + ItemStack handStack = player.getItemInHand(serverPlayerEntity.getUsedItemHand()); + if (SpectrumEnchantmentHelper.hasEnchantment(player.level().registryAccess(), SpectrumEnchantments.INERTIA, handStack)) { + InertiaComponent.onInertiaBlockBreak(level, pos, state, serverPlayerEntity, handStack); } - }); + + SpectrumAdvancementCriteria.BLOCK_BROKEN.trigger(serverPlayerEntity, state); + } + } + + //Curious: I'm like 90% sure this isn't needed anymore since Enchantments are stored as components now so I'm just commenting both instances of this + //Curious TODO: Look into whether enchantments still need this event check for the Indestructible enchant +// @SubscribeEvent +// public TriState preventIndestructible(GetEnchantmentLevelEvent.) { +// RegistryE +// if (registryEntry.is(SpectrumEnchantments.INDESTRUCTIBLE) && itemStack.is(SpectrumItemTags.INDESTRUCTIBLE_BLACKLISTED)) { +// return TriState.FALSE; +// } +// return TriState.DEFAULT; +// } + + @SubscribeEvent + public InteractionResult triggerPrioritizedEntityInteraction(PlayerInteractEvent.EntityInteract event){ - PlayerBlockBreakEvents.AFTER.register((level, player, pos, state, blockEntity) -> { - if (player instanceof ServerPlayer serverPlayerEntity) { - ItemStack handStack = player.getItemInHand(serverPlayerEntity.getUsedItemHand()); - if (SpectrumEnchantmentHelper.hasEnchantment(player.level().registryAccess(), SpectrumEnchantments.INERTIA, handStack)) { - InertiaComponent.onInertiaBlockBreak(level, pos, state, serverPlayerEntity, handStack); - } - - SpectrumAdvancementCriteria.BLOCK_BROKEN.trigger(serverPlayerEntity, state); - } - }); + Player player = event.getEntity(); + Entity entity = event.getTarget(); + InteractionHand hand = event.getHand(); + ItemStack handStack = player.getItemInHand(hand); - EnchantmentEvents.ALLOW_ENCHANTING.register((registryEntry, itemStack, enchantingContext) -> { - if (registryEntry.is(SpectrumEnchantments.INDESTRUCTIBLE) && itemStack.is(SpectrumItemTags.INDESTRUCTIBLE_BLACKLISTED)) { - return TriState.FALSE; - } - return TriState.DEFAULT; - }); + if (handStack.getItem() instanceof PrioritizedEntityInteraction && entity instanceof LivingEntity livingEntity) { + return handStack.interactLivingEntity(player, livingEntity, hand); + } + return InteractionResult.PASS; - UseEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> { - ItemStack handStack = player.getItemInHand(hand); - if (handStack.getItem() instanceof PrioritizedEntityInteraction && entity instanceof LivingEntity livingEntity) { - return handStack.interactLivingEntity(player, livingEntity, hand); - } - return InteractionResult.PASS; - }); + } + + @SubscribeEvent + public InteractionResult triggerPrioritizedBlockInteraction(PlayerInteractEvent.RightClickBlock event) { - UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> { - ItemStack handStack = player.getItemInHand(hand); - if (handStack.getItem() instanceof PrioritizedBlockInteraction) { - return handStack.useOn(new UseOnContext(player, hand, hitResult)); - } - return InteractionResult.PASS; - }); + Player player = event.getEntity(); + InteractionHand hand = event.getHand(); + BlockHitResult hitResult = event.getHitVec(); + ItemStack handStack = player.getItemInHand(hand); + + if (handStack.getItem() instanceof PrioritizedBlockInteraction) { + return handStack.useOn(new UseOnContext(player, hand, hitResult)); + } + return InteractionResult.PASS; + + } + + //Curious: I'm basically checking the sleep timer when the player wakes up here + //Curious: Miraculously this works due to a single line in the Player class which is awesome + @SubscribeEvent + public void triggerWhispyCirclet(PlayerWakeUpEvent event) { + Player player = event.getEntity(); + + if(player.getSleepTimer() == 100 && SpectrumTrinketItem.hasEquipped(player, SpectrumItems.WHISPY_CIRCLET.asItem())) { + player.setHealth(player.getMaxHealth()); + WhispyCircletItem.removeNegativeStatusEffects(player); + } + + } + + @SubscribeEvent + public void triggerJeopardentKillCriterion(LivingDeathEvent event) { + Entity player = event.getSource().getEntity(); + LivingEntity target = event.getEntity(); + if(player instanceof ServerPlayer && SpectrumTrinketItem.hasEquipped((LivingEntity) player, SpectrumItems.JEOPARDANT.asItem())) { + SpectrumAdvancementCriteria.JEOPARDANT_KILL.trigger((ServerPlayer) player, target); + } + } + + + public static void register() { +// AttackBlockCallback.EVENT.register((player, world, hand, pos, direction) -> { +// if (!world.isClientSide && !player.isSpectator()) { +// +// ItemStack mainHandStack = player.getMainHandItem(); +// if (mainHandStack.getItem() instanceof ExchangeStaffItem exchangeStaffItem) { +// BlockState targetBlockState = world.getBlockState(pos); +// if (exchangeStaffItem.canInteractWith(targetBlockState, world, pos, player)) { +// Optional storedBlock = ExchangeStaffItem.getStoredBlock(player.getMainHandItem()); +// +// if (storedBlock.isPresent() +// && storedBlock.get() != targetBlockState.getBlock() +// && storedBlock.get().asItem() != Items.AIR +// && ExchangeStaffItem.exchange(world, pos, player, storedBlock.get(), player.getMainHandItem(), true, direction)) { +// +// return InteractionResult.SUCCESS; +// } +// } +// world.playSound(null, player.blockPosition(), SoundEvents.DISPENSER_FAIL, SoundSource.PLAYERS, 1.0F, 1.0F); +// return InteractionResult.FAIL; +// } +// } +// return InteractionResult.PASS; +// }); + +// CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> { +// if (client) { +// SpectrumColorProviders.resetToggleableProviders(); +// } +// }); + +// PlayerBlockBreakEvents.AFTER.register((level, player, pos, state, blockEntity) -> { +// if (player instanceof ServerPlayer serverPlayerEntity) { +// ItemStack handStack = player.getItemInHand(serverPlayerEntity.getUsedItemHand()); +// if (SpectrumEnchantmentHelper.hasEnchantment(player.level().registryAccess(), SpectrumEnchantments.INERTIA, handStack)) { +// InertiaComponent.onInertiaBlockBreak(level, pos, state, serverPlayerEntity, handStack); +// } +// +// SpectrumAdvancementCriteria.BLOCK_BROKEN.trigger(serverPlayerEntity, state); +// } +// }); + +// EnchantmentEvents.ALLOW_ENCHANTING.register((registryEntry, itemStack, enchantingContext) -> { +// if (registryEntry.is(SpectrumEnchantments.INDESTRUCTIBLE) && itemStack.is(SpectrumItemTags.INDESTRUCTIBLE_BLACKLISTED)) { +// return TriState.FALSE; +// } +// return TriState.DEFAULT; +// }); + +// UseEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> { +// ItemStack handStack = player.getItemInHand(hand); +// if (handStack.getItem() instanceof PrioritizedEntityInteraction && entity instanceof LivingEntity livingEntity) { +// return handStack.interactLivingEntity(player, livingEntity, hand); +// } +// return InteractionResult.PASS; +// }); + +// UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> { +// ItemStack handStack = player.getItemInHand(hand); +// if (handStack.getItem() instanceof PrioritizedBlockInteraction) { +// return handStack.useOn(new UseOnContext(player, hand, hitResult)); +// } +// return InteractionResult.PASS; +// }); + //I don't wanna mess with server stuff rn I'm not sure how this works + //TODO: Look into server code stuff so these can be handled ServerTickEvents.END_SERVER_TICK.register(server -> { if (!server.tickRateManager().runsNormally()) { return; @@ -183,25 +318,25 @@ public static void register() { //injectEnchantmentUpgradeRecipes(server); }); - EntitySleepEvents.STOP_SLEEPING.register((entity, sleepingPos) -> { - // If the player wears a Whispy Cirlcet and sleeps - // they get fully healed and all negative status effects removed - // When the sleep timer reached 100 the player is fully asleep - if (entity instanceof ServerPlayer serverPlayerEntity - && serverPlayerEntity.getSleepTimer() == 100 - && SpectrumTrinketItem.hasEquipped(entity, SpectrumItems.WHISPY_CIRCLET)) { - - entity.setHealth(entity.getMaxHealth()); - WhispyCircletItem.removeNegativeStatusEffects(entity); - } - }); - - ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.register((world, entity, killedEntity) -> { - if (entity instanceof ServerPlayer serverPlayerEntity && SpectrumTrinketItem.hasEquipped(serverPlayerEntity, SpectrumItems.JEOPARDANT)) { - SpectrumAdvancementCriteria.JEOPARDANT_KILL.trigger(serverPlayerEntity, killedEntity); - } - }); +// EntitySleepEvents.STOP_SLEEPING.register((entity, sleepingPos) -> { +// // If the player wears a Whispy Cirlcet and sleeps +// // they get fully healed and all negative status effects removed +// // When the sleep timer reached 100 the player is fully asleep +// if (entity instanceof ServerPlayer serverPlayerEntity +// && serverPlayerEntity.getSleepTimer() == 100 +// && SpectrumTrinketItem.hasEquipped(entity, SpectrumItems.WHISPY_CIRCLET)) { +// +// entity.setHealth(entity.getMaxHealth()); +// WhispyCircletItem.removeNegativeStatusEffects(entity); +// } +// }); +// ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.register((world, entity, killedEntity) -> { +// if (entity instanceof ServerPlayer serverPlayerEntity && SpectrumTrinketItem.hasEquipped(serverPlayerEntity, SpectrumItems.JEOPARDANT)) { +// SpectrumAdvancementCriteria.JEOPARDANT_KILL.trigger(serverPlayerEntity, killedEntity); +// } +// }); + //Curious: This is too scary for me Daf ServerEntityEvents.EQUIPMENT_CHANGE.register((livingEntity, equipmentSlot, previousStack, currentStack) -> { var oldInexorable = SpectrumEnchantmentHelper.getLevel(livingEntity.level().registryAccess(), SpectrumEnchantments.INEXORABLE, previousStack); var newInexorable = SpectrumEnchantmentHelper.getLevel(livingEntity.level().registryAccess(), SpectrumEnchantments.INEXORABLE, currentStack); From 3959c15b22a3e2564fb73092a2e6fe4e2b2ebf27 Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Sat, 31 Jan 2026 16:37:27 +0530 Subject: [PATCH 2/2] Begone comments and like three more events done! --- .../registries/SpectrumEventListeners.java | 179 ++++++------------ 1 file changed, 54 insertions(+), 125 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java index 4c67b889e7..1ce4eaee47 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumEventListeners.java @@ -22,6 +22,7 @@ import net.minecraft.core.particles.*; import net.minecraft.core.registries.*; import net.minecraft.resources.*; +import net.minecraft.server.*; import net.minecraft.server.level.*; import net.minecraft.server.packs.*; import net.minecraft.server.packs.resources.*; @@ -46,6 +47,7 @@ import net.minecraft.world.level.material.*; import net.minecraft.world.phys.*; import net.neoforged.bus.api.*; +import net.neoforged.fml.common.*; import net.neoforged.fml.event.lifecycle.*; import net.neoforged.neoforge.common.util.*; import net.neoforged.neoforge.event.*; @@ -53,10 +55,13 @@ import net.neoforged.neoforge.event.entity.living.*; import net.neoforged.neoforge.event.entity.player.*; import net.neoforged.neoforge.event.level.*; +import net.neoforged.neoforge.event.server.*; +import net.neoforged.neoforge.event.tick.*; import java.util.*; import java.util.concurrent.atomic.*; +@EventBusSubscriber(modid = SpectrumCommon.MOD_ID) public class SpectrumEventListeners { @@ -108,10 +113,8 @@ public void resetColorProviders(TagsUpdatedEvent event) { } } - //Curious: Gang idfk what to name this I'ma be so fr - //Curious TODO: Find a proper name for this event @SubscribeEvent - public void triggerInertia(BlockEvent.BreakEvent event) { + public void handleInertia(BlockEvent.BreakEvent event) { Player player = event.getPlayer(); BlockPos pos = event.getPos(); Level level = event.getPlayer().level(); @@ -181,7 +184,7 @@ public void triggerWhispyCirclet(PlayerWakeUpEvent event) { } @SubscribeEvent - public void triggerJeopardentKillCriterion(LivingDeathEvent event) { + public void triggerJeopardantKillCriterion(LivingDeathEvent event) { Entity player = event.getSource().getEntity(); LivingEntity target = event.getEntity(); @@ -190,73 +193,55 @@ public void triggerJeopardentKillCriterion(LivingDeathEvent event) { } } + @SubscribeEvent + public void tickSpawners(LevelTickEvent.Pre event) { + Level level = event.getLevel(); + ServerLevel world = level.getServer().getLevel(level.dimension()); + + if(!world.tickRateManager().runsNormally()) { + return; + } + + if (world.getGameTime() % 100 == 0 && !world.isClientSide) { + if (TimeHelper.getTimeOfDay(world).isNight()) { // 90 chances in a night + if (SpectrumCommon.CONFIG.ShootingStarWorlds.contains(world.dimension().location().toString())) { + ShootingStarSpawner.INSTANCE.tick((ServerLevel) world, true, true); + } + } + + /* TODO: Monstrosity + if (world.getRegistryKey() == SpectrumDimensions.DIMENSION_KEY) { + MonstrositySpawner.INSTANCE.spawn(world, true, true); + }*/ + } + + } + + @SubscribeEvent + public void updateFluidLuminance(ServerStartedEvent event) { + SpectrumCommon.logInfo("Querying fluid luminance..."); + for (Iterator it = BuiltInRegistries.BLOCK.stream().iterator(); it.hasNext(); ) { + Block block = it.next(); + if (block instanceof LiquidBlock fluidBlock) { + fluidLuminance.put(fluidBlock.fluid, fluidBlock.defaultBlockState().getLightEmission()); + } + } + } + + @SubscribeEvent + public void injectDynamicRecipe(ServerStartedEvent event) { + MinecraftServer server = event.getServer(); + + SpectrumCommon.logInfo("Injecting dynamic recipes into recipe manager..."); + FirestarterIdolBlock.addBlockSmeltingRecipes(server); + } + + + + public static void register() { -// AttackBlockCallback.EVENT.register((player, world, hand, pos, direction) -> { -// if (!world.isClientSide && !player.isSpectator()) { -// -// ItemStack mainHandStack = player.getMainHandItem(); -// if (mainHandStack.getItem() instanceof ExchangeStaffItem exchangeStaffItem) { -// BlockState targetBlockState = world.getBlockState(pos); -// if (exchangeStaffItem.canInteractWith(targetBlockState, world, pos, player)) { -// Optional storedBlock = ExchangeStaffItem.getStoredBlock(player.getMainHandItem()); -// -// if (storedBlock.isPresent() -// && storedBlock.get() != targetBlockState.getBlock() -// && storedBlock.get().asItem() != Items.AIR -// && ExchangeStaffItem.exchange(world, pos, player, storedBlock.get(), player.getMainHandItem(), true, direction)) { -// -// return InteractionResult.SUCCESS; -// } -// } -// world.playSound(null, player.blockPosition(), SoundEvents.DISPENSER_FAIL, SoundSource.PLAYERS, 1.0F, 1.0F); -// return InteractionResult.FAIL; -// } -// } -// return InteractionResult.PASS; -// }); -// CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> { -// if (client) { -// SpectrumColorProviders.resetToggleableProviders(); -// } -// }); - -// PlayerBlockBreakEvents.AFTER.register((level, player, pos, state, blockEntity) -> { -// if (player instanceof ServerPlayer serverPlayerEntity) { -// ItemStack handStack = player.getItemInHand(serverPlayerEntity.getUsedItemHand()); -// if (SpectrumEnchantmentHelper.hasEnchantment(player.level().registryAccess(), SpectrumEnchantments.INERTIA, handStack)) { -// InertiaComponent.onInertiaBlockBreak(level, pos, state, serverPlayerEntity, handStack); -// } -// -// SpectrumAdvancementCriteria.BLOCK_BROKEN.trigger(serverPlayerEntity, state); -// } -// }); - -// EnchantmentEvents.ALLOW_ENCHANTING.register((registryEntry, itemStack, enchantingContext) -> { -// if (registryEntry.is(SpectrumEnchantments.INDESTRUCTIBLE) && itemStack.is(SpectrumItemTags.INDESTRUCTIBLE_BLACKLISTED)) { -// return TriState.FALSE; -// } -// return TriState.DEFAULT; -// }); - -// UseEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> { -// ItemStack handStack = player.getItemInHand(hand); -// if (handStack.getItem() instanceof PrioritizedEntityInteraction && entity instanceof LivingEntity livingEntity) { -// return handStack.interactLivingEntity(player, livingEntity, hand); -// } -// return InteractionResult.PASS; -// }); - -// UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> { -// ItemStack handStack = player.getItemInHand(hand); -// if (handStack.getItem() instanceof PrioritizedBlockInteraction) { -// return handStack.useOn(new UseOnContext(player, hand, hitResult)); -// } -// return InteractionResult.PASS; -// }); - //I don't wanna mess with server stuff rn I'm not sure how this works - //TODO: Look into server code stuff so these can be handled ServerTickEvents.END_SERVER_TICK.register(server -> { if (!server.tickRateManager().runsNormally()) { return; @@ -280,63 +265,7 @@ public static void register() { } } }); - - ServerTickEvents.START_WORLD_TICK.register(world -> { - if (!world.tickRateManager().runsNormally()) { - return; - } - - // these would actually be nicer to have as Spawners in ServerWorld - // to have them run in tickSpawners() - // but getting them in there would require some ugly mixins - - if (world.getGameTime() % 100 == 0) { - if (TimeHelper.getTimeOfDay(world).isNight()) { // 90 chances in a night - if (SpectrumCommon.CONFIG.ShootingStarWorlds.contains(world.dimension().location().toString())) { - ShootingStarSpawner.INSTANCE.tick(world, true, true); - } - } - - /* TODO: Monstrosity - if (world.getRegistryKey() == SpectrumDimensions.DIMENSION_KEY) { - MonstrositySpawner.INSTANCE.spawn(world, true, true); - }*/ - } - }); - - ServerLifecycleEvents.SERVER_STARTED.register((server) -> { - SpectrumCommon.logInfo("Querying fluid luminance..."); - for (Iterator it = BuiltInRegistries.BLOCK.stream().iterator(); it.hasNext(); ) { - Block block = it.next(); - if (block instanceof LiquidBlock fluidBlock) { - fluidLuminance.put(fluidBlock.fluid, fluidBlock.defaultBlockState().getLightEmission()); - } - } - - SpectrumCommon.logInfo("Injecting dynamic recipes into recipe manager..."); - FirestarterIdolBlock.addBlockSmeltingRecipes(server); - //injectEnchantmentUpgradeRecipes(server); - }); - -// EntitySleepEvents.STOP_SLEEPING.register((entity, sleepingPos) -> { -// // If the player wears a Whispy Cirlcet and sleeps -// // they get fully healed and all negative status effects removed -// // When the sleep timer reached 100 the player is fully asleep -// if (entity instanceof ServerPlayer serverPlayerEntity -// && serverPlayerEntity.getSleepTimer() == 100 -// && SpectrumTrinketItem.hasEquipped(entity, SpectrumItems.WHISPY_CIRCLET)) { -// -// entity.setHealth(entity.getMaxHealth()); -// WhispyCircletItem.removeNegativeStatusEffects(entity); -// } -// }); - -// ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.register((world, entity, killedEntity) -> { -// if (entity instanceof ServerPlayer serverPlayerEntity && SpectrumTrinketItem.hasEquipped(serverPlayerEntity, SpectrumItems.JEOPARDANT)) { -// SpectrumAdvancementCriteria.JEOPARDANT_KILL.trigger(serverPlayerEntity, killedEntity); -// } -// }); - //Curious: This is too scary for me Daf + ServerEntityEvents.EQUIPMENT_CHANGE.register((livingEntity, equipmentSlot, previousStack, currentStack) -> { var oldInexorable = SpectrumEnchantmentHelper.getLevel(livingEntity.level().registryAccess(), SpectrumEnchantments.INEXORABLE, previousStack); var newInexorable = SpectrumEnchantmentHelper.getLevel(livingEntity.level().registryAccess(), SpectrumEnchantments.INEXORABLE, currentStack);