V2 - #25
Open
Giovanniricotta2002 wants to merge 53 commits into
Open
Conversation
…and IRadiationSource interface
Implement radiation items and effects, including RadiationItem class …
V2 advancement
…, and configuration options
V2 fluids radiation
V2 liquid input
…or triggering the alarm
Add reactor alarm block and sound mechanics, including advancements f…
…on capability wiring - Bump Create to 6.0.10-280, Ponder to 1.0.82, Flywheel to 1.0.6, Registrate to MC1.21-1.3.0+67, NeoForge to 21.1.247, JEI to 19.43.0.390, and Jade to 7545219 - Disable Gradle configuration cache and add a client2 run configuration for local multiplayer testing - Convert SimpleMultiBlockPattern to a record and drop the dead matches(java.util.logging.Level, ...) override and unused test() helper - Remove the unused multiblock manager/cache classes (SimpleMultiBlockPatternBuilder, IBetterPattern, MultiBlockCache, MultiBlockManager, RegisteredMultiBlockPattern) - Rename MultiBlockOffsetPos#caracter to #character and update all call sites - Replace the unchecked Object cast in IodineEffect with a properly typed Attribute holder for CNAttributes.IRRADIATED_RESISTANCE - Clean up fully-qualified references in CreateNuclear.java and PersistentFluidLocks.java in favor of imports - Remove the enriching campfire block tag registration and its reactor casing sound events/subtitles (break, fall, hit, place, step) that are no longer used - Add enriched_soul_soil to the enriching_fire_base_blocks tag and register enriching_fire/enriching_campfire as fan processing catalysts - Add EnrichedRecipeGen skeleton under the new net.nuclearteam.createnuclear.api.data.recipe package, mirroring the existing foundation.data.recipe.EnrichedRecipeGen ahead of an API extraction - Refresh generated datagen resources (lang files, sounds, block tags, datagen cache) to match the above changes
…exture handling for radiation effects
…turing Remove the 48 per-color model, recipe, and advancement JSON files for anti-radiation armor pieces, replacing them with a single default model per armor slot (boots/chestplate/helmet/leggings) plus a colored/ variant folder. Introduce AntiRadiationArmorTextureMixin to resolve the correct texture/color at render time instead of relying on baked per-dye assets, and add ClothTagHelper and CNBuilderTransformers to support the new tag-driven dye/cloth lookup. Update CNItems, CNTags, CNDataComponents, CNEntityType, AntiRadiationArmorItem/ClientExtensions, ClothItem, RadiationEffect, and related registries to wire up the new structure, and drop the now-unused default_anti_radiation_suit.png texture and obsolete dye tag files (anti_radiation_*_dye.json, all_anti_radiation_armors.json).
Re-enable the previously commented-out SmithingClothRecipeBuilder calls
in CNItems for helmet, chestplate, leggings, and boots, generating a
smithing recipe per cloth color (skipping Cloths.DEFAULT) that applies
a colored cloth to the base armor piece. Back this with a new
SmithingTransformRecipeMixin (registered in
createnuclear.neoforge.mixins.json) and SmithingClothRecipeBuilder API
class, and regenerate the resulting smithing recipe/advancement JSON
under src/generated/resources/data/createnuclear/{recipe,advancement}/smithing/.
Change CNDataComponents' CLOTH_ITEM component from a raw ItemStack to a
new ClothItemStack wrapper record that implements content-based
equals/hashCode (via ItemStack.isSameItemSameComponents/
hashItemAndComponents), since NeoForge requires data component values
to implement proper value equality. Update ClothTagHelper and
CNBuilderTransformers accordingly, and refresh the colored anti-radiation
armor model JSONs to match. Minor unrelated fix to gradlew.bat.
Add iodine effect and related potions; update radiation effect handling
V2 biome remover
…ase trigger implementation Rework the advancement/trigger system to implement CriterionTrigger directly instead of relying on Vanilla's SimpleCriterionTrigger, register triggers via the vanilla registry at TRIGGER_TYPES event time instead of a DeferredRegister on the mod bus, and make CNAdvancement's data generation registry-aware (icons can now depend on HolderLookup.Provider, e.g. items behind data components). - Add CriterionTriggerBase<T>: a CriterionTrigger implementation managing PlayerAdvancements listeners directly and exposing a protected trigger(ServerPlayer, List<Supplier<Object>>) hook, plus a nested Instance base class with a test(...) predicate - CNTriggers: drop the TRIGGERS DeferredRegister<CriterionTrigger<?>>; keep triggers in a local list and register them with Registry.register(BuiltInRegistries.TRIGGER_TYPES, ...) via the new no-arg register() method - CreateNuclear: remove the modEventBus CNTriggers.register() call from the constructor; call the new CNTriggers.register() from the TRIGGER_TYPES registry event handler, alongside CNAdvancement.register() - SimpleCreateNuclearTrigger: extend CriterionTriggerBase instead of SimpleCriterionTrigger; take an id in its constructor; replace the record Instance with a class Instance extending CriterionTriggerBase.Instance and implementing test(...) - CreateNuclearAdvancement: build the Advancement.Builder and its nested Builder eagerly as fields; defer display()/icon configuration to save(), which now also receives a HolderLookup.Provider so an icon can be computed lazily via a new Builder.icon(Function<Provider, ItemStack>) overload; set the advancement's parent from the parent's datagenResult instead of by resource location; rename TaskType.frame to advancementType - CNAdvancement: make the run() output depend on the registries future via thenCompose(...) instead of blocking with join(), and pass the resolved HolderLookup.Provider through to each CreateNuclearAdvancement.save(...) call - CNAdvancementBehaviour: update write()/read() to override the current BlockEntityBehaviour signature (add HolderLookup.Provider and call super); add awardPlayerIfNear(...) to only award when the player is within a given distance of the block entity; add a tryAward(BlockGetter, BlockPos, CreateAdvancement) static helper bridging to Create's own AdvancementBehaviour; fix award() to check `advancements.contains(advancement)` instead of the removed isAlreadyAwardedTo(...); drop the stale toString() override - CreateNuclearDatagen: register CNAdvancement as a server-side data provider (event.includeServer()) instead of a client-side one (event.includeClient()), matching where advancement JSONs actually belong
refactor(advancement): replace SimpleCriterionTrigger with a custom base trigger implementation
…cable attachment and clean up codebase-wide leftovers Move the mod's data-attachment registration into a new dedicated CNAttachmentTypes class, rework RadiationCapability from an INBTSerializable-backed attachment to a plain Codec/StreamCodec-driven one (fixing sync to clients), route item/fan/mob-effect radiation exposure through it, and sweep up a large batch of unrelated 1.21.1/NeoForge cleanup (fully-qualified names, dead code, deleted scratch files) accumulated on this branch. Radiation attachment rework: - Add CNAttachmentTypes: new home for the ATTACHMENT_TYPES DeferredRegister and the RADIATION attachment, now built with .serialize(RadiationCapability.CODEC).sync(RadiationCapability.STREAM_CODEC) instead of AttachmentType.serializable(...), so capability state is also synced to the client, not just persisted - RadiationCapability: drop INBTSerializable/AttachmentType-registration responsibilities from the class itself; add CODEC and STREAM_CODEC (radiation, inventory hash, last biome, contagion dose/ticks) and a private create(...) factory instead of serializeNBT/deserializeNBT; reference CNAttachmentTypes.RADIATION instead of a local constant; call player.syncData(...) after updating radiation so held-item radiation changes propagate to the client; drop the explicit @EventBusSubscriber bus (defaults to the mod bus, matching the NewRegistry deprecation note also cleaned up in CreateNuclearRegistriesImpl); use CNTags.CNEntityTags import instead of the fully-qualified CNTags.CNEntityTags path; fix getRawBiomeRadiation to call RadiationRegistry.getRadiation(biomeKey, null) instead of the removed RadiationRegistry.get(biomeKey) - RadiationRegistry: mark the LivingEntity parameter of getRadiation(ItemStack, ...) and getRadiation(ResourceKey<Biome>, ...) as @nullable, since callers may now pass null (see RadiationCapability above) - RadiationItem: drop the inventoryTick() override that force-applied the RADIATION MobEffectInstance every tick — item radiation is now read from RadiationCapability's item-hash-based scan instead - CreateNuclear: call CNAttachmentTypes.register(modEventBus) instead of RadiationCapability.register(modEventBus); enqueue CNOpenPipeEffectHandlers::registerDefaults during common setup - Add CNOpenPipeEffectHandlers: registers a RadiationEffectHandler for Create's OpenPipeEffectHandler on the uranium fluid source, so open pipes carrying uranium fluid apply radiation Dead code / cleanup removal: - Delete foundation/block/EventTriggerBlock.java (unused packet-broadcasting block) - Delete foundation/events/possible code (a stray, uncompiled Forge-era scratch file with a non-Java filename) - HudRenderer: drop the now-dangling import of the removed RadiationOverlay - CNGuiTextures: drop redundant `private` modifiers on enum constructors (enum constructors are implicitly private) - CommentEventClients / CNConfigs: drop explicit `bus = EventBusSubscriber.Bus.MOD`, relying on the default (mod bus) per the same NeoForge 1.21.1 deprecation as above - CreateNuclearRegistriesImpl: remove the stale comment explaining the now-completed bus-argument cleanup - CreateNuclearClient / CNPonderIndex: drop stray blank lines Fully-qualified-name / import cleanup (no behavior change), across CNClientProxy, CNEntityType, CNFluids, CNSoundEvents, ClientEvents, BiomeIrradiationExtractorItem, NuclearExplosionEntity, ReactorControllerBlockEntity, ReactorOutputEntity, IrradiatedParticlesData, ReactorSummaryDisplaySource, CNShapelessRecipeGen, CNStandardRecipeGen, CNBiomeModifiers: - Replace fully-qualified type references (e.g. net.minecraft.core.component.DataComponents, com.google.common.base.Supplier, com.simibubi.create.foundation.mixin.accessor.MappedRegistryAccessor) with proper imports and short names - Drop an unused AllPlacedFeatures import in CNBiomeModifiers Formatting-only re-indentation (no behavior change): CNShapes, IrradiatedBiomes, CreateNuclearRegistriesImpl, CNItemApplicationRecipeGen, CNRecipeProvider Other: - BigFluidStack: replace the hand-written write()/read()/send() NBT and StreamCodec plumbing with declarative CODEC/STREAM_CODEC fields built from FluidStack's own OPTIONAL_CODEC/OPTIONAL_STREAM_CODEC; simplify receive() and duplicateWrappers() to match (drop the now-unneeded stack.copy() since FluidStack is treated as immutable here) - foundation/damagesTypes/CNDamageSources.java: fix the package declaration (`damageTypes` → `damagesTypes`) to match the directory it actually lives in
…d of an eagerly-created SoundEvent SoundEvent.createVariableRangeEvent(id) built a real SoundEvent before the sound registry existed, so registering it via RegisterHelper duplicated identity/timing issues; switch CustomSoundEntry/WrappedSoundEntry to hold a DeferredHolder<SoundEvent, SoundEvent> instead, resolving the actual SoundEvent lazily via .get() and only constructing it at register() time. Also drop five reactor-casing sound entries that no longer have matching content, and reformat CNSoundEvents' SoundEntry field list. - CustomSoundEntry: replace the `SoundEvent event` field with `DeferredHolder<SoundEvent, SoundEvent> event`, created via DeferredHolder.create(Registries.SOUND_EVENT, id) in prepare(); register() now constructs the SoundEvent via SoundEvent.createVariableRangeEvent(location) at registration time instead of upfront; getMainEvent()/getMainEventHolder() and play()/ playAt() updated to resolve through event.get()/event, replacing the previous BuiltInRegistries.SOUND_EVENT.wrapAsHolder(event) workaround - WrappedSoundEntry.CompiledSoundEvent: same DeferredHolder switch for each wrapped event; getMainEvent()/getMainEventHolder()/play()/ playAt() updated accordingly; use compiledEvents.getFirst() instead of .get(0) in getMainEventHolder() - Remove the REACTOR_CASING_BREAK/STEP/PLACE/HIT/FALL SoundEntry constants - Reformat the SoundEntry field declaration list and playItemPickup()'s playSound(...) call for consistent indentation (no behavior change) - Add missing imports (AllSoundEvents, DeferredHolder) needed by the above
updating sounds in the assets and in soundevents
…ed reactor-casing sounds Replace the alarm, wasteland biome, and reactor-running audio assets with updated recordings, and delete the reactor-casing sound files (break/fall/hit/place/step) and the nuclear explosion ringing sound, which no longer have matching SoundEntry registrations. - Update src/main/resources/assets/createnuclear/sounds/alarm/alarm.ogg - Update src/main/resources/assets/createnuclear/sounds/biomes/wasteland.ogg - Update src/main/resources/assets/createnuclear/sounds/reacteur/running.ogg - Delete src/main/resources/assets/createnuclear/sounds/explosion/nuclear_explosion_ringing.ogg - Delete src/main/resources/assets/createnuclear/sounds/reacteur/casing_break.ogg - Delete src/main/resources/assets/createnuclear/sounds/reacteur/casing_fall.ogg - Delete src/main/resources/assets/createnuclear/sounds/reacteur/casing_hit.ogg - Delete src/main/resources/assets/createnuclear/sounds/reacteur/casing_place.ogg - Delete src/main/resources/assets/createnuclear/sounds/reacteur/casing_step.ogg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.