From 9c8df2ff2742176ff82fb9b6b27f1c9b37110bf5 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Wed, 3 Aug 2022 10:08:00 -0700 Subject: [PATCH] Registries and components - Abstract all custom registries behind improved CreateRegistry class - Remove usage of ForgeRegistryEntry.delegate and IRegistryDelegate where possible - Replace usage of IForgeRegistryEntry#getRegistryName with RegisteredObjects#getKeyOrThrow where key is expected to be not null - Move all component creation to the Components class - Backport some other miscellaneous changes from 1.19 --- .../java/com/simibubi/create/AllBlocks.java | 6 +- .../create/AllInteractionBehaviours.java | 24 +++- .../create/AllMovementBehaviours.java | 30 +++-- .../com/simibubi/create/AllRecipeTypes.java | 3 +- src/main/java/com/simibubi/create/Create.java | 8 ++ .../com/simibubi/create/CreateClient.java | 11 +- .../jei/category/CreateRecipeCategory.java | 6 +- .../jei/category/ItemDrainCategory.java | 7 +- .../category/MechanicalCraftingCategory.java | 5 +- .../category/SequencedAssemblyCategory.java | 18 +-- .../compat/jei/category/SpoutCategory.java | 7 +- .../compat/tconstruct/SpoutCasting.java | 4 +- .../deployer/DeployerApplicationRecipe.java | 7 +- .../deployer/DeployerTileEntity.java | 6 +- .../steam/PoweredShaftTileEntity.java | 3 +- .../steam/whistle/WhistleTileEntity.java | 5 +- .../IDisplayAssemblyExceptions.java | 4 +- .../glue/SuperGlueSelectionHandler.java | 4 +- .../fluids/FluidBottleItemHook.java | 4 +- .../fluids/actors/FillingRecipe.java | 4 +- .../fluids/particle/FluidParticleData.java | 5 +- .../fluids/potion/PotionFluid.java | 8 +- .../fluids/potion/PotionFluidHandler.java | 22 ++-- .../contraptions/fluids/tank/BoilerData.java | 14 +- .../fluids/tank/BoilerHeaters.java | 22 +++- .../goggles/GoggleConfigScreen.java | 10 +- .../goggles/GoggleOverlayRenderer.java | 8 +- .../goggles/IHaveGoggleInformation.java | 4 +- .../itemAssembly/SequencedAssemblyRecipe.java | 6 +- .../itemAssembly/SequencedRecipe.java | 5 +- .../processing/ProcessingOutput.java | 5 +- .../burner/BlazeBurnerBlockItem.java | 5 +- .../sequencer/InstructionSpeedModifiers.java | 4 +- .../sequencer/SequencedGearshiftScreen.java | 4 +- .../contraptions/relays/belt/BeltSlicer.java | 4 +- .../curiosities/armor/BackTankUtil.java | 6 +- .../armor/CopperBacktankArmorLayer.java | 4 +- .../curiosities/bell/BasicParticleData.java | 4 +- .../curiosities/symmetry/SymmetryHandler.java | 2 +- .../symmetry/SymmetryWandScreen.java | 6 +- .../weapons/BuiltinPotatoProjectileTypes.java | 22 +++- .../curiosities/weapons/PotatoCannonItem.java | 15 +-- .../weapons/PotatoCannonProjectileType.java | 15 ++- .../weapons/PotatoProjectileTypeManager.java | 18 +-- .../curiosities/zapper/ZapperScreen.java | 4 +- .../terrainzapper/WorldshaperScreen.java | 10 +- .../belts/tunnel/BrassTunnelTileEntity.java | 4 +- .../block/chute/ChuteTileEntity.java | 4 +- .../block/display/AllDisplayBehaviours.java | 120 +++++++++++++----- .../block/display/DisplayLinkScreen.java | 6 +- .../AccumulatedItemCountDisplaySource.java | 4 +- .../display/source/BoilerDisplaySource.java | 12 +- .../block/display/source/DisplaySource.java | 11 +- .../source/EnchantPowerDisplaySource.java | 6 +- .../source/FluidAmountDisplaySource.java | 4 +- .../source/FluidListDisplaySource.java | 4 +- .../source/ItemCountDisplaySource.java | 8 +- ....java => ItemThroughputDisplaySource.java} | 5 +- .../source/KineticSpeedDisplaySource.java | 4 +- .../NumericSingleLineDisplaySource.java | 9 +- .../PercentOrProgressBarDisplaySource.java | 6 +- .../source/RedstonePowerDisplaySource.java | 4 +- .../source/ScoreboardDisplaySource.java | 4 +- .../source/SingleLineDisplaySource.java | 6 +- .../source/StationSummaryDisplaySource.java | 12 +- .../source/StopWatchDisplaySource.java | 4 +- .../source/TimeOfDayDisplaySource.java | 6 +- .../source/ValueListDisplaySource.java | 12 +- .../block/redstone/NixieTubeTileEntity.java | 4 +- .../block/redstone/StockpileSwitchScreen.java | 6 +- .../item/LinkedControllerClientHandler.java | 4 +- .../item/filter/AttributeFilterContainer.java | 4 +- .../item/filter/AttributeFilterScreen.java | 16 +-- .../logistics/item/filter/FilterItem.java | 12 +- .../logistics/item/filter/FilterScreen.java | 10 +- .../logistics/item/filter/ItemAttribute.java | 6 +- .../item/filter/attribute/ColorAttribute.java | 3 +- .../filter/attribute/EnchantAttribute.java | 6 +- .../attribute/FluidContentsAttribute.java | 6 +- .../AstralSorceryAmuletAttribute.java | 4 +- .../AstralSorceryAttunementAttribute.java | 8 +- .../AstralSorceryCrystalAttribute.java | 4 +- .../AstralSorceryPerkGemAttribute.java | 4 +- .../content/logistics/trains/IBogeyBlock.java | 3 +- .../trains/entity/CarriageBogey.java | 3 +- .../entity/CarriageContraptionEntity.java | 15 +-- .../logistics/trains/entity/TrainPacket.java | 3 +- .../logistics/trains/entity/TrainStatus.java | 4 +- .../display/FlapDisplayTileEntity.java | 4 +- .../edgePoint/station/StationMarker.java | 6 +- .../edgePoint/station/StationScreen.java | 6 +- .../edgePoint/station/TrainEditPacket.java | 4 +- .../management/schedule/IScheduleInput.java | 4 +- .../trains/management/schedule/Schedule.java | 4 +- .../management/schedule/ScheduleItem.java | 8 +- .../management/schedule/ScheduleRuntime.java | 10 +- .../management/schedule/ScheduleScreen.java | 8 +- .../condition/CargoThresholdCondition.java | 6 +- .../condition/FluidThresholdCondition.java | 6 +- .../condition/ItemThresholdCondition.java | 6 +- .../condition/PlayerPassengerCondition.java | 4 +- .../condition/RedstoneLinkCondition.java | 6 +- .../condition/TimeOfDayCondition.java | 4 +- .../condition/TimedWaitCondition.java | 11 +- .../ChangeThrottleInstruction.java | 7 +- .../destination/ChangeTitleInstruction.java | 4 +- .../destination/DestinationInstruction.java | 4 +- .../destination/TextScheduleInstruction.java | 4 +- .../logistics/trains/track/TrackBlock.java | 6 +- .../schematics/ClientSchematicLoader.java | 8 +- .../content/schematics/MaterialChecklist.java | 21 ++- .../schematics/ServerSchematicLoader.java | 7 +- .../block/SchematicTableScreen.java | 12 +- .../block/SchematicannonScreen.java | 22 ++-- .../client/SchematicEditScreen.java | 12 +- .../client/SchematicPromptScreen.java | 4 +- .../client/ToolSelectionScreen.java | 4 +- .../schematics/client/tools/Tools.java | 4 +- .../item/SchematicAndQuillItem.java | 5 +- .../schematics/item/SchematicItem.java | 4 +- .../simibubi/create/events/ClientEvents.java | 4 +- .../advancement/CreateAdvancement.java | 6 +- .../foundation/block/BlockStressValues.java | 11 +- .../foundation/block/CopperBlockSet.java | 3 +- .../foundation/block/ItemUseOverrides.java | 6 +- .../block/render/CustomBlockModels.java | 53 ++++---- .../command/ClearBufferCacheCommand.java | 4 +- .../foundation/command/CloneCommand.java | 11 +- .../foundation/command/ConfigCommand.java | 10 +- .../foundation/command/CouplingCommand.java | 20 +-- .../command/DumpRailwaysCommand.java | 8 +- .../command/FixLightingCommand.java | 4 +- .../foundation/command/FlySpeedCommand.java | 4 +- .../foundation/command/HighlightCommand.java | 6 +- .../foundation/command/KillTPSCommand.java | 4 +- .../foundation/command/KillTrainCommand.java | 6 +- .../command/OverlayConfigCommand.java | 6 +- .../ReplaceInCommandBlocksCommand.java | 6 +- .../command/SConfigureConfigPacket.java | 31 ++--- .../create/foundation/config/CStress.java | 11 +- .../config/ContraptionMovementSetting.java | 38 +++--- .../config/ui/BaseConfigScreen.java | 16 +-- .../config/ui/ConfigModListScreen.java | 8 +- .../config/ui/ConfigScreenList.java | 4 +- .../config/ui/HintableTextFieldWidget.java | 4 +- .../config/ui/OpenCreateMenuButton.java | 4 +- .../config/ui/SubMenuConfigScreen.java | 14 +- .../config/ui/entries/NumberEntry.java | 7 +- .../config/ui/entries/ValueEntry.java | 12 +- .../foundation/data/BuilderTransformers.java | 3 +- .../foundation/data/CreateRegistrate.java | 29 +++-- .../data/recipe/HauntingRecipeGen.java | 7 +- .../data/recipe/LogStrippingFakeRecipes.java | 3 +- .../MechanicalCraftingRecipeBuilder.java | 8 +- .../recipe/MechanicalCraftingRecipeGen.java | 6 +- .../data/recipe/ProcessingRecipeGen.java | 9 +- .../data/recipe/StandardRecipeGen.java | 8 +- .../create/foundation/fluid/FluidHelper.java | 4 +- .../foundation/fluid/FluidIngredient.java | 3 +- .../foundation/gui/AbstractSimiScreen.java | 4 +- .../foundation/gui/CreateMainMenuScreen.java | 12 +- .../foundation/gui/ModularGuiLineBuilder.java | 6 +- .../gui/element/TextStencilElement.java | 6 +- .../gui/widget/AbstractSimiWidget.java | 4 +- .../create/foundation/gui/widget/Label.java | 8 +- .../foundation/gui/widget/ScrollInput.java | 4 +- .../gui/widget/SelectionScrollInput.java | 10 +- .../foundation/item/ItemDescription.java | 24 ++-- .../create/foundation/item/TooltipHelper.java | 16 +-- .../item/render/CustomItemModels.java | 48 ++++--- .../CustomRenderedItemModelRenderer.java | 31 +++++ .../item/render/CustomRenderedItems.java | 39 +++--- .../item/render/SimpleCustomRenderer.java | 4 +- .../foundation/ponder/PonderTagRegistry.java | 4 +- .../ponder/PonderTooltipHandler.java | 8 +- .../create/foundation/ponder/PonderWorld.java | 4 +- .../ponder/content/DisplayScenes.java | 20 +-- .../ponder/content/RedstoneScenes.java | 4 +- .../ponder/ui/NavigatableSimiScreen.java | 4 +- .../ponder/ui/PonderIndexScreen.java | 3 +- .../ponder/ui/PonderTagIndexScreen.java | 4 +- .../foundation/ponder/ui/PonderTagScreen.java | 10 +- .../create/foundation/ponder/ui/PonderUI.java | 11 +- .../render/TileEntityRenderHelper.java | 4 +- .../tileEntity/behaviour/ValueBox.java | 12 +- .../EdgeInteractionRenderer.java | 4 +- .../filtering/FilteringRenderer.java | 6 +- .../scrollvalue/ScrollValueRenderer.java | 8 +- .../foundation/utility/BlockHelper.java | 3 +- .../create/foundation/utility/Components.java | 34 +++++ .../foundation/utility/CreateRegistry.java | 108 ++++++++++++++++ .../create/foundation/utility/Debug.java | 15 +-- .../foundation/utility/DynamicComponent.java | 5 +- .../foundation/utility/FluidFormatter.java | 5 +- .../create/foundation/utility/Lang.java | 11 +- .../foundation/utility/LangBuilder.java | 10 +- .../foundation/utility/ModelSwapper.java | 4 +- .../foundation/utility/RegisteredObjects.java | 68 ++++++++++ .../foundation/utility/RemapHelper.java | 4 +- 199 files changed, 1171 insertions(+), 822 deletions(-) rename src/main/java/com/simibubi/create/content/logistics/block/display/source/{ItemThoughputDisplaySource.java => ItemThroughputDisplaySource.java} (95%) create mode 100644 src/main/java/com/simibubi/create/foundation/utility/Components.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 2ae37cec3..b4b1c0c4b 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -172,7 +172,7 @@ import com.simibubi.create.content.logistics.block.display.source.FluidListDispl import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource; -import com.simibubi.create.content.logistics.block.display.source.ItemThoughputDisplaySource; +import com.simibubi.create.content.logistics.block.display.source.ItemThroughputDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticSpeedDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticStressDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ObservedTrainNameSource; @@ -1696,7 +1696,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.STONE)) .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) - .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) + .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput")) .register(); public static final BlockEntry BRASS_TUNNEL = @@ -1704,7 +1704,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) - .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) + .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput")) .onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .register(); diff --git a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java index c140a3209..0ce0c7465 100644 --- a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java +++ b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java @@ -1,9 +1,7 @@ package com.simibubi.create; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -11,20 +9,32 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov import com.simibubi.create.content.contraptions.components.structureMovement.interaction.DoorMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.LeverMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.TrapdoorMovingInteraction; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.tterrag.registrate.util.nullness.NonNullConsumer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllInteractionBehaviours { - private static final Map, MovingInteractionBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); + private static final CreateRegistry BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_BEHAVIOURS = new ArrayList<>(); + public static void registerBehaviour(ResourceLocation block, MovingInteractionBehaviour provider) { + BLOCK_BEHAVIOURS.register(block, provider); + } + + public static void registerBehaviour(Block block, MovingInteractionBehaviour provider) { + BLOCK_BEHAVIOURS.register(block, provider); + } + + @Deprecated(forRemoval = true) public static void registerBehaviour(IRegistryDelegate block, MovingInteractionBehaviour provider) { - BLOCK_BEHAVIOURS.put(block, provider); + registerBehaviour(block.name(), provider); } public static void registerBehaviourProvider(BehaviourProvider provider) { @@ -33,7 +43,7 @@ public class AllInteractionBehaviours { @Nullable public static MovingInteractionBehaviour getBehaviour(BlockState state) { - MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); + MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock()); if (behaviour != null) { return behaviour; } @@ -50,11 +60,11 @@ public class AllInteractionBehaviours { public static NonNullConsumer interactionBehaviour( MovingInteractionBehaviour behaviour) { - return b -> registerBehaviour(b.delegate, behaviour); + return b -> registerBehaviour(b, behaviour); } static void registerDefaults() { - registerBehaviour(Blocks.LEVER.delegate, new LeverMovingInteraction()); + registerBehaviour(Blocks.LEVER, new LeverMovingInteraction()); DoorMovingInteraction doorBehaviour = new DoorMovingInteraction(); registerBehaviourProvider(state -> { diff --git a/src/main/java/com/simibubi/create/AllMovementBehaviours.java b/src/main/java/com/simibubi/create/AllMovementBehaviours.java index 3c20d5b2f..843ece1f7 100644 --- a/src/main/java/com/simibubi/create/AllMovementBehaviours.java +++ b/src/main/java/com/simibubi/create/AllMovementBehaviours.java @@ -1,9 +1,7 @@ package com.simibubi.create; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -12,19 +10,31 @@ import com.simibubi.create.content.contraptions.components.actors.CampfireMoveme import com.simibubi.create.content.contraptions.components.actors.dispenser.DispenserMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.dispenser.DropperMovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.tterrag.registrate.util.nullness.NonNullConsumer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllMovementBehaviours { - private static final Map, MovementBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); + private static final CreateRegistry BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_BEHAVIOURS = new ArrayList<>(); + public static void registerBehaviour(ResourceLocation block, MovementBehaviour behaviour) { + BLOCK_BEHAVIOURS.register(block, behaviour); + } + + public static void registerBehaviour(Block block, MovementBehaviour behaviour) { + BLOCK_BEHAVIOURS.register(block, behaviour); + } + + @Deprecated(forRemoval = true) public static void registerBehaviour(IRegistryDelegate block, MovementBehaviour behaviour) { - BLOCK_BEHAVIOURS.put(block, behaviour); + registerBehaviour(block.name(), behaviour); } public static void registerBehaviourProvider(BehaviourProvider provider) { @@ -33,7 +43,7 @@ public class AllMovementBehaviours { @Nullable public static MovementBehaviour getBehaviour(BlockState state) { - MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); + MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock()); if (behaviour != null) { return behaviour; } @@ -50,16 +60,16 @@ public class AllMovementBehaviours { public static NonNullConsumer movementBehaviour( MovementBehaviour behaviour) { - return b -> registerBehaviour(b.delegate, behaviour); + return b -> registerBehaviour(b, behaviour); } static void registerDefaults() { - registerBehaviour(Blocks.BELL.delegate, new BellMovementBehaviour()); - registerBehaviour(Blocks.CAMPFIRE.delegate, new CampfireMovementBehaviour()); + registerBehaviour(Blocks.BELL, new BellMovementBehaviour()); + registerBehaviour(Blocks.CAMPFIRE, new CampfireMovementBehaviour()); DispenserMovementBehaviour.gatherMovedDispenseItemBehaviours(); - registerBehaviour(Blocks.DISPENSER.delegate, new DispenserMovementBehaviour()); - registerBehaviour(Blocks.DROPPER.delegate, new DropperMovementBehaviour()); + registerBehaviour(Blocks.DISPENSER, new DispenserMovementBehaviour()); + registerBehaviour(Blocks.DROPPER, new DropperMovementBehaviour()); } public interface BehaviourProvider { diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 6b9c33f42..21875a375 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -26,6 +26,7 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSeria import com.simibubi.create.content.curiosities.toolbox.ToolboxDyeingRecipe; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import net.minecraft.core.Registry; @@ -143,7 +144,7 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { public static boolean shouldIgnoreInAutomation(Recipe recipe) { RecipeSerializer serializer = recipe.getSerializer(); - if (serializer != null && RECIPE_DENY_SET.contains(serializer.getRegistryName())) + if (serializer != null && RECIPE_DENY_SET.contains(RegisteredObjects.getKeyOrThrow(serializer))) return true; return recipe.getId() .getPath() diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 7fda0fa65..56c0b9b1a 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -29,6 +29,7 @@ import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.block.CopperRegistries; import com.simibubi.create.foundation.command.ServerLagger; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.config.ContraptionMovementSetting; import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.LangMerger; import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen; @@ -36,6 +37,7 @@ import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen; import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen; import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.simibubi.create.foundation.worldgen.AllWorldFeatures; import com.tterrag.registrate.util.nullness.NonNullSupplier; @@ -43,8 +45,10 @@ import net.minecraft.core.particles.ParticleType; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.Entity; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.ForgeMod; @@ -80,6 +84,8 @@ public class Create { public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator(); public static final GlobalRailwayManager RAILWAYS = new GlobalRailwayManager(); public static final ServerLagger LAGGER = new ServerLagger(); + /** Use the {@link Random} of a local {@link Level} or {@link Entity} or create one */ + @Deprecated public static final Random RANDOM = new Random(); private static final NonNullSupplier REGISTRATE = CreateRegistrate.lazy(ID); @@ -103,6 +109,7 @@ public class Create { AllMovementBehaviours.registerDefaults(); AllInteractionBehaviours.registerDefaults(); AllDisplayBehaviours.registerDefaults(); + ContraptionMovementSetting.registerDefaults(); AllArmInteractionPointTypes.register(); AllWorldFeatures.register(); AllEnchantments.register(); @@ -133,6 +140,7 @@ public class Create { } public static void init(final FMLCommonSetupEvent event) { + CreateRegistry.unwrapAll(); AllPackets.registerPackets(); SchematicInstances.register(); BuiltinPotatoProjectileTypes.register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 6f3da1702..3860b9395 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -26,6 +26,7 @@ import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.SuperByteBufferCache; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ModelSwapper; import com.simibubi.create.foundation.utility.ghost.GhostBlocks; import com.simibubi.create.foundation.utility.outliner.Outliner; @@ -33,12 +34,10 @@ import com.simibubi.create.foundation.utility.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.GraphicsStatus; import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.client.gui.OverlayRegistry; import net.minecraftforge.eventbus.api.IEventBus; @@ -126,16 +125,16 @@ public class CreateClient { if (AllConfigs.CLIENT.ignoreFabulousWarning.get()) return; - MutableComponent text = ComponentUtils.wrapInSquareBrackets(new TextComponent("WARN")) + MutableComponent text = ComponentUtils.wrapInSquareBrackets(Components.literal("WARN")) .withStyle(ChatFormatting.GOLD) - .append(new TextComponent( + .append(Components.literal( " Some of Create's visual features will not be available while Fabulous graphics are enabled!")) .withStyle(style -> style .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning")) .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new TextComponent("Click here to disable this warning")))); + Components.literal("Click here to disable this warning")))); - mc.gui.handleChat(ChatType.CHAT, text, mc.player.getUUID()); + mc.player.displayClientMessage(text, false); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index c0487661b..60adb490b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -15,6 +15,7 @@ import com.simibubi.create.AllFluids; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import mezz.jei.api.forge.ForgeTypes; @@ -27,7 +28,6 @@ import mezz.jei.api.registration.IRecipeRegistration; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; @@ -159,12 +159,12 @@ public abstract class CreateRecipeCategory> implements IReci } int amount = mbAmount == -1 ? fluidStack.getAmount() : mbAmount; - Component text = new TextComponent(String.valueOf(amount)).append(Lang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); + Component text = Components.literal(String.valueOf(amount)).append(Lang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); if (tooltip.isEmpty()) tooltip.add(0, text); else { List siblings = tooltip.get(0).getSiblings(); - siblings.add(new TextComponent(" ")); + siblings.add(Components.literal(" ")); siblings.add(text); } }; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java index acbc7d0fe..63f1779c0 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.content.contraptions.processing.EmptyingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes; @@ -68,10 +69,8 @@ public class ItemDrainCategory extends CreateRecipeCategory { continue; Ingredient ingredient = Ingredient.of(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = extracted.getFluid() - .getRegistryName(); + ResourceLocation itemName = RegisteredObjects.getKeyOrThrow(stack.getItem()); + ResourceLocation fluidName = RegisteredObjects.getKeyOrThrow(extracted.getFluid()); consumer.accept(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index ff9d62b7a..33e0c5239 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -11,6 +11,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.Components; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; @@ -23,7 +24,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -183,7 +184,7 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory list = new ArrayList<>(); - TranslatableComponent crash = new TranslatableComponent("jei.tooltip.error.crash"); + MutableComponent crash = Components.translatable("jei.tooltip.error.crash"); list.add(crash.withStyle(ChatFormatting.RED)); return list; } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 888818f67..0a2d32836 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -15,7 +15,9 @@ import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRe import com.simibubi.create.content.contraptions.itemAssembly.SequencedRecipe; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.ingredient.IRecipeSlotsView; @@ -25,8 +27,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; @ParametersAreNonnullByDefault @@ -75,9 +76,8 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory sequencedRecipe) { - return subCategories.computeIfAbsent(sequencedRecipe.getRecipe() - .getSerializer() - .getRegistryName(), + return subCategories.computeIfAbsent(RegisteredObjects.getKeyOrThrow(sequencedRecipe.getRecipe() + .getSerializer()), rl -> sequencedRecipe.getAsAssemblyRecipe() .getJEISubCategory() .get() @@ -100,7 +100,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory sequencedRecipe = sequence.get(i); SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe); int subWidth = subCategory.getWidth(); - TextComponent component = new TextComponent("" + romans[Math.min(i, 6)]); + MutableComponent component = Components.literal("" + romans[Math.min(i, 6)]); font.draw(matrixStack, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888); subCategory.draw(sequencedRecipe, matrixStack, mouseX, mouseY, i); matrixStack.translate(subWidth + margin, 0, 0); @@ -144,7 +144,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory getTooltipStrings(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, double mouseX, double mouseY) { List tooltip = new ArrayList<>(); - TranslatableComponent junk = Lang.translateDirect("recipe.assembly.junk"); + MutableComponent junk = Lang.translateDirect("recipe.assembly.junk"); boolean singleOutput = recipe.getOutputChance() == 1; boolean willRepeat = recipe.getLoops() > 1; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 89badd9e7..5f4f43160 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes; @@ -77,10 +78,8 @@ public class SpoutCategory extends CreateRecipeCategory { return; Ingredient bucket = Ingredient.of(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = fluidCopy.getFluid() - .getRegistryName(); + ResourceLocation itemName = RegisteredObjects.getKeyOrThrow(stack.getItem()); + ResourceLocation fluidName = RegisteredObjects.getKeyOrThrow(fluidCopy.getFluid()); consumer.accept(new ProcessingRecipeBuilder<>(FillingRecipe::new, Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath())) diff --git a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java index 3cb201388..ccf2a8bac 100644 --- a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java +++ b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java @@ -5,6 +5,7 @@ import com.simibubi.create.compat.Mods; import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -40,8 +41,7 @@ public class SpoutCasting extends BlockSpoutingBehaviour { if (handler.getTanks() != 1) return 0; - ResourceLocation registryName = te.getType() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(te.getType()); if (!registryName.equals(TABLE) && !registryName.equals(BASIN)) return 0; if (!handler.isFluidValid(0, availableFluid)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java index 92126100d..4684e4678 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java @@ -12,11 +12,10 @@ import com.simibubi.create.content.contraptions.itemAssembly.IAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; @@ -59,9 +58,9 @@ public class DeployerApplicationRecipe extends ItemApplicationRecipe implements ItemStack[] matchingStacks = ingredients.get(1) .getItems(); if (matchingStacks.length == 0) - return new TextComponent("Invalid"); + return Components.literal("Invalid"); return Lang.translateDirect("recipe.assembly.deploying_item", - new TranslatableComponent(matchingStacks[0].getDescriptionId()).getString()); + Components.translatable(matchingStacks[0].getDescriptionId()).getString()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 1a825f0eb..d9ff4eab0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -23,6 +23,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -35,7 +36,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -480,13 +480,13 @@ public class DeployerTileEntity extends KineticTileEntity { if (!heldItem.isEmpty()) Lang.translate("tooltip.deployer.contains", - new TranslatableComponent(heldItem.getDescriptionId()).getString(), heldItem.getCount()) + Components.translatable(heldItem.getDescriptionId()).getString(), heldItem.getCount()) .style(ChatFormatting.GREEN) .forGoggles(tooltip); float stressAtBase = calculateStressApplied(); if (StressImpact.isEnabled() && !Mth.equal(stressAtBase, 0)) { - tooltip.add(Lang.empty()); + tooltip.add(Components.immutableEmpty()); addStressImpactStats(tooltip, stressAtBase); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java index e4bf26365..8efc121fd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java @@ -4,6 +4,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.foundation.block.BlockStressValues; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; @@ -81,7 +82,7 @@ public class PoweredShaftTileEntity extends GeneratingKineticTileEntity { if (enginePos != null && capacityKey != null) { compound.put("EnginePos", NbtUtils.writeBlockPos(enginePos)); compound.putFloat("EnginePower", engineEfficiency); - compound.putString("EngineType", capacityKey.getRegistryName() + compound.putString("EngineType", RegisteredObjects.getKeyOrThrow(capacityKey) .toString()); } super.write(compound, clientPacket); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java index 0f2a0ecd2..5f53ff643 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -25,7 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -110,7 +111,7 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf String[] pitches = Lang.translateDirect("generic.notes") .getString() .split(";"); - TextComponent textComponent = new TextComponent(spacing); + MutableComponent textComponent = Components.literal(spacing); tooltip.add(textComponent.append(Lang.translateDirect("generic.pitch", pitches[pitch % pitches.length]))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java index d9477f0c3..0d0cee20a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java @@ -5,11 +5,11 @@ import java.util.List; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public interface IDisplayAssemblyExceptions { @@ -19,7 +19,7 @@ public interface IDisplayAssemblyExceptions { return false; if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() .append(Lang.translateDirect("gui.assembly.exception") diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java index ca772f793..b6ecc76de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.RaycastHelper; @@ -18,7 +19,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.item.ItemStack; @@ -62,7 +62,7 @@ public class SuperGlueSelectionHandler { if (clusterCooldown > 0) { if (clusterCooldown == 25) - player.displayClientMessage(TextComponent.EMPTY, true); + player.displayClientMessage(Components.immutableEmpty(), true); CreateClient.OUTLINER.keep(clusterOutlineSlot); clusterCooldown--; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java index 23e23cc82..01da69d2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.tags.FluidTags; @@ -43,8 +44,7 @@ public class FluidBottleItemHook extends Item { return; FluidState fluidState = world.getFluidState(blockpos); - if (fluidState.is(FluidTags.WATER) && fluidState.getType() - .getRegistryName() + if (fluidState.is(FluidTags.WATER) && RegisteredObjects.getKeyOrThrow(fluidState.getType()) .getNamespace() .equals(Create.ID)) { event.setCancellationResult(InteractionResult.PASS); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java index 380945f5b..4b1c31c78 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java @@ -11,10 +11,10 @@ import com.simibubi.create.content.contraptions.itemAssembly.IAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; @@ -70,7 +70,7 @@ public class FillingRecipe extends ProcessingRecipe implements IA List matchingFluidStacks = fluidIngredients.get(0) .getMatchingFluidStacks(); if (matchingFluidStacks.size() == 0) - return new TextComponent("Invalid"); + return Components.literal("Invalid"); return Lang.translateDirect("recipe.assembly.spout_filling_fluid", matchingFluidStacks.get(0).getDisplayName().getString()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java index 364725b28..1bd73686a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java @@ -6,6 +6,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.AllParticleTypes; import com.simibubi.create.content.contraptions.particle.ICustomParticleData; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; @@ -15,7 +16,6 @@ import net.minecraft.world.level.material.Fluids; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; public class FluidParticleData implements ParticleOptions, ICustomParticleData { @@ -49,8 +49,7 @@ public class FluidParticleData implements ParticleOptions, ICustomParticleData CODEC = RecordCodecBuilder.create(i -> i diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java index 45059a5d9..d6da04c59 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java @@ -5,12 +5,13 @@ import java.util.List; import com.simibubi.create.AllFluids; import com.simibubi.create.content.contraptions.fluids.VirtualFluid; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.alchemy.Potion; @@ -20,7 +21,6 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; public class PotionFluid extends VirtualFluid { @@ -42,7 +42,7 @@ public class PotionFluid extends VirtualFluid { } public static FluidStack addPotionToFluidStack(FluidStack fs, Potion potion) { - ResourceLocation resourcelocation = ForgeRegistries.POTIONS.getKey(potion); + ResourceLocation resourcelocation = RegisteredObjects.getKeyOrThrow(potion); if (potion == Potions.EMPTY) { fs.removeChildTag("Potion"); return fs; @@ -82,7 +82,7 @@ public class PotionFluid extends VirtualFluid { @Override public Component getDisplayName(FluidStack stack) { - return new TranslatableComponent(getTranslationKey(stack)); + return Components.translatable(getTranslationKey(stack)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java index febb50e29..db2552e56 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java @@ -8,14 +8,14 @@ import com.google.common.collect.Lists; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Tuple; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; @@ -105,10 +105,10 @@ public class PotionFluidHandler { List list = PotionUtils.getAllEffects(fs.getOrCreateTag()); List> list1 = Lists.newArrayList(); if (list.isEmpty()) { - tooltip.add((new TranslatableComponent("effect.none")).withStyle(ChatFormatting.GRAY)); + tooltip.add((Components.translatable("effect.none")).withStyle(ChatFormatting.GRAY)); } else { for (MobEffectInstance effectinstance : list) { - TranslatableComponent textcomponent = new TranslatableComponent(effectinstance.getDescriptionId()); + MutableComponent textcomponent = Components.translatable(effectinstance.getDescriptionId()); MobEffect effect = effectinstance.getEffect(); Map map = effect.getAttributeModifiers(); if (!map.isEmpty()) { @@ -125,7 +125,7 @@ public class PotionFluidHandler { if (effectinstance.getAmplifier() > 0) { textcomponent.append(" ") - .append(new TranslatableComponent("potion.potency." + effectinstance.getAmplifier()).getString()); + .append(Components.translatable("potion.potency." + effectinstance.getAmplifier()).getString()); } if (effectinstance.getDuration() > 20) { @@ -140,8 +140,8 @@ public class PotionFluidHandler { } if (!list1.isEmpty()) { - tooltip.add(new TextComponent("")); - tooltip.add((new TranslatableComponent("potion.whenDrank")).withStyle(ChatFormatting.DARK_PURPLE)); + tooltip.add(Components.immutableEmpty()); + tooltip.add((Components.translatable("potion.whenDrank")).withStyle(ChatFormatting.DARK_PURPLE)); for (Tuple tuple : list1) { AttributeModifier attributemodifier2 = tuple.getB(); @@ -155,19 +155,19 @@ public class PotionFluidHandler { } if (d0 > 0.0D) { - tooltip.add((new TranslatableComponent( + tooltip.add((Components.translatable( "attribute.modifier.plus." + attributemodifier2.getOperation() .toValue(), ItemStack.ATTRIBUTE_MODIFIER_FORMAT.format(d1), - new TranslatableComponent(tuple.getA()))) + Components.translatable(tuple.getA()))) .withStyle(ChatFormatting.BLUE)); } else if (d0 < 0.0D) { d1 = d1 * -1.0D; - tooltip.add((new TranslatableComponent( + tooltip.add((Components.translatable( "attribute.modifier.take." + attributemodifier2.getOperation() .toValue(), ItemStack.ATTRIBUTE_MODIFIER_FORMAT.format(d1), - new TranslatableComponent(tuple.getA()))) + Components.translatable(tuple.getA()))) .withStyle(ChatFormatting.RED)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java index f204dc201..890810f6d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -29,7 +30,6 @@ import net.minecraft.core.Direction; 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.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -147,8 +147,8 @@ public class BoilerData { if (!isActive()) return false; - Component indent = new TextComponent(IHaveGoggleInformation.spacing); - Component indent2 = new TextComponent(IHaveGoggleInformation.spacing + " "); + Component indent = Components.literal(IHaveGoggleInformation.spacing); + Component indent2 = Components.literal(IHaveGoggleInformation.spacing + " "); calcMinMaxForSize(boilerSize); @@ -169,7 +169,7 @@ public class BoilerData { double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines) * BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get()); - tooltip.add(Lang.empty()); + tooltip.add(Components.immutableEmpty()); Lang.translate("tooltip.capacityProvided") .style(ChatFormatting.GRAY) @@ -234,12 +234,12 @@ public class BoilerData { } private MutableComponent blockComponent(int level) { - return new TextComponent( + return Components.literal( "" + "\u2588".repeat(minValue) + "\u2592".repeat(level - minValue) + "\u2591".repeat(maxValue - level)); } private MutableComponent barComponent(int level) { - return TextComponent.EMPTY.copy() + return Components.empty() .append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN)) .append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN)) .append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN)) @@ -250,7 +250,7 @@ public class BoilerData { } private MutableComponent bars(int level, ChatFormatting format) { - return new TextComponent(Strings.repeat('|', level)).withStyle(format); + return Components.literal(Strings.repeat('|', level)).withStyle(format); } public boolean evaluate(FluidTankTileEntity controller) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java index a36ab5f30..12bde6e81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java @@ -1,9 +1,7 @@ package com.simibubi.create.content.contraptions.fluids.tank; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -11,19 +9,31 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; +import com.simibubi.create.foundation.utility.CreateRegistry; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class BoilerHeaters { - private static final Map, Heater> BLOCK_HEATERS = new HashMap<>(); + private static final CreateRegistry BLOCK_HEATERS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_HEATERS = new ArrayList<>(); + public static void registerHeater(ResourceLocation block, Heater heater) { + BLOCK_HEATERS.register(block, heater); + } + + public static void registerHeater(Block block, Heater heater) { + BLOCK_HEATERS.register(block, heater); + } + + @Deprecated(forRemoval = true) public static void registerHeater(IRegistryDelegate block, Heater heater) { - BLOCK_HEATERS.put(block, heater); + registerHeater(block.name(), heater); } public static void registerHeaterProvider(HeaterProvider provider) { @@ -36,7 +46,7 @@ public class BoilerHeaters { * All other positive values are used as the amount of active heat. */ public static float getActiveHeat(Level level, BlockPos pos, BlockState state) { - Heater heater = BLOCK_HEATERS.get(state.getBlock().delegate); + Heater heater = BLOCK_HEATERS.get(state.getBlock()); if (heater != null) { return heater.getActiveHeat(level, pos, state); } @@ -52,7 +62,7 @@ public class BoilerHeaters { } public static void registerDefaults() { - registerHeater(AllBlocks.BLAZE_BURNER.get().delegate, (level, pos, state) -> { + registerHeater(AllBlocks.BLAZE_BURNER.get(), (level, pos, state) -> { HeatLevel value = state.getValue(BlazeBurnerBlock.HEAT_LEVEL); if (value == HeatLevel.NONE) { return -1; diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java index 36ca4481e..24b6539c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java @@ -8,12 +8,12 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -24,26 +24,26 @@ public class GoggleConfigScreen extends AbstractSimiScreen { private final List tooltip; public GoggleConfigScreen() { - Component componentSpacing = new TextComponent(" "); + Component componentSpacing = Components.literal(" "); tooltip = new ArrayList<>(); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay1"))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay2") .withStyle(ChatFormatting.GRAY))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay3"))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay4"))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay5") .withStyle(ChatFormatting.GRAY))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay6") .withStyle(ChatFormatting.GRAY))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay7"))); tooltip.add(componentSpacing.plainCopy() diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 367f6ca2c..66b941eda 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.outliner.Outline; @@ -30,7 +31,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.GameType; @@ -100,7 +100,7 @@ public class GoggleOverlayRenderer { if (hasHoveringInformation) { if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); IHaveHoveringInformation hte = (IHaveHoveringInformation) te; hoverAddedInformation = hte.addToTooltip(tooltip, mc.player.isShiftKeyDown()); @@ -143,11 +143,11 @@ public class GoggleOverlayRenderer { if (!pistonFound) return; if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() .append(Lang.translateDirect("gui.goggles.pole_length")) - .append(new TextComponent(" " + poles))); + .append(Components.literal(" " + poles))); } if (tooltip.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java index 0eeaf904f..308db240c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java @@ -3,12 +3,12 @@ package com.simibubi.create.content.contraptions.goggles; import java.util.List; import java.util.Optional; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -27,7 +27,7 @@ public interface IHaveGoggleInformation { * Use Lang.[...].forGoggles(list) */ @Deprecated - Component componentSpacing = new TextComponent(spacing); + Component componentSpacing = Components.literal(spacing); /** * this method will be called when looking at a TileEntity that implemented this diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java index 1dca38cfe..980d506eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java @@ -12,6 +12,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -19,7 +20,6 @@ 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.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; @@ -239,7 +239,7 @@ public class SequencedAssemblyRecipe implements Recipe { int length = sequencedAssemblyRecipe.sequence.size(); int step = sequencedAssemblyRecipe.getStep(stack); int total = length * sequencedAssemblyRecipe.loops; - toolTip.add(new TextComponent("")); + toolTip.add(Components.immutableEmpty()); toolTip.add(Lang.translateDirect("recipe.sequenced_assembly") .withStyle(ChatFormatting.GRAY)); toolTip.add(Lang.translateDirect("recipe.assembly.progress", step, total) @@ -256,7 +256,7 @@ public class SequencedAssemblyRecipe implements Recipe { toolTip.add(Lang.translateDirect("recipe.assembly.next", textComponent) .withStyle(ChatFormatting.AQUA)); else - toolTip.add(new TextComponent("-> ").append(textComponent) + toolTip.add(Components.literal("-> ").append(textComponent) .withStyle(ChatFormatting.DARK_AQUA)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java index f9acf963e..c16d0d07e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java @@ -5,6 +5,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -35,7 +36,7 @@ public class SequencedRecipe> { @SuppressWarnings("unchecked") ProcessingRecipeSerializer serializer = (ProcessingRecipeSerializer) wrapped.getSerializer(); JsonObject json = new JsonObject(); - json.addProperty("type", ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer) + json.addProperty("type", RegisteredObjects.getKeyOrThrow(serializer) .toString()); serializer.write(json, wrapped); return json; @@ -62,7 +63,7 @@ public class SequencedRecipe> { public void writeToBuffer(FriendlyByteBuf buffer) { @SuppressWarnings("unchecked") ProcessingRecipeSerializer serializer = (ProcessingRecipeSerializer) wrapped.getSerializer(); - buffer.writeResourceLocation(ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer)); + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow(serializer)); buffer.writeResourceLocation(wrapped.getId()); serializer.toNetwork(buffer, wrapped); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java index 0d280b60d..d986e74e8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java @@ -9,6 +9,7 @@ import com.google.gson.JsonSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.Pair; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.TagParser; import net.minecraft.network.FriendlyByteBuf; @@ -60,8 +61,8 @@ public class ProcessingOutput { public JsonElement serialize() { JsonObject json = new JsonObject(); - ResourceLocation resourceLocation = compatDatagenOutput == null ? stack.getItem() - .getRegistryName() : compatDatagenOutput.getFirst(); + ResourceLocation resourceLocation = compatDatagenOutput == null ? RegisteredObjects.getKeyOrThrow(stack + .getItem()) : compatDatagenOutput.getFirst(); json.addProperty("item", resourceLocation.toString()); int count = compatDatagenOutput == null ? stack.getCount() : compatDatagenOutput.getSecond(); if (count != 1) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java index e90367af9..277ff6a8d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java @@ -7,6 +7,7 @@ import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.MethodsReturnNonnullByDefault; @@ -71,7 +72,7 @@ public class BlazeBurnerBlockItem extends BlockItem { @Override public String getDescriptionId() { - return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + getRegistryName().getPath(); + return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + RegisteredObjects.getKeyOrThrow(this).getPath(); } @Override @@ -99,7 +100,7 @@ public class BlazeBurnerBlockItem extends BlockItem { possibleSpawns.add(spawner.nextSpawnData); } - ResourceLocation blazeId = EntityType.BLAZE.getRegistryName(); + ResourceLocation blazeId = RegisteredObjects.getKeyOrThrow(EntityType.BLAZE); for (SpawnData e : possibleSpawns) { ResourceLocation spawnerEntityId = new ResourceLocation(e.entityToSpawn() .getString("id")); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java index 23bdf2048..93713d075 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java @@ -3,10 +3,10 @@ package com.simibubi.create.content.contraptions.relays.advanced.sequencer; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public enum InstructionSpeedModifiers { @@ -24,7 +24,7 @@ public enum InstructionSpeedModifiers { value = modifier; } private InstructionSpeedModifiers(int modifier, String label) { - this.label = new TextComponent(label); + this.label = Components.literal(label); translationKey = "gui.sequenced_gearshift.speed." + Lang.asId(name()); value = modifier; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java index 087dfa4f9..7f2c86ab4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java @@ -12,12 +12,12 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.core.BlockPos; import net.minecraft.nbt.ListTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class SequencedGearshiftScreen extends AbstractSimiScreen { @@ -150,7 +150,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { if (def.hasValueParameter) { String text = def.formatValue(instruction.value); int stringWidth = font.width(text); - label(ms, 90 + (12 - stringWidth / 2), yOffset - 3, new TextComponent(text)); + label(ms, 90 + (12 - stringWidth / 2), yOffset - 3, Components.literal(text)); } if (def.hasSpeedParameter) label(ms, 127, yOffset - 3, instruction.speedModifier.label); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java index 681e16ec7..443cacf40 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java @@ -13,6 +13,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.Casin import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -22,7 +23,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; @@ -473,7 +473,7 @@ public class BeltSlicer { mc.player.displayClientMessage(Lang.translateDirect(feedback.langKey) .withStyle(feedback.formatting), true); else - mc.player.displayClientMessage(new TextComponent(""), true); + mc.player.displayClientMessage(Components.immutableEmpty(), true); if (feedback.bb != null) CreateClient.OUTLINER.chaseAABB("BeltSlicer", feedback.bb) diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index 4d1011879..ed12b472b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -4,6 +4,7 @@ import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTags; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; @@ -11,7 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket; @@ -70,9 +70,9 @@ public class BackTankUtil { player.connection.send(new ClientboundSetTitlesAnimationPacket(10, 40, 10)); player.connection.send(new ClientboundSetSubtitleTextPacket( - new TextComponent("\u26A0 ").withStyle(depleted ? ChatFormatting.RED : ChatFormatting.GOLD) + Components.literal("\u26A0 ").withStyle(depleted ? ChatFormatting.RED : ChatFormatting.GOLD) .append(component.withStyle(ChatFormatting.GRAY)))); - player.connection.send(new ClientboundSetTitleTextPacket(new TextComponent(""))); + player.connection.send(new ClientboundSetTitleTextPacket(Components.immutableEmpty())); } public static int maxAir(ItemStack backtank) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index 9ceefaf8e..67dffa2a8 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; @@ -25,7 +26,6 @@ import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.tags.FluidTags; import net.minecraft.util.StringUtil; import net.minecraft.world.entity.LivingEntity; @@ -129,7 +129,7 @@ public class CopperBacktankArmorLayer implements ParticleO @Override public String writeToString() { - return ForgeRegistries.PARTICLE_TYPES.getKey(getType()).toString(); + return RegisteredObjects.getKeyOrThrow(getType()).toString(); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java index 0a30ce607..03ac2b78d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java @@ -124,8 +124,8 @@ public class SymmetryHandler { .tesselateBlock(player.level, model, Blocks.AIR.defaultBlockState(), pos, ms, builder, true, random, Mth.getSeed(pos), OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE); - buffer.endBatch(); ms.popPose(); + buffer.endBatch(); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java index a5c77c3b5..f3d009546 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -61,9 +61,9 @@ public class SymmetryWandScreen extends AbstractSimiScreen { int x = guiLeft; int y = guiTop; - labelType = new Label(x + 49, y + 28, TextComponent.EMPTY).colored(0xFFFFFFFF) + labelType = new Label(x + 49, y + 28, Components.immutableEmpty()).colored(0xFFFFFFFF) .withShadow(); - labelAlign = new Label(x + 49, y + 50, TextComponent.EMPTY).colored(0xFFFFFFFF) + labelAlign = new Label(x + 49, y + 50, Components.immutableEmpty()).colored(0xFFFFFFFF) .withShadow(); int state = diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java index 47a16cbac..8603595f5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.curiosities.weapons; import java.util.UUID; import java.util.function.BiPredicate; import java.util.function.Predicate; +import java.util.function.Supplier; import com.mojang.authlib.GameProfile; import com.mojang.datafixers.util.Pair; @@ -43,7 +44,6 @@ import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.event.entity.EntityTeleportEvent; -import net.minecraftforge.registries.IRegistryDelegate; public class BuiltinPotatoProjectileTypes { @@ -62,7 +62,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(1.25f) .knockback(1.5f) .renderTumbling() - .onBlockHit(plantCrop(Blocks.POTATOES.delegate)) + .onBlockHit(plantCrop(Blocks.POTATOES)) .registerAndAssign(Items.POTATO), BAKED_POTATO = create("baked_potato").damage(5) @@ -79,7 +79,7 @@ public class BuiltinPotatoProjectileTypes { .knockback(0.3f) .renderTowardMotion(140, 1) .soundPitch(1.5f) - .onBlockHit(plantCrop(Blocks.CARROTS.delegate)) + .onBlockHit(plantCrop(Blocks.CARROTS)) .registerAndAssign(Items.CARROT), GOLDEN_CARROT = create("golden_carrot").damage(12) @@ -213,7 +213,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(0.95f) .renderTumbling() .soundPitch(0.9f) - .onBlockHit(placeBlockOnGround(Blocks.MELON.delegate)) + .onBlockHit(placeBlockOnGround(Blocks.MELON)) .registerAndAssign(Blocks.MELON), PUMPKIN_BLOCK = create("pumpkin_block").damage(6) @@ -222,7 +222,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(0.95f) .renderTumbling() .soundPitch(0.9f) - .onBlockHit(placeBlockOnGround(Blocks.PUMPKIN.delegate)) + .onBlockHit(placeBlockOnGround(Blocks.PUMPKIN)) .registerAndAssign(Blocks.PUMPKIN), PUMPKIN_PIE = create("pumpkin_pie").damage(7) @@ -303,7 +303,7 @@ public class BuiltinPotatoProjectileTypes { entity.addEffect(effect); } - private static BiPredicate plantCrop(IRegistryDelegate cropBlock) { + private static BiPredicate plantCrop(Supplier cropBlock) { return (world, ray) -> { if (world.isClientSide()) return true; @@ -328,8 +328,12 @@ public class BuiltinPotatoProjectileTypes { }; } + private static BiPredicate plantCrop(Block cropBlock) { + return plantCrop(cropBlock.delegate); + } + private static BiPredicate placeBlockOnGround( - IRegistryDelegate block) { + Supplier block) { return (world, ray) -> { if (world.isClientSide()) return true; @@ -364,6 +368,10 @@ public class BuiltinPotatoProjectileTypes { }; } + private static BiPredicate placeBlockOnGround(Block block) { + return placeBlockOnGround(block.delegate); + } + private static Predicate chorusTeleport(double teleportDiameter) { return ray -> { Entity entity = ray.getEntity(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java index e87875809..7b132d8d0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.curiosities.zapper.ShootableGadgetItemMethods import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -24,8 +25,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; 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.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -222,21 +221,21 @@ public class PotatoCannonItem extends ProjectileWeaponItem { String _reload = "potato_cannon.ammo.reload_ticks"; String _knockback = "potato_cannon.ammo.knockback"; - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent(ammo.getDescriptionId()).append(new TextComponent(":")) + tooltip.add(Components.immutableEmpty()); + tooltip.add(Components.translatable(ammo.getDescriptionId()).append(Components.literal(":")) .withStyle(ChatFormatting.GRAY)); PotatoCannonProjectileType type = PotatoProjectileTypeManager.getTypeForStack(ammo) .get(); - TextComponent spacing = new TextComponent(" "); + MutableComponent spacing = Components.literal(" "); ChatFormatting green = ChatFormatting.GREEN; ChatFormatting darkGreen = ChatFormatting.DARK_GREEN; float damageF = type.getDamage() * additionalDamageMult; - MutableComponent damage = new TextComponent( + MutableComponent damage = Components.literal( damageF == Mth.floor(damageF) ? "" + Mth.floor(damageF) : "" + damageF); - MutableComponent reloadTicks = new TextComponent("" + type.getReloadTicks()); + MutableComponent reloadTicks = Components.literal("" + type.getReloadTicks()); MutableComponent knockback = - new TextComponent("" + (type.getKnockback() + additionalKnockback)); + Components.literal("" + (type.getKnockback() + additionalKnockback)); damage = damage.withStyle(additionalDamageMult > 1 ? green : darkGreen); knockback = knockback.withStyle(additionalKnockback > 0 ? green : darkGreen); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java index 978c89966..795c56b80 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java @@ -1,14 +1,16 @@ package com.simibubi.create.content.curiosities.weapons; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; import java.util.function.BiPredicate; import java.util.function.Consumer; import java.util.function.Predicate; +import java.util.function.Supplier; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.ResourceLocationException; import net.minecraft.network.FriendlyByteBuf; @@ -19,11 +21,10 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IRegistryDelegate; public class PotatoCannonProjectileType { - private Set> items = new HashSet<>(); + private List> items = new ArrayList<>(); private int reloadTicks = 10; private int damage = 1; @@ -43,7 +44,7 @@ public class PotatoCannonProjectileType { protected PotatoCannonProjectileType() { } - public Set> getItems() { + public List> getItems() { return items; } @@ -148,8 +149,8 @@ public class PotatoCannonProjectileType { public static void toBuffer(PotatoCannonProjectileType type, FriendlyByteBuf buffer) { buffer.writeVarInt(type.items.size()); - for (IRegistryDelegate delegate : type.items) { - buffer.writeResourceLocation(delegate.name()); + for (Supplier delegate : type.items) { + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow(delegate.get())); } buffer.writeInt(type.reloadTicks); buffer.writeInt(type.damage); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java index 6fe7bdb1e..c38d057c3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.curiosities.weapons; import java.util.HashMap; +import java.util.IdentityHashMap; import java.util.Map; import java.util.Optional; import java.util.function.Supplier; @@ -22,13 +23,12 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent.Context; import net.minecraftforge.network.PacketDistributor; -import net.minecraftforge.registries.IRegistryDelegate; public class PotatoProjectileTypeManager { private static final Map BUILTIN_TYPE_MAP = new HashMap<>(); private static final Map CUSTOM_TYPE_MAP = new HashMap<>(); - private static final Map, PotatoCannonProjectileType> ITEM_TO_TYPE_MAP = new HashMap<>(); + private static final Map ITEM_TO_TYPE_MAP = new IdentityHashMap<>(); public static void registerBuiltinType(ResourceLocation id, PotatoCannonProjectileType type) { synchronized (BUILTIN_TYPE_MAP) { @@ -44,14 +44,14 @@ public class PotatoProjectileTypeManager { return CUSTOM_TYPE_MAP.get(id); } - public static PotatoCannonProjectileType getTypeForItem(IRegistryDelegate item) { + public static PotatoCannonProjectileType getTypeForItem(Item item) { return ITEM_TO_TYPE_MAP.get(item); } public static Optional getTypeForStack(ItemStack item) { if (item.isEmpty()) return Optional.empty(); - return Optional.ofNullable(getTypeForItem(item.getItem().delegate)); + return Optional.ofNullable(getTypeForItem(item.getItem())); } public static void clear() { @@ -62,17 +62,17 @@ public class PotatoProjectileTypeManager { public static void fillItemMap() { for (Map.Entry entry : BUILTIN_TYPE_MAP.entrySet()) { PotatoCannonProjectileType type = entry.getValue(); - for (IRegistryDelegate delegate : type.getItems()) { - ITEM_TO_TYPE_MAP.put(delegate, type); + for (Supplier delegate : type.getItems()) { + ITEM_TO_TYPE_MAP.put(delegate.get(), type); } } for (Map.Entry entry : CUSTOM_TYPE_MAP.entrySet()) { PotatoCannonProjectileType type = entry.getValue(); - for (IRegistryDelegate delegate : type.getItems()) { - ITEM_TO_TYPE_MAP.put(delegate, type); + for (Supplier delegate : type.getItems()) { + ITEM_TO_TYPE_MAP.put(delegate.get(), type); } } - ITEM_TO_TYPE_MAP.remove(AllItems.POTATO_CANNON.get().delegate); + ITEM_TO_TYPE_MAP.remove(AllItems.POTATO_CANNON.get()); } public static void toBuffer(FriendlyByteBuf buffer) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java index 6328eaaa7..f7168b1c5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java @@ -10,13 +10,13 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; @@ -44,7 +44,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen { this.background = background; this.zapper = zapper; this.hand = hand; - title = TextComponent.EMPTY; + title = Components.immutableEmpty(); brightColor = 0xFEFEFE; fontColor = AllGuiTextures.FONT_COLOR; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java index 1028fc319..860f7d274 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator.State; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; @@ -22,7 +23,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; @@ -82,7 +82,7 @@ public class WorldshaperScreen extends ZapperScreen { int x = guiLeft; int y = guiTop; - brushLabel = new Label(x + 61, y + 25, TextComponent.EMPTY).withShadow(); + brushLabel = new Label(x + 61, y + 25, Components.immutableEmpty()).withShadow(); brushInput = new SelectionScrollInput(x + 56, y + 20, 77, 18).forOptions(brushOptions) .titled(Lang.translateDirect("gui.terrainzapper.brush")) .writingTo(brushLabel) @@ -111,7 +111,7 @@ public class WorldshaperScreen extends ZapperScreen { brushParams.clear(); for (int index = 0; index < 3; index++) { - Label label = new Label(x + 65 + 20 * index, y + 45, TextComponent.EMPTY).withShadow(); + Label label = new Label(x + 65 + 20 * index, y + 45, Components.immutableEmpty()).withShadow(); final int finalIndex = index; ScrollInput input = new ScrollInput(x + 56 + 20 * index, y + 40, 18, 18) @@ -155,10 +155,10 @@ public class WorldshaperScreen extends ZapperScreen { if (currentBrush.hasConnectivityOptions()) { int x1 = x + 7 + 4 * 18; int y1 = y + 79; - followDiagonalsIndicator = new Indicator(x1, y1 - 6, TextComponent.EMPTY); + followDiagonalsIndicator = new Indicator(x1, y1 - 6, Components.immutableEmpty()); followDiagonals = new IconButton(x1, y1, AllIcons.I_FOLLOW_DIAGONAL); x1 += 18; - acrossMaterialsIndicator = new Indicator(x1, y1 - 6, TextComponent.EMPTY); + acrossMaterialsIndicator = new Indicator(x1, y1 - 6, Components.immutableEmpty()); acrossMaterials = new IconButton(x1, y1, AllIcons.I_FOLLOW_MATERIAL); followDiagonals.withCallback(() -> { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index 6651acef1..a4caf7cb4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -26,6 +26,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilter import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -40,7 +41,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; @@ -752,7 +752,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave .withStyle(ChatFormatting.WHITE)); for (ItemStack item : allStacks) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", new TranslatableComponent(item.getDescriptionId()) + .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", Components.translatable(item.getDescriptionId()) .getString(), item.getCount())) .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index b24733582..7f3f4728e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputB import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -38,7 +39,6 @@ import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; import net.minecraft.world.Containers; import net.minecraft.world.entity.item.ItemEntity; @@ -719,7 +719,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor .withStyle(ChatFormatting.YELLOW))); if (!item.isEmpty()) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.chute.contains", new TranslatableComponent(item.getDescriptionId()) + .append(Lang.translateDirect("tooltip.chute.contains", Components.translatable(item.getDescriptionId()) .getString(), item.getCount())) .withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java b/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java index 2ac88425b..55637bae2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java @@ -17,6 +17,8 @@ import com.simibubi.create.content.logistics.block.display.source.ScoreboardDisp import com.simibubi.create.content.logistics.block.display.target.DisplayTarget; import com.simibubi.create.content.logistics.block.display.target.LecternDisplayTarget; import com.simibubi.create.content.logistics.block.display.target.SignDisplayTarget; +import com.simibubi.create.foundation.utility.CreateRegistry; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.nullness.NonNullConsumer; import net.minecraft.core.BlockPos; @@ -27,17 +29,17 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllDisplayBehaviours { - public static final Map GATHERER_BEHAVIOURS = new HashMap<>(); - public static final Map, List> SOURCES_BY_BLOCK = new HashMap<>(); - public static final Map>, List> SOURCES_BY_TILE = new HashMap<>(); + private static final CreateRegistry> SOURCES_BY_BLOCK = new CreateRegistry<>(ForgeRegistries.BLOCKS); + private static final CreateRegistry, List> SOURCES_BY_TILE = new CreateRegistry<>(ForgeRegistries.BLOCK_ENTITIES); - public static final Map, DisplayTarget> TARGETS_BY_BLOCK = new HashMap<>(); - public static final Map>, DisplayTarget> TARGETS_BY_TILE = new HashMap<>(); + private static final CreateRegistry TARGETS_BY_BLOCK = new CreateRegistry<>(ForgeRegistries.BLOCKS); + private static final CreateRegistry, DisplayTarget> TARGETS_BY_TILE = new CreateRegistry<>(ForgeRegistries.BLOCK_ENTITIES); public static DisplayBehaviour register(ResourceLocation id, DisplayBehaviour behaviour) { behaviour.id = id; @@ -45,45 +47,95 @@ public class AllDisplayBehaviours { return behaviour; } - public static void assignBlock(DisplayBehaviour behaviour, IRegistryDelegate block) { - if (behaviour instanceof DisplaySource source) - SOURCES_BY_BLOCK.computeIfAbsent(block, r -> new ArrayList<>()) - .add(source); - if (behaviour instanceof DisplayTarget target) - TARGETS_BY_BLOCK.put(block, target); + public static void assignBlock(DisplayBehaviour behaviour, ResourceLocation block) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_BLOCK.register(block, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_BLOCK.register(block, target); + } } + public static void assignTile(DisplayBehaviour behaviour, ResourceLocation teType) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_TILE.get(teType); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_TILE.register(teType, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_TILE.register(teType, target); + } + } + + public static void assignBlock(DisplayBehaviour behaviour, Block block) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_BLOCK.register(block, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_BLOCK.register(block, target); + } + } + + public static void assignTile(DisplayBehaviour behaviour, BlockEntityType teType) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_TILE.get(teType); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_TILE.register(teType, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_TILE.register(teType, target); + } + } + + @Deprecated(forRemoval = true) + public static void assignBlock(DisplayBehaviour behaviour, IRegistryDelegate block) { + assignBlock(behaviour, block.name()); + } + + @Deprecated(forRemoval = true) public static void assignTile(DisplayBehaviour behaviour, IRegistryDelegate> teType) { - if (behaviour instanceof DisplaySource source) - SOURCES_BY_TILE.computeIfAbsent(teType, r -> new ArrayList<>()) - .add(source); - if (behaviour instanceof DisplayTarget target) - TARGETS_BY_TILE.put(teType, target); + assignTile(behaviour, teType.name()); } public static NonNullConsumer assignDataBehaviour(DisplayBehaviour behaviour, String... suffix) { return b -> { - ResourceLocation registryName = b.getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(b); String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target"; if (suffix.length > 0) idSuffix += "_" + suffix[0]; assignBlock(register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix), - behaviour), b.delegate); + behaviour), registryName); }; } public static > NonNullConsumer assignDataBehaviourTE( DisplayBehaviour behaviour, String... suffix) { return b -> { - ResourceLocation registryName = b.getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(b); String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target"; if (suffix.length > 0) idSuffix += "_" + suffix[0]; assignTile( register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix), behaviour), - b.delegate); + registryName); }; } @@ -108,7 +160,11 @@ public class AllDisplayBehaviours { // public static List sourcesOf(Block block) { - return SOURCES_BY_BLOCK.getOrDefault(block.delegate, Collections.emptyList()); + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + return Collections.emptyList(); + } + return sources; } public static List sourcesOf(BlockState state) { @@ -116,7 +172,11 @@ public class AllDisplayBehaviours { } public static List sourcesOf(BlockEntityType tileEntityType) { - return SOURCES_BY_TILE.getOrDefault(tileEntityType.delegate, Collections.emptyList()); + List sources = SOURCES_BY_TILE.get(tileEntityType); + if (sources == null) { + return Collections.emptyList(); + } + return sources; } public static List sourcesOf(BlockEntity tileEntity) { @@ -125,7 +185,7 @@ public class AllDisplayBehaviours { @Nullable public static DisplayTarget targetOf(Block block) { - return TARGETS_BY_BLOCK.get(block.delegate); + return TARGETS_BY_BLOCK.get(block); } @Nullable @@ -135,7 +195,7 @@ public class AllDisplayBehaviours { @Nullable public static DisplayTarget targetOf(BlockEntityType tileEntityType) { - return TARGETS_BY_TILE.get(tileEntityType.delegate); + return TARGETS_BY_TILE.get(tileEntityType); } @Nullable @@ -171,11 +231,11 @@ public class AllDisplayBehaviours { // public static void registerDefaults() { - assignTile(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN.delegate); - assignTile(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN.delegate); - assignBlock(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR.delegate); - assignTile(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK.delegate); - assignTile(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE.delegate); - assignBlock(register(Create.asResource("redstone_power_display_source"), new RedstonePowerDisplaySource()), Blocks.TARGET.delegate); + assignTile(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN); + assignTile(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN); + assignBlock(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR); + assignTile(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK); + assignTile(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE); + assignBlock(register(Create.asResource("redstone_power_display_source"), new RedstonePowerDisplaySource()), Blocks.TARGET); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java index 5ad126c0e..443d7f7b5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.ponder.ui.PonderTagScreen; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -35,7 +36,6 @@ import net.minecraft.core.Direction; 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.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -137,7 +137,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { int rows = stats.maxRows(); int startIndex = Math.min(te.targetLine, rows); - targetLineLabel = new Label(x + 65, y + 109, TextComponent.EMPTY).withShadow(); + targetLineLabel = new Label(x + 65, y + 109, Components.immutableEmpty()).withShadow(); targetLineLabel.text = target.getLineOptionText(startIndex); if (rows > 1) { @@ -189,7 +189,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { if (!sources.isEmpty()) { int startIndex = Math.max(sources.indexOf(te.activeSource), 0); - sourceTypeLabel = new Label(x + 65, y + 30, TextComponent.EMPTY).withShadow(); + sourceTypeLabel = new Label(x + 65, y + 30, Components.immutableEmpty()).withShadow(); sourceTypeLabel.text = sources.get(startIndex) .getName(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java index b72de2b78..623871b58 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java @@ -4,15 +4,15 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class AccumulatedItemCountDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - return new TextComponent(String.valueOf(context.sourceConfig() + return Components.literal(String.valueOf(context.sourceConfig() .getInt("Collected"))); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java index bb7c37196..d50164f66 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java @@ -11,12 +11,12 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import joptsimple.internal.Strings; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity; @@ -50,7 +50,7 @@ public class BoilerDisplaySource extends DisplaySource { return reduce.orElse(EMPTY_LINE); }); - return List.of(componentList.reduce((comp1, comp2) -> comp1.append(new TextComponent("\n")) + return List.of(componentList.reduce((comp1, comp2) -> comp1.append(Components.literal("\n")) .append(comp2)) .orElse(EMPTY_LINE)); } @@ -128,9 +128,9 @@ public class BoilerDisplaySource extends DisplaySource { int lw = labelWidth(); if (forFlapDisplay) { - size = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("size"))).append(size); - water = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("water"))).append(water); - heat = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("heat"))).append(heat); + size = Components.literal(Strings.repeat(' ', lw - labelWidthOf("size"))).append(size); + water = Components.literal(Strings.repeat(' ', lw - labelWidthOf("water"))).append(water); + heat = Components.literal(Strings.repeat(' ', lw - labelWidthOf("heat"))).append(heat); } return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())), @@ -150,7 +150,7 @@ public class BoilerDisplaySource extends DisplaySource { private MutableComponent labelOf(String label) { if (label.isBlank()) - return TextComponent.EMPTY.copy(); + return Components.empty(); return Lang.translateDirect("boiler." + label); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java index c779b4a56..5b9877273 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java @@ -12,19 +12,18 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; 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.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public abstract class DisplaySource extends DisplayBehaviour { - public static final List EMPTY = ImmutableList.of(new TextComponent("")); - public static final MutableComponent EMPTY_LINE = new TextComponent(""); - public static final MutableComponent WHITESPACE = new TextComponent(" "); + public static final List EMPTY = ImmutableList.of(Components.empty()); + public static final MutableComponent EMPTY_LINE = Components.empty(); + public static final MutableComponent WHITESPACE = Components.literal(" "); public abstract List provideText(DisplayLinkContext context, DisplayTargetStats stats); @@ -55,7 +54,7 @@ public abstract class DisplaySource extends DisplayBehaviour { } public Component getName() { - return new TranslatableComponent(id.getNamespace() + ".display_source." + getTranslationKey()); + return Components.translatable(id.getNamespace() + ".display_source." + getTranslationKey()); } public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay, FlapDisplayLayout layout, int lineIndex) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java index 4ce1e54b1..e42a1d85f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java @@ -4,10 +4,10 @@ import java.util.Random; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -23,7 +23,7 @@ public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { if (!(context.getSourceTE() instanceof EnchantmentTableBlockEntity enchantmentTile)) - return ZERO; + return ZERO.copy(); BlockPos pos = context.getSourcePos(); Level level = context.level(); @@ -39,7 +39,7 @@ public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource { int cost = EnchantmentHelper.getEnchantmentCost(random, 2, (int) enchantPower, stack); - return new TextComponent(String.valueOf(cost)); + return Components.literal(String.valueOf(cost)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java index 55b96be2a..a9ed75db8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java @@ -5,10 +5,10 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FluidFormatter; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -38,7 +38,7 @@ public class FluidAmountDisplaySource extends SingleLineDisplaySource { collected += stack.getAmount(); } - return new TextComponent(FluidFormatter.asString(collected, false)); + return Components.literal(FluidFormatter.asString(collected, false)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java index f0ef3d45f..fa8b725c8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java @@ -15,12 +15,12 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FluidFormatter; import com.simibubi.create.foundation.utility.IntAttached; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -63,7 +63,7 @@ public class FluidListDisplaySource extends ValueListDisplaySource { .limit(maxRows) .map(entry -> IntAttached.with( entry.getValue(), - new TranslatableComponent(fluidNames.get(entry.getKey()).getTranslationKey())) + Components.translatable(fluidNames.get(entry.getKey()).getTranslationKey())) ); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java index b74f7827f..599f73ca0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java @@ -5,9 +5,9 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.items.IItemHandler; @@ -18,14 +18,14 @@ public class ItemCountDisplaySource extends NumericSingleLineDisplaySource { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { BlockEntity sourceTE = context.getSourceTE(); if (!(sourceTE instanceof ContentObserverTileEntity cote)) - return ZERO; + return ZERO.copy(); InvManipulationBehaviour invManipulationBehaviour = cote.getBehaviour(InvManipulationBehaviour.TYPE); FilteringBehaviour filteringBehaviour = cote.getBehaviour(FilteringBehaviour.TYPE); IItemHandler handler = invManipulationBehaviour.getInventory(); if (handler == null) - return ZERO; + return ZERO.copy(); int collected = 0; for (int i = 0; i < handler.getSlots(); i++) { @@ -37,7 +37,7 @@ public class ItemCountDisplaySource extends NumericSingleLineDisplaySource { collected += stack.getCount(); } - return new TextComponent(String.valueOf(collected)); + return Components.literal(String.valueOf(collected)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java similarity index 95% rename from src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java rename to src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java index e4e346aa0..72f9300af 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java @@ -12,11 +12,10 @@ import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySource { +public class ItemThroughputDisplaySource extends AccumulatedItemCountDisplaySource { static final int POOL_SIZE = 10; @@ -24,7 +23,7 @@ public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySourc protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { CompoundTag conf = context.sourceConfig(); if (conf.contains("Inactive")) - return new TextComponent("0"); + return ZERO.copy(); double interval = 20 * Math.pow(60, conf.getInt("Interval")); double rate = conf.getFloat("Rate") * interval; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java index e04d40a4a..c9c1e7e73 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java @@ -14,8 +14,8 @@ public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - if (!(context.getSourceTE()instanceof SpeedGaugeTileEntity gaugeTile)) - return ZERO; + if (!(context.getSourceTE() instanceof SpeedGaugeTileEntity gaugeTile)) + return ZERO.copy(); boolean absoluteValue = context.sourceConfig() .getInt("Directional") == 0; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java index 475a63cc8..001d2cd91 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java @@ -2,18 +2,19 @@ package com.simibubi.create.content.logistics.block.display.source; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; +import com.simibubi.create.foundation.utility.Components; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; public abstract class NumericSingleLineDisplaySource extends SingleLineDisplaySource { - protected static final TextComponent ZERO = new TextComponent("0"); - + protected static final Component ZERO = Components.literal("0"); + @Override protected String getFlapDisplayLayoutName(DisplayLinkContext context) { return "Number"; } - + @Override protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) { return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java index 3cf68de45..5d1da0b7b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.SignBlockEntity; @@ -47,11 +47,11 @@ public abstract class PercentOrProgressBarDisplaySource extends NumericSingleLin for (int i = 0; i < emptySpaces; i++) s.append("\u2592"); - return new TextComponent(s.toString()); + return Components.literal(s.toString()); } protected MutableComponent formatNumeric(DisplayLinkContext context, Float currentLevel) { - return new TextComponent(Mth.clamp((int) (currentLevel * 100), 0, 100) + "%"); + return Components.literal(Mth.clamp((int) (currentLevel * 100), 0, 100) + "%"); } @Nullable diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java index 03e0195a8..68ff0e51e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java @@ -2,10 +2,10 @@ package com.simibubi.create.content.logistics.block.display.source; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.api.distmarker.Dist; @@ -20,7 +20,7 @@ public class RedstonePowerDisplaySource extends PercentOrProgressBarDisplaySourc @Override protected MutableComponent formatNumeric(DisplayLinkContext context, Float currentLevel) { - return new TextComponent(String.valueOf((int) (currentLevel * 15))); + return Components.literal(String.valueOf((int) (currentLevel * 15))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java index cafedbba6..70614052c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java @@ -5,12 +5,12 @@ import java.util.stream.Stream; import com.google.common.collect.ImmutableList; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.scores.Objective; @@ -41,7 +41,7 @@ public class ScoreboardDisplaySource extends ValueListDisplaySource { .getPlayerScores(objective) .stream() .limit(maxRows) - .map(score -> IntAttached.with(score.getScore(), new TextComponent(score.getOwner()).copy())) + .map(score -> IntAttached.with(score.getScore(), Components.literal(score.getOwner()).copy())) .sorted(IntAttached.comparator()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java index c557050a0..aaa2a2942 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java @@ -9,11 +9,11 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -51,7 +51,7 @@ public abstract class SingleLineDisplaySource extends DisplaySource { String label = context.sourceConfig() .getString("Label"); if (!label.isEmpty()) - line = new TextComponent(label + " ").append(line); + line = Components.literal(label + " ").append(line); } return ImmutableList.of(line); @@ -64,7 +64,7 @@ public abstract class SingleLineDisplaySource extends DisplaySource { String label = context.sourceConfig() .getString("Label"); if (!label.isEmpty()) - return ImmutableList.of(ImmutableList.of(new TextComponent(label + " "), provideLine(context, stats))); + return ImmutableList.of(ImmutableList.of(Components.literal(label + " "), provideLine(context, stats))); } return super.provideFlapDisplayText(context, stats); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java index 60c5f2c13..5eba86c04 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java @@ -16,24 +16,24 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.station import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class StationSummaryDisplaySource extends DisplaySource { - protected static final MutableComponent UNPREDICTABLE = new TextComponent(" ~ "); + protected static final MutableComponent UNPREDICTABLE = Components.literal(" ~ "); protected static final List EMPTY_ENTRY_4 = - ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE); + ImmutableList.of(WHITESPACE, Components.literal(" . "), WHITESPACE, WHITESPACE); protected static final List EMPTY_ENTRY_5 = - ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE, WHITESPACE); + ImmutableList.of(WHITESPACE, Components.literal(" . "), WHITESPACE, WHITESPACE, WHITESPACE); @Override public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { @@ -67,7 +67,7 @@ public class StationSummaryDisplaySource extends DisplaySource { min++; sec = 0; } - lines.add(min > 0 ? new TextComponent(String.valueOf(min)) : WHITESPACE); + lines.add(min > 0 ? Components.literal(String.valueOf(min)) : WHITESPACE); lines.add(min > 0 ? Lang.translateDirect("display_source.station_summary.minutes") : Lang.translateDirect("display_source.station_summary.seconds", sec)); } @@ -86,7 +86,7 @@ public class StationSummaryDisplaySource extends DisplaySource { platform = platform.replace(string, ""); platform = platform.replace("*", "?"); - lines.add(new TextComponent(platform.trim())); + lines.add(Components.literal(platform.trim())); list.add(lines); }); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java index 86d42f35d..250a65e5c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java @@ -4,9 +4,9 @@ import com.simibubi.create.content.contraptions.components.clock.CuckooClockTile import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class StopWatchDisplaySource extends SingleLineDisplaySource { @@ -32,7 +32,7 @@ public class StopWatchDisplaySource extends SingleLineDisplaySource { int minutes = (diff / 60 / 20) % 60; int seconds = (diff / 20) % 60; - MutableComponent component = new TextComponent((hours == 0 ? "" : (hours < 10 ? " " : "") + hours + ":") + MutableComponent component = Components.literal((hours == 0 ? "" : (hours < 10 ? " " : "") + hours + ":") + (minutes < 10 ? hours == 0 ? " " : "0" : "") + minutes + ":" + (seconds < 10 ? "0" : "") + seconds); return component; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java index d71ef7bbf..2564f67ee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java @@ -6,17 +6,17 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class TimeOfDayDisplaySource extends SingleLineDisplaySource { - public static final MutableComponent EMPTY_TIME = new TextComponent("--:--"); + public static final MutableComponent EMPTY_TIME = Components.literal("--:--"); @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { @@ -49,7 +49,7 @@ public class TimeOfDayDisplaySource extends SingleLineDisplaySource { minutes = Create.RANDOM.nextInt(40) + 60; } - MutableComponent component = new TextComponent( + MutableComponent component = Components.literal( (hours < 10 ? " " : "") + hours + ":" + (minutes < 10 ? "0" : "") + minutes + (c12 ? " " : "")); return c12 ? component.append(suffix) : component; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java index 193067fad..b33c98caa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java @@ -15,12 +15,12 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.LecternBlockEntity; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -63,7 +63,7 @@ public abstract class ValueListDisplaySource extends DisplaySource { current = atIndex; continue; } - current.append(new TextComponent("\n")) + current.append(Components.literal("\n")) .append(atIndex); if ((i + 1) % ENTRIES_PER_PAGE == 0) { condensed.add(current); @@ -99,7 +99,7 @@ public abstract class ValueListDisplaySource extends DisplaySource { : Arrays.asList(name, shortened.getFirst(), shortened.getSecond()); } - MutableComponent formattedNumber = new TextComponent(String.valueOf(number)).append(WHITESPACE); + MutableComponent formattedNumber = Components.literal(String.valueOf(number)).append(WHITESPACE); return valueFirst() ? Arrays.asList(formattedNumber, name) : Arrays.asList(name, formattedNumber); } @@ -137,14 +137,14 @@ public abstract class ValueListDisplaySource extends DisplaySource { private Couple shorten(int number) { if (number >= 1000000) - return Couple.create(new TextComponent(String.valueOf(number / 1000000)), + return Couple.create(Components.literal(String.valueOf(number / 1000000)), Lang.translateDirect("display_source.value_list.million") .append(WHITESPACE)); if (number >= 1000) - return Couple.create(new TextComponent(String.valueOf(number / 1000)), + return Couple.create(Components.literal(String.valueOf(number / 1000)), Lang.translateDirect("display_source.value_list.thousand") .append(WHITESPACE)); - return Couple.create(new TextComponent(String.valueOf(number)), WHITESPACE); + return Couple.create(Components.literal(String.valueOf(number)), WHITESPACE); } protected boolean shortenNumbers(DisplayLinkContext context) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java index 90729a8c7..28afb42ed 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal. import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.DynamicComponent; @@ -16,7 +17,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -82,7 +82,7 @@ public class NixieTubeTileEntity extends SmartTileEntity { public MutableComponent getFullText() { return customText.map(DynamicComponent::get) - .orElse(new TextComponent("" + redstoneStrength)); + .orElse(Components.literal("" + redstoneStrength)); } public void updateRedstoneStrength(int signalStrength) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java index f6b26b01c..c83e45c62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java @@ -10,12 +10,12 @@ import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class StockpileSwitchScreen extends AbstractSimiScreen { @@ -57,7 +57,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .startWithValue(te.getState() ? 1 : 0); offBelow = new ScrollInput(x + 36, y + 40, 102, 18).withRange(0, 100) - .titled(TextComponent.EMPTY.plainCopy()) + .titled(Components.empty()) .calling(state -> { lastModification = 0; offBelow.titled(Lang.translateDirect("gui.stockpile_switch.move_to_upper_at", state)); @@ -69,7 +69,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .setState((int) (te.offWhenBelow * 100)); onAbove = new ScrollInput(x + 36, y + 18, 102, 18).withRange(1, 101) - .titled(TextComponent.EMPTY.plainCopy()) + .titled(Components.empty()) .calling(state -> { lastModification = 0; onAbove.titled(Lang.translateDirect("gui.stockpile_switch.move_to_lower_at", state)); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java index 25ea8591d..e5fb7a377 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.foundation.utility.Lang; @@ -28,7 +29,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.client.gui.ForgeIngameGui; @@ -220,7 +220,7 @@ public class LinkedControllerClientHandler { return; poseStack.pushPose(); - Screen tooltipScreen = new Screen(TextComponent.EMPTY) { + Screen tooltipScreen = new Screen(Components.immutableEmpty()) { }; tooltipScreen.init(mc, width1, height1); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java index 2ab82ce70..eed646d68 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.AllContainerTypes; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; @@ -11,7 +12,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ClickType; @@ -52,7 +52,7 @@ public class AttributeFilterContainer extends AbstractFilterContainer { super.init(inv, contentHolder); ItemStack stack = new ItemStack(Items.NAME_TAG); stack.setHoverName( - new TextComponent("Selected Tags").withStyle(ChatFormatting.RESET, ChatFormatting.BLUE)); + Components.literal("Selected Tags").withStyle(ChatFormatting.RESET, ChatFormatting.BLUE)); ghostInventory.setStackInSlot(1, stack); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java index fb5488ccb..924b38941 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java @@ -15,6 +15,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -22,7 +23,6 @@ import net.minecraft.ChatFormatting; 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.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; @@ -86,9 +86,9 @@ public class AttributeFilterScreen extends AbstractFilterScreen selectedAttributes.add(new TextComponent("- ") + menu.selectedAttributes.forEach(at -> selectedAttributes.add(Components.literal("- ") .append(at.getFirst() .format(at.getSecond())) .withStyle(ChatFormatting.GRAY))); @@ -243,7 +243,7 @@ public class AttributeFilterScreen extends AbstractFilterScreen makeSummary = makeSummary(stack); if (makeSummary.isEmpty()) return; - ItemDescription.add(tooltip, new TextComponent(" ")); + ItemDescription.add(tooltip, Components.literal(" ")); ItemDescription.add(tooltip, makeSummary); } } @@ -92,14 +92,14 @@ public class FilterItem extends Item implements MenuProvider { int count = 0; for (int i = 0; i < filterItems.getSlots(); i++) { if (count > 3) { - list.add(new TextComponent("- ...").withStyle(ChatFormatting.DARK_GRAY)); + list.add(Components.literal("- ...").withStyle(ChatFormatting.DARK_GRAY)); break; } ItemStack filterStack = filterItems.getStackInSlot(i); if (filterStack.isEmpty()) continue; - list.add(new TextComponent("- ").append(filterStack.getHoverName()).withStyle(ChatFormatting.GRAY)); + list.add(Components.literal("- ").append(filterStack.getHoverName()).withStyle(ChatFormatting.GRAY)); count++; } @@ -124,10 +124,10 @@ public class FilterItem extends Item implements MenuProvider { ItemAttribute attribute = ItemAttribute.fromNBT(compound); boolean inverted = compound.getBoolean("Inverted"); if (count > 3) { - list.add(new TextComponent("- ...").withStyle(ChatFormatting.DARK_GRAY)); + list.add(Components.literal("- ...").withStyle(ChatFormatting.DARK_GRAY)); break; } - list.add(new TextComponent("- ").append(attribute.format(inverted))); + list.add(Components.literal("- ").append(attribute.format(inverted))); count++; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java index 9bae5a3e6..bdb5b0b0e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java @@ -8,11 +8,11 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.Indicator; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; public class FilterScreen extends AbstractFilterScreen { @@ -58,8 +58,8 @@ public class FilterScreen extends AbstractFilterScreen { sendOptionUpdate(Option.WHITELIST); }); whitelist.setToolTip(allowN); - blacklistIndicator = new Indicator(x + 18, y + 67, TextComponent.EMPTY); - whitelistIndicator = new Indicator(x + 36, y + 67, TextComponent.EMPTY); + blacklistIndicator = new Indicator(x + 18, y + 67, Components.immutableEmpty()); + whitelistIndicator = new Indicator(x + 36, y + 67, Components.immutableEmpty()); addRenderableWidgets(blacklist, whitelist, blacklistIndicator, whitelistIndicator); respectNBT = new IconButton(x + 60, y + 73, AllIcons.I_RESPECT_NBT); @@ -74,8 +74,8 @@ public class FilterScreen extends AbstractFilterScreen { sendOptionUpdate(Option.IGNORE_DATA); }); ignoreNBT.setToolTip(ignoreDataN); - respectNBTIndicator = new Indicator(x + 60, y + 67, TextComponent.EMPTY); - ignoreNBTIndicator = new Indicator(x + 78, y + 67, TextComponent.EMPTY); + respectNBTIndicator = new Indicator(x + 60, y + 67, Components.immutableEmpty()); + ignoreNBTIndicator = new Indicator(x + 78, y + 67, Components.immutableEmpty()); addRenderableWidgets(respectNBT, ignoreNBT, respectNBTIndicator, ignoreNBTIndicator); handleIndicators(); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java index a5353d6a7..55cef5970 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java @@ -27,7 +27,7 @@ import com.simibubi.create.content.logistics.item.filter.attribute.astralsorcery import com.simibubi.create.foundation.utility.Lang; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -121,7 +121,7 @@ public interface ItemAttribute { } @OnlyIn(value = Dist.CLIENT) - default TranslatableComponent format(boolean inverted) { + default MutableComponent format(boolean inverted) { return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), getTranslationParameters()); } @@ -299,7 +299,7 @@ public interface ItemAttribute { @Override @OnlyIn(value = Dist.CLIENT) - public TranslatableComponent format(boolean inverted) { + public MutableComponent format(boolean inverted) { return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), group.getDisplayName()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java index 7f401883e..d41a6da25 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java @@ -9,6 +9,7 @@ import java.util.Set; import java.util.stream.Collectors; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.resources.language.I18n; import net.minecraft.nbt.CompoundTag; @@ -56,7 +57,7 @@ public class ColorAttribute implements ItemAttribute { colors.addAll(getFireworkStarColors(nbt.getCompound("Explosion"))); } - Arrays.stream(DyeColor.values()).filter(c -> stack.getItem().getRegistryName().getPath().startsWith(c.getName() + "_")).forEach(colors::add); + Arrays.stream(DyeColor.values()).filter(c -> RegisteredObjects.getKeyOrThrow(stack.getItem()).getPath().startsWith(c.getName() + "_")).forEach(colors::add); return colors; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java index 3fb1102ab..c68e1e837 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java @@ -6,9 +6,9 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -43,7 +43,7 @@ public class EnchantAttribute implements ItemAttribute { public Object[] getTranslationParameters() { String parameter = ""; if(enchantment != null) - parameter = new TranslatableComponent(enchantment.getDescriptionId()).getString(); + parameter = Components.translatable(enchantment.getDescriptionId()).getString(); return new Object[] { parameter }; } @@ -51,7 +51,7 @@ public class EnchantAttribute implements ItemAttribute { public void writeNBT(CompoundTag nbt) { if (enchantment == null) return; - ResourceLocation id = ForgeRegistries.ENCHANTMENTS.getKey(enchantment); + ResourceLocation id = enchantment.getRegistryName(); if (id == null) return; nbt.putString("id", id.toString()); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java index 7ba3997e9..866142599 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java @@ -7,9 +7,9 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; @@ -46,7 +46,7 @@ public class FluidContentsAttribute implements ItemAttribute { public Object[] getTranslationParameters() { String parameter = ""; if (fluid != null) - parameter = new TranslatableComponent(fluid.getAttributes().getTranslationKey()).getString(); + parameter = Components.translatable(fluid.getAttributes().getTranslationKey()).getString(); return new Object[] { parameter }; } @@ -54,7 +54,7 @@ public class FluidContentsAttribute implements ItemAttribute { public void writeNBT(CompoundTag nbt) { if (fluid == null) return; - ResourceLocation id = ForgeRegistries.FLUIDS.getKey(fluid); + ResourceLocation id = fluid.getRegistryName(); if (id == null) return; nbt.putString("id", id.toString()); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java index a3891eb43..76f3b351f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -56,7 +56,7 @@ public class AstralSorceryAmuletAttribute implements ItemAttribute { Enchantment enchant = ForgeRegistries.ENCHANTMENTS.getValue(ResourceLocation.tryParse(enchName)); if(enchant != null) { - something = new TranslatableComponent(enchant.getDescriptionId()).getString(); + something = Components.translatable(enchant.getDescriptionId()).getString(); } if(enchType == 1) something = "existing " + something; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java index 6acb2fe4c..ee5a5c1c1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java @@ -4,9 +4,9 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -24,7 +24,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { // Special handling for shifting stars ResourceLocation itemResource = itemStack.getItem().getRegistryName(); - if(itemResource != null && itemResource.toString().contains("shifting_star_")) { + if (itemResource != null && itemResource.toString().contains("shifting_star_")) { constellation = itemResource.toString().replace("shifting_star_", ""); } @@ -38,7 +38,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { // Special handling for shifting stars ResourceLocation itemResource = itemStack.getItem().getRegistryName(); - if(itemResource != null && itemResource.toString().contains("shifting_star_")) { + if (itemResource != null && itemResource.toString().contains("shifting_star_")) { constellation = itemResource.toString().replace("shifting_star_", ""); } @@ -57,7 +57,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation constResource = new ResourceLocation(constellationName); - String something = new TranslatableComponent(String.format("%s.constellation.%s", constResource.getNamespace(), constResource.getPath())).getString(); + String something = Components.translatable(String.format("%s.constellation.%s", constResource.getNamespace(), constResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java index 968d3b812..d33a7e6c5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -46,7 +46,7 @@ public class AstralSorceryCrystalAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation traitResource = new ResourceLocation(traitName); - String something = new TranslatableComponent(String.format("crystal.property.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); + String something = Components.translatable(String.format("crystal.property.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java index 3875b9086..2e8e476fd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -46,7 +46,7 @@ public class AstralSorceryPerkGemAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation traitResource = new ResourceLocation(traitName); - String something = new TranslatableComponent(String.format("perk.attribute.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); + String something = Components.translatable(String.format("perk.attribute.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java index b71df10de..dea2966aa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java @@ -13,6 +13,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.trains.entity.BogeyInstance; import com.simibubi.create.content.logistics.trains.entity.CarriageBogey; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -63,7 +64,7 @@ public interface IBogeyBlock extends IWrenchable { @Override default BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { Block block = state.getBlock(); - int indexOf = BOGEYS.indexOf(block.getRegistryName()); + int indexOf = BOGEYS.indexOf(RegisteredObjects.getKeyOrThrow(block)); if (indexOf == -1) return state; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java index be80158df..c9e2d7220 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.logistics.trains.TrackGraph; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -146,7 +147,7 @@ public class CarriageBogey { public CompoundTag write(DimensionPalette dimensions) { CompoundTag tag = new CompoundTag(); - tag.putString("Type", ((Block) type).getRegistryName() + tag.putString("Type", RegisteredObjects.getKeyOrThrow((Block) type) .toString()); tag.put("Points", points.serializeEach(tp -> tp.write(dimensions))); return tag; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java index b4e0a7fea..5c918cd84 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java @@ -27,6 +27,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.station import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -37,9 +38,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.KeybindComponent; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -592,7 +591,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { GlobalStation currentStation = carriage.train.getCurrentStation(); if (currentStation != null && spaceDown) { sendPrompt(player, Lang.translateDirect("train.arrived_at", - new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); + Components.literal(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); return true; } @@ -604,7 +603,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { if (currentStation != null && targetSpeed != 0) { stationMessage = false; sendPrompt(player, Lang.translateDirect("train.departing_from", - new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); + Components.literal(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); } if (currentStation == null) { @@ -617,8 +616,8 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { double f = (nav.distanceToDestination / navDistanceTotal); int progress = (int) (Mth.clamp(1 - ((1 - f) * (1 - f)), 0, 1) * 30); boolean arrived = progress == 0; - TextComponent whiteComponent = new TextComponent(Strings.repeat("|", progress)); - TextComponent greenComponent = new TextComponent(Strings.repeat("|", 30 - progress)); + MutableComponent whiteComponent = Components.literal(Strings.repeat("|", progress)); + MutableComponent greenComponent = Components.literal(Strings.repeat("|", 30 - progress)); int fromColor = 0x00_FFC244; int toColor = 0x00_529915; @@ -684,14 +683,14 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { private void displayApproachStationMessage(Player player, GlobalStation station) { sendPrompt(player, Lang.translateDirect("contraption.controls.approach_station", - new KeybindComponent("key.jump"), station.name), false); + Components.keybind("key.jump"), station.name), false); stationMessage = true; } private void cleanUpApproachStationMessage(Player player) { if (!stationMessage) return; - player.displayClientMessage(new TextComponent(""), true); + player.displayClientMessage(Components.immutableEmpty(), true); stationMessage = false; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java index fc180a458..479b2699e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.logistics.trains.IBogeyBlock; import com.simibubi.create.foundation.networking.SimplePacketBase; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -84,7 +85,7 @@ public class TrainPacket extends SimplePacketBase { continue; } CarriageBogey bogey = carriage.bogeys.get(first); - buffer.writeResourceLocation(((Block) bogey.type).getRegistryName()); + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow((Block) bogey.type)); } buffer.writeVarInt(carriage.bogeySpacing); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java index ac30cd36b..79b5bb9db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java @@ -3,11 +3,11 @@ package com.simibubi.create.content.logistics.trains.entity; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -130,7 +130,7 @@ public class TrainStatus { } public void displayInformation(String key, boolean itsAGoodThing, Object... args) { - queued.add(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) + queued.add(Components.literal(" - ").withStyle(ChatFormatting.GRAY) .append(Lang.translateDirect("train.status." + key, args) .withStyle(st -> st.withColor(itsAGoodThing ? 0xD5ECC2 : 0xFFD3B4)))); if (queued.size() > 3) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java index 37b7abb9a..355419495 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java @@ -8,6 +8,7 @@ import com.google.gson.JsonElement; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.DynamicComponent; import com.simibubi.create.foundation.utility.NBTHelper; @@ -18,7 +19,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; @@ -145,7 +145,7 @@ public class FlapDisplayTileEntity extends KineticTileEntity { FlapDisplaySection flapDisplaySection = sections.get(0); if (rawComponentText == null) { manualLines[lineIndex] = false; - flapDisplaySection.setText(new TextComponent("")); + flapDisplaySection.setText(Components.immutableEmpty()); notifyUpdate(); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java index 42da0c200..97c7e4f57 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.management.edgePoint.TrackTargetingBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; @@ -19,7 +20,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.saveddata.maps.MapDecoration; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; @@ -40,7 +40,7 @@ public class StationMarker { BlockPos source = NbtUtils.readBlockPos(tag.getCompound("source")); BlockPos target = NbtUtils.readBlockPos(tag.getCompound("target")); Component name = Component.Serializer.fromJson(tag.getString("name")); - if (name == null) name = TextComponent.EMPTY; + if (name == null) name = Components.immutableEmpty(); return new StationMarker(source, target, name); } @@ -54,7 +54,7 @@ public class StationMarker { String name = stationOption.get() .getStation().name; return new StationMarker(pos, TileEntityBehaviour.get(stationOption.get(), TrackTargetingBehaviour.TYPE) - .getPositionForMapMarker(), new TextComponent(name)); + .getPositionForMapMarker(), Components.literal(name)); } public CompoundTag save() { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java index 89da131f3..d646c1d24 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java @@ -16,6 +16,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -23,7 +24,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; public class StationScreen extends AbstractStationScreen { @@ -58,7 +58,7 @@ public class StationScreen extends AbstractStationScreen { onTextChanged = s -> nameBox.x = nameBoxX(s, nameBox); nameBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y + 4, background.width - 20, 10, - new TextComponent(station.name)); + Components.literal(station.name)); nameBox.setBordered(false); nameBox.setMaxLength(25); nameBox.setTextColor(0x442000); @@ -92,7 +92,7 @@ public class StationScreen extends AbstractStationScreen { addRenderableWidget(dropScheduleButton); onTextChanged = s -> trainNameBox.x = nameBoxX(s, trainNameBox); - trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, new TextComponent("")); + trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, Components.immutableEmpty()); trainNameBox.setBordered(false); trainNameBox.setMaxLength(35); trainNameBox.setTextColor(0xC6C6C6); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java index cbf3c891b..f89993b53 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.entity.TrainIconType; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.SimplePacketBase; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; @@ -52,7 +52,7 @@ public class TrainEditPacket extends SimplePacketBase { if (train == null) return; if (!name.isBlank()) - train.name = new TextComponent(name); + train.name = Components.literal(name); train.icon = TrainIconType.byId(iconType); if (sender != null) AllPackets.channel.send(PacketDistributor.ALL.noArg(), new TrainEditReturnPacket(id, name, iconType)); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java index 85c1b0fe8..4858e0974 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java @@ -7,11 +7,11 @@ import javax.annotation.Nullable; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -32,7 +32,7 @@ public interface IScheduleInput { public default List getTitleAs(String type) { ResourceLocation id = getId(); return ImmutableList - .of(new TranslatableComponent(id.getNamespace() + ".schedule." + type + "." + id.getPath())); + .of(Components.translatable(id.getNamespace() + ".schedule." + type + "." + id.getPath())); } public default ItemStack getSecondLineIcon() { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java index dfc6b1f94..f27ea2f9c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java @@ -19,6 +19,7 @@ import com.simibubi.create.content.logistics.trains.management.schedule.destinat import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pair; @@ -26,7 +27,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; public class Schedule { @@ -64,7 +64,7 @@ public class Schedule { return list.stream() .map(Pair::getFirst) .map(rl -> rl.getNamespace() + ".schedule." + langSection + rl.getPath()) - .map(TranslatableComponent::new) + .map(Components::translatable) .toList(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java index 9698773e3..66700cd8e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEn import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -18,7 +19,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -133,8 +133,8 @@ public class ScheduleItem extends Item implements MenuProvider { if (schedule == null || schedule.entries.isEmpty()) return; - MutableComponent caret = new TextComponent("> ").withStyle(ChatFormatting.GRAY); - MutableComponent arrow = new TextComponent("-> ").withStyle(ChatFormatting.GRAY); + MutableComponent caret = Components.literal("> ").withStyle(ChatFormatting.GRAY); + MutableComponent arrow = Components.literal("-> ").withStyle(ChatFormatting.GRAY); List entries = schedule.entries; for (int i = 0; i < entries.size(); i++) { @@ -145,7 +145,7 @@ public class ScheduleItem extends Item implements MenuProvider { ChatFormatting format = current ? ChatFormatting.YELLOW : ChatFormatting.GOLD; MutableComponent prefix = current ? arrow : caret; tooltip.add(prefix.copy() - .append(new TextComponent(destination.getFilter()).withStyle(format))); + .append(Components.literal(destination.getFilter()).withStyle(format))); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java index 476d65322..6df3d0411 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java @@ -17,12 +17,12 @@ import com.simibubi.create.content.logistics.trains.management.schedule.destinat import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -371,7 +371,7 @@ public class ScheduleRuntime { int size = schedule.entries.size(); if (index >= size) { if (!schedule.cyclic) - return new TrainDeparturePrediction(train, time, new TextComponent(" "), destination); + return new TrainDeparturePrediction(train, time, Components.literal(" "), destination); index %= size; } @@ -389,7 +389,7 @@ public class ScheduleRuntime { } } - return new TrainDeparturePrediction(train, time, new TextComponent(text), destination); + return new TrainDeparturePrediction(train, time, Components.literal(text), destination); } public CompoundTag write() { @@ -448,12 +448,12 @@ public class ScheduleRuntime { public MutableComponent getWaitingStatus(Level level) { List> conditions = schedule.entries.get(currentEntry).conditions; if (conditions.isEmpty() || conditionProgress.isEmpty() || conditionContext.isEmpty()) - return TextComponent.EMPTY.copy(); + return Components.empty(); List list = conditions.get(0); int progress = conditionProgress.get(0); if (progress >= list.size()) - return TextComponent.EMPTY.copy(); + return Components.empty(); CompoundTag tag = conditionContext.get(0); ScheduleWaitCondition condition = list.get(progress); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java index f1e8a25d3..8f9589793 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java @@ -41,6 +41,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator.State; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -55,7 +56,6 @@ import net.minecraft.client.gui.components.Widget; import net.minecraft.client.renderer.Rect2i; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Inventory; @@ -116,7 +116,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen minecraft.player.closeContainer()); addRenderableWidget(confirmButton); - cyclicIndicator = new Indicator(leftPos + 21, topPos + 196, TextComponent.EMPTY); + cyclicIndicator = new Indicator(leftPos + 21, topPos + 196, Components.immutableEmpty()); cyclicIndicator.state = schedule.cyclic ? State.ON : State.OFF; addRenderableWidget(cyclicIndicator); @@ -171,7 +171,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen getSummary() { - return Pair.of(getIcon(), new TextComponent(getOperator().formatted + " " + getThreshold()).append(getUnit())); + return Pair.of(getIcon(), Components.literal(getOperator().formatted + " " + getThreshold()).append(getUnit())); } @Override @@ -119,7 +119,7 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio builder.addSelectionScrollInput(0, 24, (i, l) -> { i.forOptions(Ops.translatedOptions()) .titled(Lang.translateDirect("schedule.condition.threshold.train_holds")) - .format(state -> new TextComponent(" " + Ops.values()[state].formatted)); + .format(state -> Components.literal(" " + Ops.values()[state].formatted)); }, "Operator"); builder.addIntegerTextInput(29, 41, (e, t) -> { }, "Threshold"); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java index db595a20d..1b8405070 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.content.logistics.trains.entity.Carriage; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; @@ -16,7 +17,6 @@ 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.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -31,7 +31,7 @@ public class FluidThresholdCondition extends CargoThresholdCondition { @Override protected Component getUnit() { - return new TextComponent("b"); + return Components.literal("b"); } @Override @@ -135,7 +135,7 @@ public class FluidThresholdCondition extends CargoThresholdCondition { public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { int lastDisplaySnapshot = getLastDisplaySnapshot(tag); if (lastDisplaySnapshot == -1) - return TextComponent.EMPTY.copy(); + return Components.empty(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, Math.max(0, getThreshold() + offset), Lang.translateDirect("schedule.condition.threshold.buckets")); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java index d33b488e2..8b05e24d4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java @@ -8,13 +8,13 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.content.logistics.trains.entity.Carriage; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; 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.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -27,7 +27,7 @@ public class ItemThresholdCondition extends CargoThresholdCondition { @Override protected Component getUnit() { - return new TextComponent(inStacks() ? "\u25A4" : ""); + return Components.literal(inStacks() ? "\u25A4" : ""); } @Override @@ -126,7 +126,7 @@ public class ItemThresholdCondition extends CargoThresholdCondition { public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { int lastDisplaySnapshot = getLastDisplaySnapshot(tag); if (lastDisplaySnapshot == -1) - return TextComponent.EMPTY.copy(); + return Components.empty(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, Math.max(0, getThreshold() + offset), diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java index bc2a90ee0..b94d7c051 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -14,7 +15,6 @@ import net.minecraft.ChatFormatting; 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.resources.ResourceLocation; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -50,7 +50,7 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { int target = getTarget(); return ImmutableList.of(Lang.translateDirect("schedule.condition.player_count.seated", Lang.translateDirect("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), - new TextComponent("" + target).withStyle(ChatFormatting.DARK_AQUA)))); + Components.literal("" + target).withStyle(ChatFormatting.DARK_AQUA)))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java index 97e809927..9bb8f4190 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java @@ -8,6 +8,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -17,7 +18,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -54,13 +54,13 @@ public class RedstoneLinkCondition extends ScheduleWaitCondition { public List getTitleAs(String type) { return ImmutableList.of( Lang.translateDirect("schedule.condition.redstone_link.frequency_" + (lowActivation() ? "unpowered" : "powered")), - new TextComponent(" #1 ").withStyle(ChatFormatting.GRAY) + Components.literal(" #1 ").withStyle(ChatFormatting.GRAY) .append(freq.getFirst() .getStack() .getHoverName() .copy() .withStyle(ChatFormatting.DARK_AQUA)), - new TextComponent(" #2 ").withStyle(ChatFormatting.GRAY) + Components.literal(" #2 ").withStyle(ChatFormatting.GRAY) .append(freq.getSecond() .getStack() .getHoverName() diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java index 1664d7f6d..9d0a10b0a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -20,7 +21,6 @@ import net.minecraft.client.gui.GuiComponent; 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.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -82,7 +82,7 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { public List getTitleAs(String type) { return ImmutableList.of(Lang.translateDirect("schedule.condition.time_of_day.scheduled"), getDigitalDisplay(intData("Hour"), intData("Minute"), false).withStyle(ChatFormatting.DARK_AQUA) - .append(new TextComponent(" -> ").withStyle(ChatFormatting.DARK_GRAY)) + .append(Components.literal(" -> ").withStyle(ChatFormatting.DARK_GRAY)) .append(Lang .translatedOptions("schedule.condition.time_of_day.rotation", "every_24", "every_12", "every_6", "every_4", "every_3", "every_2", "every_1", "every_0_45", "every_0_30", "every_0_15") diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java index 8ea96afbc..489d24e51 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java @@ -5,14 +5,13 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; 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.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; @@ -60,14 +59,14 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { protected Component formatTime(boolean compact) { if (compact) - return new TextComponent(getValue() + getUnit().suffix); - return new TextComponent(getValue() + " ").append(Lang.translateDirect(getUnit().key)); + return Components.literal(getValue() + getUnit().suffix); + return Components.literal(getValue() + " ").append(Lang.translateDirect(getUnit().key)); } @Override public List getTitleAs(String type) { return ImmutableList.of( - new TranslatableComponent(getId().getNamespace() + ".schedule." + type + "." + getId().getPath()), + Components.translatable(getId().getNamespace() + ".schedule." + type + "." + getId().getPath()), Lang.translateDirect("schedule.condition.for_x_time", formatTime(false)) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -117,7 +116,7 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { String key = "generic." + (showInMinutes ? num == 1 ? "daytime.minute" : "unit.minutes" : num == 1 ? "daytime.second" : "unit.seconds"); return Lang.translateDirect("schedule.condition." + getId().getPath() + ".status", - new TextComponent(num + " ").append(Lang.translateDirect(key))); + Components.literal(num + " ").append(Lang.translateDirect(key))); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java index 75fa8801a..36d71f3d3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java @@ -6,12 +6,13 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -29,8 +30,8 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { return Pair.of(icon(), formatted()); } - private TextComponent formatted() { - return new TextComponent(intData("Value") + "%"); + private MutableComponent formatted() { + return Components.literal(intData("Value") + "%"); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java index 57c1c2f42..92419fc59 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java @@ -4,12 +4,12 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -18,7 +18,7 @@ public class ChangeTitleInstruction extends TextScheduleInstruction { @Override public Pair getSummary() { - return Pair.of(icon(), new TextComponent(getLabelText())); + return Pair.of(icon(), Components.literal(getLabelText())); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java index 400852fbd..d3b15cd41 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java @@ -7,13 +7,13 @@ import org.apache.commons.lang3.StringUtils; import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -23,7 +23,7 @@ public class DestinationInstruction extends TextScheduleInstruction { @Override public Pair getSummary() { - return Pair.of(AllBlocks.TRACK_STATION.asStack(), new TextComponent(getLabelText())); + return Pair.of(AllBlocks.TRACK_STATION.asStack(), Components.literal(getLabelText())); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java index b93019869..42abcbf11 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java @@ -4,12 +4,12 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -22,7 +22,7 @@ public abstract class TextScheduleInstruction extends ScheduleInstruction { @Override public List getTitleAs(String type) { return ImmutableList.of(Lang.translateDirect("schedule." + type + "." + getId().getPath() + ".summary") - .withStyle(ChatFormatting.GOLD), Lang.translateDirect("generic.in_quotes", new TextComponent(getLabelText()))); + .withStyle(ChatFormatting.GOLD), Lang.translateDirect("generic.in_quotes", Components.literal(getLabelText()))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index c4b2acb68..55dd45c59 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -45,6 +45,7 @@ import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandl import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.BlockFace; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -58,7 +59,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; @@ -287,12 +287,12 @@ public class TrackBlock extends Block Player player = level.getNearestPlayer(pos.getX(), pos.getY(), pos.getZ(), 10, Predicates.alwaysTrue()); if (player == null) return; - player.displayClientMessage(new TextComponent(" ").append(Lang.translateDirect("portal_track.failed")) + player.displayClientMessage(Components.literal(" ").append(Lang.translateDirect("portal_track.failed")) .withStyle(ChatFormatting.GOLD), false); MutableComponent component = failPos != null ? Lang.translateDirect("portal_track." + fail, failPos.getX(), failPos.getY(), failPos.getZ()) : Lang.translateDirect("portal_track." + fail); - player.displayClientMessage(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) + player.displayClientMessage(Components.literal(" - ").withStyle(ChatFormatting.GRAY) .append(component.withStyle(st -> st.withColor(0xFFD3B4))), false); } diff --git a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java index 5ed770590..226d1b3b2 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java @@ -18,13 +18,13 @@ import com.simibubi.create.Create; import com.simibubi.create.content.schematics.packet.SchematicUploadPacket; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -86,8 +86,8 @@ public class ClientSchematicLoader { if (size > maxSize * 1000) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) { - player.sendMessage(Lang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), player.getUUID()); - player.sendMessage(Lang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), player.getUUID()); + player.displayClientMessage(Lang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), false); + player.displayClientMessage(Lang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), false); } return false; } @@ -137,7 +137,7 @@ public class ClientSchematicLoader { if (Files.isDirectory(path)) return; - availableSchematics.add(new TextComponent(path.getFileName().toString())); + availableSchematics.add(Components.literal(path.getFileName().toString())); }); } catch (NoSuchFileException e) { // No Schematics created yet diff --git a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java index 8c4fd1ec8..d4462ca78 100644 --- a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java +++ b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java @@ -7,6 +7,7 @@ import java.util.Locale; import com.google.common.collect.Sets; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -18,8 +19,6 @@ import net.minecraft.nbt.StringTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -80,7 +79,7 @@ public class MaterialChecklist { MutableComponent textComponent; if (blocksNotLoaded) { - textComponent = new TextComponent("\n" + ChatFormatting.RED); + textComponent = Components.literal("\n" + ChatFormatting.RED); textComponent = textComponent.append(Lang.translateDirect("materialChecklist.blocksNotLoaded")); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); } @@ -95,7 +94,7 @@ public class MaterialChecklist { return name1.compareTo(name2); }); - textComponent = new TextComponent(""); + textComponent = Components.empty(); List completed = new ArrayList<>(); for (Item item : keys) { int amount = getRequiredAmount(item); @@ -109,9 +108,9 @@ public class MaterialChecklist { if (itemsWritten == MAX_ENTRIES_PER_PAGE) { itemsWritten = 0; - textComponent.append(new TextComponent("\n >>>").withStyle(ChatFormatting.BLUE)); + textComponent.append(Components.literal("\n >>>").withStyle(ChatFormatting.BLUE)); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); - textComponent = new TextComponent(""); + textComponent = Components.empty(); } itemsWritten++; @@ -121,9 +120,9 @@ public class MaterialChecklist { for (Item item : completed) { if (itemsWritten == MAX_ENTRIES_PER_PAGE) { itemsWritten = 0; - textComponent.append(new TextComponent("\n >>>").withStyle(ChatFormatting.DARK_GREEN)); + textComponent.append(Components.literal("\n >>>").withStyle(ChatFormatting.DARK_GREEN)); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); - textComponent = new TextComponent(""); + textComponent = Components.empty(); } itemsWritten++; @@ -155,12 +154,12 @@ public class MaterialChecklist { private Component entry(ItemStack item, int amount, boolean unfinished) { int stacks = amount / 64; int remainder = amount % 64; - MutableComponent tc = new TranslatableComponent(item.getDescriptionId()); + MutableComponent tc = Components.translatable(item.getDescriptionId()); if (!unfinished) tc.append(" \u2714"); tc.withStyle(unfinished ? ChatFormatting.BLUE : ChatFormatting.DARK_GREEN); - return tc.append(new TextComponent("\n" + " x" + amount).withStyle(ChatFormatting.BLACK)) - .append(new TextComponent(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); + return tc.append(Components.literal("\n" + " x" + amount).withStyle(ChatFormatting.BLACK)) + .append(Components.literal(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java index 96c1c1479..ffee13229 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java @@ -21,13 +21,14 @@ import com.simibubi.create.content.schematics.item.SchematicAndQuillItem; import com.simibubi.create.content.schematics.item.SchematicItem; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CSchematics; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.level.Level; @@ -165,9 +166,9 @@ public class ServerSchematicLoader { if (size > maxFileSize * 1000) { player.sendMessage(Lang.translateDirect("schematics.uploadTooLarge") - .append(new TextComponent(" (" + size / 1000 + " KB).")), player.getUUID()); + .append(Components.literal(" (" + size / 1000 + " KB).")), Util.NIL_UUID); player.sendMessage(Lang.translateDirect("schematics.maxAllowedSize") - .append(new TextComponent(" " + maxFileSize + " KB")), player.getUUID()); + .append(Components.literal(" " + maxFileSize + " KB")), Util.NIL_UUID); return false; } return true; diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java index 525cc369a..055370ab1 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java @@ -20,12 +20,12 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.Util; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; @@ -73,8 +73,8 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen availableSchematics1 = schematicSender.getAvailableSchematics(); Component schematic = availableSchematics1.get(schematicsArea.getState()); - schematicSender.startNewUpload(schematic.getContents()); + schematicSender.startNewUpload(schematic.getString()); } }); @@ -118,7 +118,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen { sendOptionUpdate(Option.PLAY, true); }); - playIndicator = new Indicator(x + 75, y + 79, TextComponent.EMPTY); + playIndicator = new Indicator(x + 75, y + 79, Components.immutableEmpty()); pauseButton = new IconButton(x + 93, y + 86, AllIcons.I_PAUSE); pauseButton.withCallback(() -> { sendOptionUpdate(Option.PAUSE, true); }); - pauseIndicator = new Indicator(x + 93, y + 79, TextComponent.EMPTY); + pauseIndicator = new Indicator(x + 93, y + 79, Components.immutableEmpty()); resetButton = new IconButton(x + 111, y + 86, AllIcons.I_STOP); resetButton.withCallback(() -> { sendOptionUpdate(Option.STOP, true); }); - resetIndicator = new Indicator(x + 111, y + 79, TextComponent.EMPTY); + resetIndicator = new Indicator(x + 111, y + 79, Components.immutableEmpty()); resetIndicator.state = State.RED; addRenderableWidgets(playButton, playIndicator, pauseButton, pauseIndicator, resetButton, resetIndicator); @@ -122,7 +122,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen { @@ -170,7 +170,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tools, Consumer callback) { - super(new TextComponent("Tool Selection")); + super(Components.literal("Tool Selection")); this.minecraft = Minecraft.getInstance(); this.tools = tools; this.callback = callback; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java index 9b6d9ae28..507f9565d 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; public enum Tools { @@ -31,7 +31,7 @@ public enum Tools { return tool; } - public TranslatableComponent getDisplayName() { + public MutableComponent getDisplayName() { return Lang.translateDirect("schematic.tool." + Lang.asId(name())); } diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java index e773b1322..fe5160009 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java @@ -5,6 +5,7 @@ import java.util.Iterator; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -26,9 +27,9 @@ public class SchematicAndQuillItem extends Item { } public static void replaceStructureVoidWithAir(CompoundTag nbt) { - String air = Blocks.AIR.getRegistryName() + String air = RegisteredObjects.getKeyOrThrow(Blocks.AIR) .toString(); - String structureVoid = Blocks.STRUCTURE_VOID.getRegistryName() + String structureVoid = RegisteredObjects.getKeyOrThrow(Blocks.STRUCTURE_VOID) .toString(); NBTHelper.iterateCompoundList(nbt.getList("palette", 10), c -> { diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java index 78c73a66d..83eb45628 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java @@ -20,6 +20,7 @@ import com.simibubi.create.content.schematics.SchematicProcessor; import com.simibubi.create.content.schematics.client.SchematicEditScreen; import com.simibubi.create.content.schematics.filtering.SchematicInstances; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; @@ -31,7 +32,6 @@ import net.minecraft.nbt.NbtAccounter; import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -84,7 +84,7 @@ public class SchematicItem extends Item { if (stack.hasTag()) { if (stack.getTag() .contains("File")) - tooltip.add(new TextComponent(ChatFormatting.GOLD + stack.getTag() + tooltip.add(Components.literal(ChatFormatting.GOLD + stack.getTag() .getString("File"))); } else { tooltip.add(Lang.translateDirect("schematic.invalid").withStyle(ChatFormatting.RED)); diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index bf43cd997..8ff0941e4 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -62,6 +62,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.CameraAngleAnimationService; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; @@ -72,7 +73,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -274,7 +274,7 @@ public class ClientEvents { List kineticStats = ItemDescription.getKineticStats(item.getBlock()); if (!kineticStats.isEmpty()) { event.getToolTip() - .add(new TextComponent("")); + .add(Components.immutableEmpty()); event.getToolTip() .addAll(kineticStats); } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java index 10f37ab4d..29ecb546a 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java @@ -5,6 +5,7 @@ import java.util.function.UnaryOperator; import com.google.gson.JsonObject; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.advancements.Advancement; @@ -16,7 +17,6 @@ import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.MinMaxBounds; import net.minecraft.advancements.critereon.NbtPredicate; import net.minecraft.advancements.critereon.PlacedBlockTrigger; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.TagKey; @@ -54,8 +54,8 @@ public class CreateAdvancement { builder.addCriterion("0", builtinTrigger.instance()); } - builder.display(t.icon, new TranslatableComponent(titleKey()), - new TranslatableComponent(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), + builder.display(t.icon, Components.translatable(titleKey()), + Components.translatable(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), id.equals("root") ? BACKGROUND : null, t.type.frame, t.type.toast, t.type.announce, t.type.hide); if (t.type == TaskType.SECRET) diff --git a/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java b/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java index 6d2e5f4ff..b1592abd6 100644 --- a/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java +++ b/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java @@ -6,6 +6,7 @@ import java.util.Map; import javax.annotation.Nullable; import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -25,12 +26,12 @@ public class BlockStressValues { @Nullable public static IStressValueProvider getProvider(Block block) { - return getProvider(block.getRegistryName() + return getProvider(RegisteredObjects.getKeyOrThrow(block) .getNamespace()); } public static double getImpact(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.getImpact(block); @@ -43,7 +44,7 @@ public class BlockStressValues { } public static double getCapacity(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.getCapacity(block); @@ -56,7 +57,7 @@ public class BlockStressValues { } public static boolean hasImpact(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.hasImpact(block); @@ -65,7 +66,7 @@ public class BlockStressValues { } public static boolean hasCapacity(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.hasCapacity(block); diff --git a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java index b266d1bd0..46cb8558e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java +++ b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.ArrayUtils; import com.simibubi.create.AllTags; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.providers.DataGenContext; @@ -226,7 +227,7 @@ public class CopperBlockSet { public void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, CopperBlockSet blocks, WeatherState state, boolean waxed) { Block block = ctx.get(); - String path = block.getRegistryName() + String path = RegisteredObjects.getKeyOrThrow(block) .getPath(); String baseLoc = ModelProvider.BLOCK_FOLDER + "/" + blocks.generalDirectory + getWeatherStatePrefix(state); diff --git a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java index ac6040874..2186c2676 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java +++ b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Set; import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.resources.ResourceLocation; @@ -21,7 +22,7 @@ public class ItemUseOverrides { private static final Set OVERRIDES = new HashSet<>(); public static void addBlock(Block block) { - OVERRIDES.add(block.getRegistryName()); + OVERRIDES.add(RegisteredObjects.getKeyOrThrow(block)); } @SubscribeEvent @@ -31,8 +32,7 @@ public class ItemUseOverrides { BlockState state = event.getWorld() .getBlockState(event.getPos()); - ResourceLocation id = state.getBlock() - .getRegistryName(); + ResourceLocation id = RegisteredObjects.getKeyOrThrow(state.getBlock()); if (!OVERRIDES.contains(id)) return; diff --git a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java index 6f8f0cda5..8dc43b692 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java @@ -1,58 +1,55 @@ package com.simibubi.create.foundation.block.render; -import java.util.ArrayList; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; public class CustomBlockModels { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Map> finalModelFunc = new IdentityHashMap<>(); - public CustomBlockModels() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation block, NonNullFunction func) { + modelFuncs.put(block, func); } public void forEach(NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFunc.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFunc.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> { - Block key = p.getKey() - .get(); - - NonNullFunction existingModel = customModels.get(key); - if (existingModel != null) { - customModels.put(key, p.getValue() - .andThen(existingModel)); + finalModelFunc.clear(); + modelFuncs.asMap().forEach((location, funcList) -> { + Block block = ForgeRegistries.BLOCKS.getValue(location); + if (block == null) { return; } - - customModels.put(key, p.getValue()); + + NonNullFunction finalFunc = null; + for (NonNullFunction func : funcList) { + if (finalFunc == null) { + finalFunc = func; + } else { + finalFunc = finalFunc.andThen(func); + } + } + + finalModelFunc.put(block, finalFunc); }); } diff --git a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java index 34a47169c..f000634db 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; @@ -18,7 +18,7 @@ public class ClearBufferCacheCommand { .executes(ctx -> { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClearBufferCacheCommand::execute); ctx.getSource() - .sendSuccess(new TextComponent("Cleared rendering buffers."), true); + .sendSuccess(Components.literal("Cleared rendering buffers."), true); return 1; }); } diff --git a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java index 11b68e60e..d07b9f888 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java @@ -8,14 +8,13 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Clearable; import net.minecraft.world.level.block.Blocks; @@ -30,7 +29,7 @@ import net.minecraft.world.phys.Vec3; public class CloneCommand { private static final Dynamic2CommandExceptionType CLONE_TOO_BIG_EXCEPTION = new Dynamic2CommandExceptionType( - (arg1, arg2) -> new TranslatableComponent("commands.clone.toobig", arg1, arg2)); + (arg1, arg2) -> Components.translatable("commands.clone.toobig", arg1, arg2)); public static ArgumentBuilder register() { return Commands.literal("clone") @@ -47,7 +46,7 @@ public class CloneCommand { BlockPosArgument.getLoadedBlockPos(ctx, "destination"), true))))) .executes(ctx -> { ctx.getSource() - .sendSuccess(new TextComponent( + .sendSuccess(Components.literal( "Clones all blocks as well as super glue from the specified area to the target destination"), true); @@ -78,9 +77,9 @@ public class CloneCommand { int gluePastes = cloneGlue(sourceArea, world, diffToTarget); if (cloneBlocks) - source.sendSuccess(new TextComponent("Successfully cloned " + blockPastes + " Blocks"), true); + source.sendSuccess(Components.literal("Successfully cloned " + blockPastes + " Blocks"), true); - source.sendSuccess(new TextComponent("Successfully applied glue " + gluePastes + " times"), true); + source.sendSuccess(Components.literal("Successfully applied glue " + gluePastes + " times"), true); return blockPastes + gluePastes; } diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java index a7abc0456..bdbc0cfcd 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java @@ -6,10 +6,10 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.Create; import com.simibubi.create.foundation.config.ui.ConfigHelper; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.network.PacketDistributor; @@ -55,7 +55,7 @@ public class ConfigCommand { try { configPath = ConfigHelper.ConfigPath.parse(path); } catch (IllegalArgumentException e) { - ctx.getSource().sendFailure(new TextComponent(e.getMessage())); + ctx.getSource().sendFailure(Components.literal(e.getMessage())); return 0; } @@ -71,13 +71,13 @@ public class ConfigCommand { try { ConfigHelper.setConfigValue(configPath, value); - ctx.getSource().sendSuccess(new TextComponent("Great Success!"), false); + ctx.getSource().sendSuccess(Components.literal("Great Success!"), false); return Command.SINGLE_SUCCESS; } catch (ConfigHelper.InvalidValueException e) { - ctx.getSource().sendFailure(new TextComponent("Config could not be set the the specified value!")); + ctx.getSource().sendFailure(Components.literal("Config could not be set the the specified value!")); return 0; } catch (Exception e) { - ctx.getSource().sendFailure(new TextComponent("Something went wrong while trying to set config value. Check the server logs for more information")); + ctx.getSource().sendFailure(Components.literal("Something went wrong while trying to set config value. Check the server logs for more information")); Create.LOGGER.warn("Exception during server-side config value set:", e); return 0; } diff --git a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java b/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java index acb60d295..2a4d282e8 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java @@ -12,12 +12,12 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.vehicle.AbstractMinecart; @@ -26,11 +26,11 @@ import net.minecraftforge.common.util.LazyOptional; public class CouplingCommand { public static final SimpleCommandExceptionType ONLY_MINECARTS_ALLOWED = - new SimpleCommandExceptionType(new TextComponent("Only Minecarts can be coupled")); + new SimpleCommandExceptionType(Components.literal("Only Minecarts can be coupled")); public static final SimpleCommandExceptionType SAME_DIMENSION = - new SimpleCommandExceptionType(new TextComponent("Minecarts have to be in the same Dimension")); + new SimpleCommandExceptionType(Components.literal("Minecarts have to be in the same Dimension")); public static final DynamicCommandExceptionType TWO_CARTS = - new DynamicCommandExceptionType(a -> new TextComponent( + new DynamicCommandExceptionType(a -> Components.literal( "Your selector targeted " + a + " entities. You can only couple 2 Minecarts at a time.")); public static ArgumentBuilder register() { @@ -105,7 +105,7 @@ public class CouplingCommand { cart1.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); if (!cart1Capability.isPresent()) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -115,7 +115,7 @@ public class CouplingCommand { + (cart1Controller.isLeadingCoupling() ? 1 : 0); if (cart1Couplings == 0) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -138,7 +138,7 @@ public class CouplingCommand { } ctx.getSource() - .sendSuccess(new TextComponent("The specified Carts are not coupled"), true); + .sendSuccess(Components.literal("The specified Carts are not coupled"), true); return 0; })))) @@ -153,7 +153,7 @@ public class CouplingCommand { cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); if (!capability.isPresent()) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -163,7 +163,7 @@ public class CouplingCommand { (controller.isConnectedToCoupling() ? 1 : 0) + (controller.isLeadingCoupling() ? 1 : 0); if (couplings == 0) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -171,7 +171,7 @@ public class CouplingCommand { ctx.getSource() .sendSuccess( - new TextComponent("Removed " + couplings + " couplings from the Minecart"), true); + Components.literal("Removed " + couplings + " couplings from the Minecart"), true); return couplings; }))); diff --git a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java index d51655d52..64139ca20 100644 --- a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePoi import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalBoundary; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.GlobalStation; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleRuntime; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; @@ -22,7 +23,6 @@ import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.HoverEvent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; @@ -36,7 +36,7 @@ public class DumpRailwaysCommand { .executes(ctx -> { CommandSourceStack source = ctx.getSource(); fillReport(source.getLevel(), source.getPosition(), - (s, f) -> source.sendSuccess(new TextComponent(s).withStyle(st -> st.withColor(f)), false), + (s, f) -> source.sendSuccess(Components.literal(s).withStyle(st -> st.withColor(f)), false), (c) -> source.sendSuccess(c, false)); return 1; }); @@ -141,11 +141,11 @@ public class DumpRailwaysCommand { } private static Component createDeleteButton(Train train) { - return ComponentUtils.wrapInSquareBrackets((new TextComponent("Remove")).withStyle((p_180514_) -> { + return ComponentUtils.wrapInSquareBrackets((Components.literal("Remove")).withStyle((p_180514_) -> { return p_180514_.withColor(0xFFAD60) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/c killTrain " + train.id.toString())) .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new TextComponent("Click to remove ").append(train.name))) + Components.literal("Click to remove ").append(train.name))) .withInsertion("/c killTrain " + train.id.toString()); })); } diff --git a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java index ceca34925..326fe3a71 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.PacketDistributor; @@ -21,7 +21,7 @@ public class FixLightingCommand { ctx.getSource() .sendSuccess( - new TextComponent("Forge's experimental block rendering pipeline is now enabled."), true); + Components.literal("Forge's experimental block rendering pipeline is now enabled."), true); return 1; }); diff --git a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java index 0f6bf0e27..288ef50aa 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java @@ -4,11 +4,11 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.FloatArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.context.CommandContext; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket; import net.minecraft.server.level.ServerPlayer; @@ -38,7 +38,7 @@ public class FlySpeedCommand { player.connection.send(packet); ctx.getSource() - .sendSuccess(new TextComponent("Temporarily set " + player.getName() + .sendSuccess(Components.literal("Temporarily set " + player.getName() .getString() + "'s Flying Speed to: " + speed), true); return Command.SINGLE_SUCCESS; diff --git a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java b/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java index 496885d84..605c5782e 100644 --- a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java @@ -7,13 +7,13 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; @@ -60,7 +60,7 @@ public class HighlightCommand { private static void sendMissMessage(CommandSourceStack source) { source.sendSuccess( - new TextComponent("Try looking at a Block that has failed to assemble a Contraption and try again."), + Components.literal("Try looking at a Block that has failed to assemble a Contraption and try again."), true); } @@ -94,7 +94,7 @@ public class HighlightCommand { } if (!exception.hasPosition()) { - source.sendSuccess(new TextComponent("Can't highlight a specific position for this issue"), true); + source.sendSuccess(Components.literal("Can't highlight a specific position for this issue"), true); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java index 171a5a6ba..1486be151 100644 --- a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java @@ -46,12 +46,12 @@ public class KillTPSCommand { return 1; }) .then(Commands.argument(Lang.translateDirect("command.killTPSCommand.argument.tickTime") - .getContents(), IntegerArgumentType.integer(1)) + .getString(), IntegerArgumentType.integer(1)) .executes(ctx -> { // killtps start tickTime int tickTime = IntegerArgumentType.getInteger(ctx, Lang.translateDirect("command.killTPSCommand.argument.tickTime") - .getContents()); + .getString()); Create.LAGGER.setTickTime(tickTime); Create.LAGGER.setLagging(true); ctx.getSource() diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java index c2194446c..62303acca 100644 --- a/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java @@ -5,11 +5,11 @@ import java.util.UUID; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.entity.Train; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.UuidArgument; -import net.minecraft.network.chat.TextComponent; public class KillTrainCommand { @@ -27,13 +27,13 @@ public class KillTrainCommand { private static void run(CommandSourceStack source, UUID argument) { Train train = Create.RAILWAYS.trains.get(argument); if (train == null) { - source.sendFailure(new TextComponent("No Train with id " + argument.toString() + source.sendFailure(Components.literal("No Train with id " + argument.toString() .substring(0, 5) + "[...] was found")); return; } train.invalid = true; - source.sendSuccess(new TextComponent("Train '").append(train.name) + source.sendSuccess(Components.literal("Train '").append(train.name) .append("' removed successfully"), true); } diff --git a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java index 384fc6c41..e17be1cf2 100644 --- a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; @@ -26,7 +26,7 @@ public class OverlayConfigCommand { new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayReset.name(), ""))); ctx.getSource() - .sendSuccess(new TextComponent("reset overlay offset"), true); + .sendSuccess(Components.literal("reset overlay offset"), true); return 1; }) @@ -40,7 +40,7 @@ public class OverlayConfigCommand { new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayScreen.name(), ""))); ctx.getSource() - .sendSuccess(new TextComponent("window opened"), true); + .sendSuccess(Components.literal("window opened"), true); return 1; }); diff --git a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java b/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java index bbb8ce46b..53f1292a8 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java @@ -4,12 +4,12 @@ import org.apache.commons.lang3.mutable.MutableInt; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.block.CommandBlock; @@ -59,10 +59,10 @@ public class ReplaceInCommandBlocksCommand { }); int intValue = blocks.intValue(); if (intValue == 0) { - source.sendSuccess(new TextComponent("Couldn't find \"" + toReplace + "\" anywhere."), true); + source.sendSuccess(Components.literal("Couldn't find \"" + toReplace + "\" anywhere."), true); return; } - source.sendSuccess(new TextComponent("Replaced occurrences in " + intValue + " blocks."), true); + source.sendSuccess(Components.literal("Replaced occurrences in " + intValue + " blocks."), true); } } diff --git a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java index 63036edda..a92f177a2 100644 --- a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java +++ b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java @@ -18,15 +18,14 @@ import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.ui.PonderIndexScreen; import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.CameraAngleAnimationService; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -87,7 +86,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { configPath = ConfigHelper.ConfigPath.parse(option); } catch (IllegalArgumentException e) { - player.displayClientMessage(new TextComponent(e.getMessage()), false); + player.displayClientMessage(Components.literal(e.getMessage()), false); return; } @@ -98,11 +97,11 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { ConfigHelper.setConfigValue(configPath, value); - player.displayClientMessage(new TextComponent("Great Success!"), false); + player.displayClientMessage(Components.literal("Great Success!"), false); } catch (ConfigHelper.InvalidValueException e) { - player.displayClientMessage(new TextComponent("Config could not be set the the specified value!"), false); + player.displayClientMessage(Components.literal("Config could not be set the the specified value!"), false); } catch (Exception e) { - player.displayClientMessage(new TextComponent("Something went wrong while trying to set config value. Check the client logs for more information"), false); + player.displayClientMessage(Components.literal("Something went wrong while trying to set config value. Check the client logs for more information"), false); Create.LOGGER.warn("Exception during client-side config value set:", e); } @@ -146,14 +145,14 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { configPath = ConfigHelper.ConfigPath.parse(value); } catch (IllegalArgumentException e) { - player.displayClientMessage(new TextComponent(e.getMessage()), false); + player.displayClientMessage(Components.literal(e.getMessage()), false); return; } try { ScreenOpener.open(SubMenuConfigScreen.find(configPath)); } catch (Exception e) { - player.displayClientMessage(new TextComponent("Unable to find the specified config"), false); + player.displayClientMessage(Components.literal("Unable to find the specified config"), false); } } @@ -164,7 +163,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { return; if (value.equals("info")) { - Component text = new TextComponent("Rainbow Debug Utility is currently: ") + Component text = Components.literal("Rainbow Debug Utility is currently: ") .append(boolToText(AllConfigs.CLIENT.rainbowDebug.get())); player.displayClientMessage(text, false); return; @@ -172,7 +171,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { AllConfigs.CLIENT.rainbowDebug.set(Boolean.parseBoolean(value)); Component text = boolToText(AllConfigs.CLIENT.rainbowDebug.get()) - .append(new TextComponent(" Rainbow Debug Utility").withStyle(ChatFormatting.WHITE)); + .append(Components.literal(" Rainbow Debug Utility").withStyle(ChatFormatting.WHITE)); player.displayClientMessage(text, false); } @@ -213,9 +212,11 @@ public class SConfigureConfigPacket extends SimplePacketBase { @OnlyIn(Dist.CLIENT) private static void fabulousWarning(String value) { AllConfigs.CLIENT.ignoreFabulousWarning.set(true); - Minecraft.getInstance().gui.handleChat(ChatType.CHAT, - new TextComponent("Disabled Fabulous graphics warning"), - Minecraft.getInstance().player.getUUID()); + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + player.displayClientMessage( + Components.literal("Disabled Fabulous graphics warning"), false); + } } @OnlyIn(Dist.CLIENT) @@ -268,8 +269,8 @@ public class SConfigureConfigPacket extends SimplePacketBase { } private static MutableComponent boolToText(boolean b) { - return b ? new TextComponent("enabled").withStyle(ChatFormatting.DARK_GREEN) - : new TextComponent("disabled").withStyle(ChatFormatting.RED); + return b ? Components.literal("enabled").withStyle(ChatFormatting.DARK_GREEN) + : Components.literal("disabled").withStyle(ChatFormatting.RED); } } } diff --git a/src/main/java/com/simibubi/create/foundation/config/CStress.java b/src/main/java/com/simibubi/create/foundation/config/CStress.java index 5ab9d0bc2..344394f98 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CStress.java +++ b/src/main/java/com/simibubi/create/foundation/config/CStress.java @@ -8,6 +8,7 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.block.BlockStressDefaults; import com.simibubi.create.foundation.block.BlockStressValues.IStressValueProvider; import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -43,7 +44,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public double getImpact(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); ConfigValue value = getImpacts().get(key); if (value != null) return value.get(); @@ -53,7 +54,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public double getCapacity(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); ConfigValue value = getCapacities().get(key); if (value != null) return value.get(); @@ -63,7 +64,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public Couple getGeneratedRPM(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); Supplier> supplier = BlockStressDefaults.GENERATOR_SPEEDS.get(key); if (supplier == null) return null; @@ -73,14 +74,14 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public boolean hasImpact(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); return getImpacts().containsKey(key); } @Override public boolean hasCapacity(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); return getCapacities().containsKey(key); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java index b31539745..c6d012ce0 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java +++ b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java @@ -1,47 +1,40 @@ package com.simibubi.create.foundation.config; import java.util.Collection; -import java.util.HashMap; import java.util.function.Supplier; import javax.annotation.Nullable; +import com.simibubi.create.foundation.utility.CreateRegistry; + import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraftforge.common.extensions.IForgeBlock; +import net.minecraftforge.registries.ForgeRegistries; public enum ContraptionMovementSetting { MOVABLE, NO_PICKUP, UNMOVABLE; - private static HashMap> registry = new HashMap<>(); + private static final CreateRegistry> SETTING_SUPPLIERS = new CreateRegistry<>(ForgeRegistries.BLOCKS); - public static void register(ResourceLocation id, Supplier setting) { - registry.put(id, setting); + public static void register(ResourceLocation block, Supplier settingSupplier) { + SETTING_SUPPLIERS.register(block, settingSupplier); } - static { - register(Blocks.BUDDING_AMETHYST.getRegistryName(), () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); - register(Blocks.SPAWNER.getRegistryName(), () -> AllConfigs.SERVER.kinetics.spawnerMovement.get()); - register(Blocks.OBSIDIAN.getRegistryName(), () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); - register(Blocks.CRYING_OBSIDIAN.getRegistryName(), () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + public static void register(Block block, Supplier settingSupplier) { + SETTING_SUPPLIERS.register(block, settingSupplier); } @Nullable public static ContraptionMovementSetting get(Block block) { - if (block instanceof IMovementSettingProvider) - return ((IMovementSettingProvider) block).getContraptionMovementSetting(); - return get(block.getRegistryName()); + if (block instanceof IMovementSettingProvider provider) + return provider.getContraptionMovementSetting(); + return SETTING_SUPPLIERS.get(block).get(); } - @Nullable - public static ContraptionMovementSetting get(ResourceLocation id) { - Supplier supplier = registry.get(id); - return supplier == null ? null : supplier.get(); - } - - protected static boolean allAre(Collection blocks, ContraptionMovementSetting are) { + public static boolean allAre(Collection blocks, ContraptionMovementSetting are) { return blocks.stream().anyMatch(b -> get(b.state.getBlock()) == are); } @@ -49,6 +42,13 @@ public enum ContraptionMovementSetting { return allAre(blocks, ContraptionMovementSetting.NO_PICKUP); } + public static void registerDefaults() { + register(Blocks.BUDDING_AMETHYST, () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); + register(Blocks.SPAWNER, () -> AllConfigs.SERVER.kinetics.spawnerMovement.get()); + register(Blocks.OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + register(Blocks.CRYING_OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + } + public interface IMovementSettingProvider extends IForgeBlock { ContraptionMovementSetting getContraptionMovementSetting(); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java index cf5fb411f..a80623f38 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java @@ -21,10 +21,10 @@ import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.element.TextStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.config.ModConfig; @@ -146,7 +146,7 @@ public class BaseConfigScreen extends ConfigScreen { super.init(); returnOnClose = true; - TextStencilElement clientText = new TextStencilElement(font, new TextComponent(clientTile)).centered(true, true); + TextStencilElement clientText = new TextStencilElement(font, Components.literal(clientTile)).centered(true, true); addRenderableWidget(clientConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 - 30, 200, 16).showingElement(clientText)); if (clientSpec != null) { @@ -158,7 +158,7 @@ public class BaseConfigScreen extends ConfigScreen { clientText.withElementRenderer(DISABLED_RENDERER); } - TextStencilElement commonText = new TextStencilElement(font, new TextComponent(commonTile)).centered(true, true); + TextStencilElement commonText = new TextStencilElement(font, Components.literal(commonTile)).centered(true, true); addRenderableWidget(commonConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15, 200, 16).showingElement(commonText)); if (commonSpec != null) { @@ -170,7 +170,7 @@ public class BaseConfigScreen extends ConfigScreen { commonText.withElementRenderer(DISABLED_RENDERER); } - TextStencilElement serverText = new TextStencilElement(font, new TextComponent(serverTile)).centered(true, true); + TextStencilElement serverText = new TextStencilElement(font, Components.literal(serverTile)).centered(true, true); addRenderableWidget(serverConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 + 30, 200, 16).showingElement(serverText)); if (serverSpec == null) { @@ -180,10 +180,10 @@ public class BaseConfigScreen extends ConfigScreen { } else if (minecraft.level == null) { serverText.withElementRenderer(DISABLED_RENDERER); serverConfigWidget.getToolTip() - .add(new TextComponent("Stored individually per World")); + .add(Components.literal("Stored individually per World")); serverConfigWidget.getToolTip() .addAll(TooltipHelper.cutTextComponent( - new TextComponent( + Components.literal( "Gameplay settings can only be accessed from the in-game menu after joining a World or Server."), ChatFormatting.GRAY, ChatFormatting.GRAY)); } else { @@ -218,10 +218,10 @@ public class BaseConfigScreen extends ConfigScreen { goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil() .withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); goBack.getToolTip() - .add(new TextComponent("Go Back")); + .add(Components.literal("Go Back")); addRenderableWidget(goBack); - TextStencilElement othersText = new TextStencilElement(font, new TextComponent("Access Configs of other Mods")).centered(true, true); + TextStencilElement othersText = new TextStencilElement(font, Components.literal("Access Configs of other Mods")).centered(true, true); others = new BoxWidget(width / 2 - 100, height / 2 - 15 + 90, 200, 16).showingElement(othersText); othersText.withElementRenderer(BoxWidget.gradientFactory.apply(others)); others.withCallback(() -> linkTo(new ConfigModListScreen(this))); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java index 51231e588..e3b074830 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java @@ -13,10 +13,10 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.fml.ModList; import net.minecraftforge.forgespi.language.IModInfo; @@ -58,7 +58,7 @@ public class ConfigModListScreen extends ConfigScreen { goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil() .withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); goBack.getToolTip() - .add(new TextComponent("Go Back")); + .add(Components.literal("Go Back")); addRenderableWidget(goBack); search = new HintableTextFieldWidget(font, width / 2 - listWidth / 2, height - 35, listWidth, 20); @@ -112,8 +112,8 @@ public class ConfigModListScreen extends ConfigScreen { button.active = false; button.updateColorsFromState(); button.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BaseConfigScreen.DISABLED_RENDERER)); - labelTooltip.add(new TextComponent(toHumanReadable(id))); - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("This Mod does not have any configs registered or is not using Forge's config system"), ChatFormatting.GRAY, ChatFormatting.GRAY)); + labelTooltip.add(Components.literal(toHumanReadable(id))); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("This Mod does not have any configs registered or is not using Forge's config system"), ChatFormatting.GRAY, ChatFormatting.GRAY)); } listeners.add(button); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java index f014b5424..3e537be81 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.gui.TickableGuiEventListener; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.TextStencilElement; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; @@ -28,7 +29,6 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class ConfigScreenList extends ObjectSelectionList implements TickableGuiEventListener { @@ -272,7 +272,7 @@ public class ConfigScreenList extends ObjectSelectionList AllIcons.I_CONFIG_LOCKED.render(ms, 0, 0)); stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, red)); serverLocked.withBorderColors(red); - serverLocked.getToolTip().add(new TextComponent("Locked").withStyle(ChatFormatting.BOLD)); + serverLocked.getToolTip().add(Components.literal("Locked").withStyle(ChatFormatting.BOLD)); serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You do not have enough permissions to edit the server config. You can still look at the current values here though.", ChatFormatting.GRAY, ChatFormatting.GRAY)); } else { stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_UNLOCKED.render(ms, 0, 0)); stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, green)); serverLocked.withBorderColors(green); - serverLocked.getToolTip().add(new TextComponent("Unlocked").withStyle(ChatFormatting.BOLD)); + serverLocked.getToolTip().add(Components.literal("Unlocked").withStyle(ChatFormatting.BOLD)); serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You have enough permissions to edit the server config. Changes you make here will be synced with the server when you save them.", ChatFormatting.GRAY, ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java index e90668608..4111d83b2 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java @@ -11,11 +11,12 @@ import com.simibubi.create.foundation.config.ui.ConfigTextField; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.TextStencilElement; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraftforge.common.ForgeConfigSpec; public abstract class NumberEntry extends ValueEntry { @@ -74,13 +75,13 @@ public abstract class NumberEntry extends ValueEntry { Font font = Minecraft.getInstance().font; if (min.doubleValue() > getTypeMin().doubleValue()) { - TextComponent t = new TextComponent(formatBound(min) + " < "); + MutableComponent t = Components.literal(formatBound(min) + " < "); minText = new TextStencilElement(font, t).centered(true, false); minText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); minOffset = font.width(t); } if (max.doubleValue() < getTypeMax().doubleValue()) { - TextComponent t = new TextComponent(" < " + formatBound(max)); + MutableComponent t = Components.literal(" < " + formatBound(max)); maxText = new TextStencilElement(font, t).centered(true, false); maxText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); maxOffset = font.width(t); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java index 1d3d89d3b..330b2cda3 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java @@ -18,10 +18,10 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.ForgeConfigSpec; public class ValueEntry extends ConfigScreenList.LabeledEntry { @@ -50,7 +50,7 @@ public class ValueEntry extends ConfigScreenList.LabeledEntry { listeners.add(resetButton); List path = value.getPath(); - labelTooltip.add(new TextComponent(label).withStyle(ChatFormatting.WHITE)); + labelTooltip.add(Components.literal(label).withStyle(ChatFormatting.WHITE)); String comment = spec.getComment(); if (comment == null || comment.isEmpty()) return; @@ -68,18 +68,18 @@ public class ValueEntry extends ConfigScreenList.LabeledEntry { // add comment to tooltip labelTooltip.addAll(commentLines.stream() .filter(Predicates.not(s -> s.startsWith("Range"))) - .map(TextComponent::new) + .map(Components::literal) .flatMap(stc -> TooltipHelper.cutTextComponent(stc, ChatFormatting.GRAY, ChatFormatting.GRAY) .stream()) .collect(Collectors.toList())); if (annotations.containsKey(ConfigAnnotations.RequiresRelog.TRUE.getName())) - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("Changing this value will require a _relog_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.GOLD)); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("Changing this value will require a _relog_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.GOLD)); if (annotations.containsKey(ConfigAnnotations.RequiresRestart.CLIENT.getName())) - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("Changing this value will require a _restart_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.RED)); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("Changing this value will require a _restart_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.RED)); - labelTooltip.add(new TextComponent(ConfigScreen.modID + ":" + path.get(path.size() - 1)).withStyle(ChatFormatting.DARK_GRAY)); + labelTooltip.add(Components.literal(ConfigScreen.modID + ":" + path.get(path.size() - 1)).withStyle(ChatFormatting.DARK_GRAY)); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index bff5adfda..2c410b692 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -39,6 +39,7 @@ import com.simibubi.create.foundation.block.BlockStressDefaults; import com.simibubi.create.foundation.block.ItemUseOverrides; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; @@ -87,7 +88,7 @@ public class BuilderTransformers { .blockstate((c, p) -> BlockStateGen.horizontalAxisBlock(c, p, s -> p.models() .getExistingFile(p.modLoc("block/track/bogey/top")))) .loot((p, l) -> p.dropOther(l, AllBlocks.RAILWAY_CASING.get())) - .onRegister(block -> IBogeyBlock.register(block.getRegistryName())); + .onRegister(block -> IBogeyBlock.register(RegisteredObjects.getKeyOrThrow(block))); } public static NonNullUnaryOperator> trapdoor(boolean orientable) { diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index 9a0e26718..22cf21343 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -18,6 +18,7 @@ import com.simibubi.create.content.contraptions.fluids.VirtualFluid; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; import com.simibubi.create.foundation.block.connected.CTModel; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.BlockEntityBuilder.BlockEntityFactory; @@ -204,11 +205,6 @@ public class CreateRegistrate extends AbstractRegistrate { /* Util */ - public static NonNullConsumer connectedTextures( - Supplier behavior) { - return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); - } - public static NonNullConsumer casingConnectivity( BiConsumer consumer) { return entry -> onClient(() -> () -> registerCasingConnectivity(entry, consumer)); @@ -224,15 +220,13 @@ public class CreateRegistrate extends AbstractRegistrate { return entry -> onClient(() -> () -> registerItemModel(entry, func)); } - protected static void onClient(Supplier toRun) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); + public static NonNullConsumer connectedTextures( + Supplier behavior) { + return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); } - @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { - ConnectedTextureBehaviour behavior = behaviorSupplier.get(); - CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(entry.delegate, model -> new CTModel(model, behavior)); + protected static void onClient(Supplier toRun) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); } @OnlyIn(Dist.CLIENT) @@ -245,14 +239,21 @@ public class CreateRegistrate extends AbstractRegistrate { private static void registerBlockModel(Block entry, Supplier> func) { CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(entry.delegate, func.get()); + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); } @OnlyIn(Dist.CLIENT) private static void registerItemModel(Item entry, Supplier> func) { CreateClient.MODEL_SWAPPER.getCustomItemModels() - .register(entry.delegate, func.get()); + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); + } + + @OnlyIn(Dist.CLIENT) + private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjects.getKeyOrThrow(entry), model -> new CTModel(model, behavior)); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java index 564a68145..af314d575 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java @@ -5,9 +5,9 @@ import java.util.function.Supplier; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.DataGenerator; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -52,9 +52,8 @@ public class HauntingRecipeGen extends ProcessingRecipeGen { } public GeneratedRecipe convert(Supplier input, Supplier result) { - return create(new ResourceLocation(Create.ID, result.get() - .asItem() - .getRegistryName() + return create(Create.asResource(RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) .getPath()), p -> p.withItemIngredients(input.get()) .output(result.get())); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java index 3cf72b753..4dbb1fdc0 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.components.deployer.ManualApplic import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; @@ -57,7 +58,7 @@ public class LogStrippingFakeRecipes { } private static ManualApplicationRecipe create(Item fromItem, Item toItem, ItemStack axe) { - ResourceLocation rn = toItem.getRegistryName(); + ResourceLocation rn = RegisteredObjects.getKeyOrThrow(toItem); return new ProcessingRecipeBuilder<>(ManualApplicationRecipe::new, new ResourceLocation(rn.getNamespace(), rn.getPath() + "_via_vanilla_stripping")).require(fromItem) .require(Ingredient.of(axe)) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java index 54a12eb5f..b398a31ee 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java @@ -15,6 +15,7 @@ import com.google.common.collect.Sets; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.resources.ResourceLocation; @@ -27,7 +28,6 @@ import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.common.crafting.conditions.ICondition; import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.registries.ForgeRegistries; public class MechanicalCraftingRecipeBuilder { @@ -112,7 +112,7 @@ public class MechanicalCraftingRecipeBuilder { * Builds this recipe into a {@link FinishedRecipe}. */ public void build(Consumer p_200464_1_) { - this.build(p_200464_1_, ForgeRegistries.ITEMS.getKey(this.result)); + this.build(p_200464_1_, RegisteredObjects.getKeyOrThrow(this.result)); } /** @@ -120,7 +120,7 @@ public class MechanicalCraftingRecipeBuilder { * {@link #build(Consumer)} if save is the same as the ID for the result. */ public void build(Consumer p_200466_1_, String p_200466_2_) { - ResourceLocation resourcelocation = ForgeRegistries.ITEMS.getKey(this.result); + ResourceLocation resourcelocation = RegisteredObjects.getKeyOrThrow(this.result); if ((new ResourceLocation(p_200466_2_)).equals(resourcelocation)) { throw new IllegalStateException("Shaped Recipe " + p_200466_2_ + " should remove its 'save' argument"); } else { @@ -209,7 +209,7 @@ public class MechanicalCraftingRecipeBuilder { p_218610_1_.add("key", jsonobject); JsonObject jsonobject1 = new JsonObject(); - jsonobject1.addProperty("item", ForgeRegistries.ITEMS.getKey(this.result) + jsonobject1.addProperty("item", RegisteredObjects.getKeyOrThrow(this.result) .toString()); if (this.count > 1) jsonobject1.addProperty("count", this.count); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java index d359a5bf0..dbf210b72 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java @@ -6,6 +6,7 @@ import com.google.common.base.Supplier; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; @@ -97,9 +98,8 @@ public class MechanicalCraftingRecipeGen extends CreateRecipeProvider { return register(consumer -> { MechanicalCraftingRecipeBuilder b = builder.apply(MechanicalCraftingRecipeBuilder.shapedRecipe(result.get(), amount)); - ResourceLocation location = Create.asResource("mechanical_crafting/" + result.get() - .asItem() - .getRegistryName() + ResourceLocation location = Create.asResource("mechanical_crafting/" + RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) .getPath() + suffix); b.build(consumer, location); }); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java index 71a9f20a8..88e7308a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java @@ -10,6 +10,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import net.minecraft.data.DataGenerator; @@ -76,8 +77,7 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { ItemLike iItemProvider = singleIngredient.get(); transform .apply(new ProcessingRecipeBuilder<>(serializer.getFactory(), - new ResourceLocation(namespace, iItemProvider.asItem() - .getRegistryName() + new ResourceLocation(namespace, RegisteredObjects.getKeyOrThrow(iItemProvider.asItem()) .getPath())).withItemIngredients(Ingredient.of(iItemProvider))) .build(c); }; @@ -130,9 +130,8 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { protected Supplier idWithSuffix(Supplier item, String suffix) { return () -> { - ResourceLocation registryName = item.get() - .asItem() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(item.get() + .asItem()); return Create.asResource(registryName.getPath() + suffix); }; } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index fdb315cfd..5401c429c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -28,6 +28,7 @@ import com.simibubi.create.content.AllSections; import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.content.palettes.AllPaletteStoneTypes; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.ItemProviderEntry; @@ -1281,9 +1282,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { } private ResourceLocation getRegistryName() { - return compatDatagenOutput == null ? result.get() - .asItem() - .getRegistryName() : compatDatagenOutput; + return compatDatagenOutput == null ? RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) : compatDatagenOutput; } GeneratedCookingRecipeBuilder viaCooking(Supplier item) { @@ -1365,7 +1365,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { consumer.accept( isOtherMod ? new ModdedCookingRecipeResult(result, compatDatagenOutput, recipeConditions) : result); - }, createSimpleLocation(serializer.getRegistryName() + }, createSimpleLocation(RegisteredObjects.getKeyOrThrow(serializer) .getPath())); }); } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java index be7a06a2f..16bbd3adb 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTil import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.utility.Pair; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; @@ -100,8 +101,7 @@ public class FluidHelper { public static JsonElement serializeFluidStack(FluidStack stack) { JsonObject json = new JsonObject(); - json.addProperty("fluid", stack.getFluid() - .getRegistryName() + json.addProperty("fluid", RegisteredObjects.getKeyOrThrow(stack.getFluid()) .toString()); json.addProperty("amount", stack.getAmount()); if (stack.hasTag()) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index 10097c729..b74e6e5dd 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -13,6 +13,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -183,7 +184,7 @@ public abstract class FluidIngredient implements Predicate { @Override protected void writeInternal(JsonObject json) { - json.addProperty("fluid", fluid.getRegistryName() + json.addProperty("fluid", RegisteredObjects.getKeyOrThrow(fluid) .toString()); json.add("nbt", JsonParser.parseString(tagToMatch.toString())); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java index f0388bc00..508880945 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java @@ -6,6 +6,7 @@ import java.util.List; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.widget.AbstractSimiWidget; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Widget; @@ -13,7 +14,6 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -29,7 +29,7 @@ public abstract class AbstractSimiScreen extends Screen { } protected AbstractSimiScreen() { - this(TextComponent.EMPTY); + this(Components.immutableEmpty()); } /** diff --git a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java index 51889c28f..45c03f754 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -25,7 +26,6 @@ import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.renderer.CubeMap; import net.minecraft.client.renderer.PanoramaRenderer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -37,8 +37,8 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { new ResourceLocation("textures/gui/title/background/panorama_overlay.png"); public static final PanoramaRenderer PANORAMA = new PanoramaRenderer(PANORAMA_RESOURCES); - private static final Component CURSEFORGE_TOOLTIP = new TextComponent("CurseForge").withStyle(s -> s.withColor(0xFC785C).withBold(true)); - private static final Component MODRINTH_TOOLTIP = new TextComponent("Modrinth").withStyle(s -> s.withColor(0x3FD32B).withBold(true)); + private static final Component CURSEFORGE_TOOLTIP = Components.literal("CurseForge").withStyle(s -> s.withColor(0xFC785C).withBold(true)); + private static final Component MODRINTH_TOOLTIP = Components.literal("Modrinth").withStyle(s -> s.withColor(0x3FD32B).withBold(true)); public static final String CURSEFORGE_LINK = "https://www.curseforge.com/minecraft/mc-mods/create"; public static final String MODRINTH_LINK = "https://modrinth.com/mod/create"; @@ -120,9 +120,9 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { ms.pushPose(); ms.translate(0, 0, 200); - drawCenteredString(ms, font, new TextComponent(Create.NAME).withStyle(ChatFormatting.BOLD) + drawCenteredString(ms, font, Components.literal(Create.NAME).withStyle(ChatFormatting.BOLD) .append( - new TextComponent(" v" + Create.VERSION).withStyle(ChatFormatting.BOLD, ChatFormatting.WHITE)), + Components.literal(" v" + Create.VERSION).withStyle(ChatFormatting.BOLD, ChatFormatting.WHITE)), width / 2, 89, 0xFF_E4BB67); ms.popPose(); @@ -209,7 +209,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { protected final float scale; public PlatformIconButton(int pX, int pY, int pWidth, int pHeight, AllGuiTextures icon, float scale, OnPress pOnPress, OnTooltip pOnTooltip) { - super(pX, pY, pWidth, pHeight, TextComponent.EMPTY, pOnPress, pOnTooltip); + super(pX, pY, pWidth, pHeight, Components.immutableEmpty(), pOnPress, pOnTooltip); this.icon = icon; this.scale = scale; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java index 4a2a56e6e..69973a41f 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java @@ -6,12 +6,12 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.gui.widget.TooltipArea; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.network.chat.TextComponent; public class ModularGuiLineBuilder { @@ -52,7 +52,7 @@ public class ModularGuiLineBuilder { } private void addScrollInput(T input, BiConsumer inputTransform, String dataKey) { - Label label = new Label(input.x + 5, y, TextComponent.EMPTY); + Label label = new Label(input.x + 5, y, Components.immutableEmpty()); label.withShadow(); inputTransform.accept(input, label); input.writingTo(label); @@ -76,7 +76,7 @@ public class ModularGuiLineBuilder { public ModularGuiLineBuilder addTextInput(int x, int width, BiConsumer inputTransform, String dataKey) { - EditBox input = new EditBox(font, x + this.x + 5, y, width - 9, 8, TextComponent.EMPTY); + EditBox input = new EditBox(font, x + this.x + 5, y, width - 9, 8, Components.immutableEmpty()); input.setBordered(false); input.setTextColor(0xffffff); input.changeFocus(false); diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java index d735a33aa..3b53ad9a0 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java @@ -1,10 +1,10 @@ package com.simibubi.create.foundation.gui.element; import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class TextStencilElement extends DelegatedStencilElement { @@ -21,7 +21,7 @@ public class TextStencilElement extends DelegatedStencilElement { public TextStencilElement(Font font, String text) { this(font); - component = new TextComponent(text); + component = Components.literal(text); } public TextStencilElement(Font font, MutableComponent component) { @@ -30,7 +30,7 @@ public class TextStencilElement extends DelegatedStencilElement { } public TextStencilElement withText(String text) { - component = new TextComponent(text); + component = Components.literal(text); return this; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java index 85cdd4ae1..6d0d747c3 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java @@ -8,11 +8,11 @@ import javax.annotation.Nonnull; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.TickableGuiEventListener; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public abstract class AbstractSimiWidget extends AbstractWidget implements TickableGuiEventListener { @@ -31,7 +31,7 @@ public abstract class AbstractSimiWidget extends AbstractWidget implements Ticka } protected AbstractSimiWidget(int x, int y, int width, int height) { - this(x, y, width, height, TextComponent.EMPTY); + this(x, y, width, height, Components.immutableEmpty()); } protected AbstractSimiWidget(int x, int y, int width, int height, Component message) { diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java index 414f5ab5b..57bb7ce28 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java @@ -4,12 +4,12 @@ import javax.annotation.Nonnull; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class Label extends AbstractSimiWidget { @@ -22,7 +22,7 @@ public class Label extends AbstractSimiWidget { public Label(int x, int y, Component text) { super(x, y, Minecraft.getInstance().font.width(text), 10); font = Minecraft.getInstance().font; - this.text = new TextComponent("Label"); + this.text = Components.literal("Label"); color = 0xFFFFFF; hasShadow = false; suffix = ""; @@ -62,8 +62,8 @@ public class Label extends AbstractSimiWidget { for (int i = startIndex; i != endIndex; i += step) { String sub = builder.substring(trimFront ? i : startIndex, trimFront ? endIndex + 1 : i + 1); - if (fontRenderer.width(new TextComponent(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) { - text = new TextComponent(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle()); + if (fontRenderer.width(Components.literal(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) { + text = Components.literal(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle()); return; } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java index 337729b27..4f810c3ab 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java @@ -5,12 +5,12 @@ import java.util.function.Function; import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class ScrollInput extends AbstractSimiWidget { @@ -34,7 +34,7 @@ public class ScrollInput extends AbstractSimiWidget { max = 1; shiftStep = 5; step = standardStep(); - formatter = i -> new TextComponent(String.valueOf(i)); + formatter = i -> Components.literal(String.valueOf(i)); } public Function standardStep() { diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java index 1a570d446..097f21b32 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java @@ -3,12 +3,12 @@ package com.simibubi.create.foundation.gui.widget; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class SelectionScrollInput extends ScrollInput { @@ -43,23 +43,23 @@ public class SelectionScrollInput extends ScrollInput { if (this.min + 1 == min) min--; if (min > this.min) - toolTip.add(new TextComponent("> ...").withStyle(ChatFormatting.GRAY)); + toolTip.add(Components.literal("> ...").withStyle(ChatFormatting.GRAY)); if (this.max - 1 == max) max++; for (int i = min; i < max; i++) { if (i == state) - toolTip.add(TextComponent.EMPTY.plainCopy() + toolTip.add(Components.empty() .append("-> ") .append(options.get(i)) .withStyle(ChatFormatting.WHITE)); else - toolTip.add(TextComponent.EMPTY.plainCopy() + toolTip.add(Components.empty() .append("> ") .append(options.get(i)) .withStyle(ChatFormatting.GRAY)); } if (max < this.max) - toolTip.add(new TextComponent("> ...").withStyle(ChatFormatting.GRAY)); + toolTip.add(Components.literal("> ...").withStyle(ChatFormatting.GRAY)); toolTip.add(scrollToSelect.plainCopy() .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)); diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java index 3f0be8ba2..b8b85e2f6 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java @@ -27,6 +27,7 @@ import com.simibubi.create.content.contraptions.goggles.GogglesItem; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CKinetics; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.LangBuilder; @@ -36,13 +37,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.Block; public class ItemDescription { public static final ItemDescription MISSING = new ItemDescription(null); - public static Component trim = new TextComponent(" ").withStyle(WHITE, STRIKETHROUGH); + public static Component trim = Components.literal(" ").withStyle(WHITE, STRIKETHROUGH); public enum Palette { @@ -175,13 +175,13 @@ public class ItemDescription { } public ItemDescription withBehaviour(String condition, String behaviour) { - add(linesOnShift, new TextComponent(condition).withStyle(GRAY)); + add(linesOnShift, Components.literal(condition).withStyle(GRAY)); addStrings(linesOnShift, cutStringTextComponent(behaviour, palette.color, palette.hColor, 1)); return this; } public ItemDescription withControl(String condition, String action) { - add(linesOnCtrl, new TextComponent(condition).withStyle(GRAY)); + add(linesOnCtrl, Components.literal(condition).withStyle(GRAY)); addStrings(linesOnCtrl, cutStringTextComponent(action, palette.color, palette.hColor, 1)); return this; } @@ -204,30 +204,30 @@ public class ItemDescription { boolean ctrl = list == linesOnCtrl; if (holdDesc.length != 2 || holdCtrl.length != 2) { - list.add(0, new TextComponent("Invalid lang formatting!")); + list.add(0, Components.literal("Invalid lang formatting!")); continue; } if (hasControls) { - MutableComponent tabBuilder = new TextComponent(""); - tabBuilder.append(new TextComponent(holdCtrl[0]).withStyle(DARK_GRAY)); + MutableComponent tabBuilder = Components.empty(); + tabBuilder.append(Components.literal(holdCtrl[0]).withStyle(DARK_GRAY)); tabBuilder.append(keyCtrl.plainCopy() .withStyle(ctrl ? WHITE : GRAY)); - tabBuilder.append(new TextComponent(holdCtrl[1]).withStyle(DARK_GRAY)); + tabBuilder.append(Components.literal(holdCtrl[1]).withStyle(DARK_GRAY)); list.add(0, tabBuilder); } if (hasDescription) { - MutableComponent tabBuilder = new TextComponent(""); - tabBuilder.append(new TextComponent(holdDesc[0]).withStyle(DARK_GRAY)); + MutableComponent tabBuilder = Components.empty(); + tabBuilder.append(Components.literal(holdDesc[0]).withStyle(DARK_GRAY)); tabBuilder.append(keyShift.plainCopy() .withStyle(shift ? WHITE : GRAY)); - tabBuilder.append(new TextComponent(holdDesc[1]).withStyle(DARK_GRAY)); + tabBuilder.append(Components.literal(holdDesc[1]).withStyle(DARK_GRAY)); list.add(0, tabBuilder); } if (shift || ctrl) - list.add(hasDescription && hasControls ? 2 : 1, new TextComponent("")); + list.add(hasDescription && hasControls ? 2 : 1, Components.immutableEmpty()); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index bccd61761..ad5fdf92a 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.goggles.GogglesItem; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.item.ItemDescription.Palette; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; @@ -24,7 +25,6 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -69,7 +69,7 @@ public class TooltipHelper { @Deprecated public static List cutString(Component s, ChatFormatting defaultColor, ChatFormatting highlightColor) { - return cutString(s.getContents(), defaultColor, highlightColor, 0); + return cutString(s.getString(), defaultColor, highlightColor, 0); } @Deprecated @@ -105,7 +105,7 @@ public class TooltipHelper { public static List cutStringTextComponent(String c, ChatFormatting defaultColor, ChatFormatting highlightColor) { - return cutTextComponent(new TextComponent(c), defaultColor, highlightColor, 0); + return cutTextComponent(Components.literal(c), defaultColor, highlightColor, 0); } public static List cutTextComponent(Component c, ChatFormatting defaultColor, @@ -115,7 +115,7 @@ public class TooltipHelper { public static List cutStringTextComponent(String c, ChatFormatting defaultColor, ChatFormatting highlightColor, int indent) { - return cutTextComponent(new TextComponent(c), defaultColor, highlightColor, indent); + return cutTextComponent(Components.literal(c), defaultColor, highlightColor, indent); } public static List cutTextComponent(Component c, ChatFormatting defaultColor, @@ -161,7 +161,7 @@ public class TooltipHelper { } // Format - MutableComponent lineStart = new TextComponent(Strings.repeat(" ", indent)); + MutableComponent lineStart = Components.literal(Strings.repeat(" ", indent)); lineStart.withStyle(defaultColor); List formattedLines = new ArrayList<>(lines.size()); Couple f = Couple.create(highlightColor, defaultColor); @@ -171,7 +171,7 @@ public class TooltipHelper { MutableComponent currentComponent = lineStart.plainCopy(); String[] split = string.split("_"); for (String part : split) { - currentComponent.append(new TextComponent(part).withStyle(f.get(currentlyHighlighted))); + currentComponent.append(Components.literal(part).withStyle(f.get(currentlyHighlighted))); currentlyHighlighted = !currentlyHighlighted; } @@ -275,7 +275,7 @@ public class TooltipHelper { // Summary if (I18n.exists(summaryKey)) - tooltip = tooltip.withSummary(new TextComponent(I18n.get(summaryKey))); + tooltip = tooltip.withSummary(Components.literal(I18n.get(summaryKey))); // Requirements // if (stack.getItem() instanceof BlockItem) { @@ -293,7 +293,7 @@ public class TooltipHelper { break; if (i == 1) tooltip.getLinesOnShift() - .add(new TextComponent("")); + .add(Components.immutableEmpty()); tooltip.withBehaviour(I18n.get(conditionKey), I18n.get(behaviourKey)); } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java index 6e1c5d808..289281528 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java @@ -1,48 +1,56 @@ package com.simibubi.create.foundation.item.render; -import java.util.ArrayList; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; public class CustomItemModels { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Map> finalModelFuncs = new IdentityHashMap<>(); - public CustomItemModels() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation item, NonNullFunction func) { + modelFuncs.put(item, func); } public void forEach(NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFuncs.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFuncs.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); + finalModelFuncs.clear(); + modelFuncs.asMap().forEach((location, funcList) -> { + Item item = ForgeRegistries.ITEMS.getValue(location); + if (item == null) { + return; + } + + NonNullFunction finalFunc = null; + for (NonNullFunction func : funcList) { + if (finalFunc == null) { + finalFunc = func; + } else { + finalFunc = finalFunc.andThen(func); + } + } + + finalModelFuncs.put(item, finalFunc); + }); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java index 491e46f8a..08f7a990a 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java @@ -1,16 +1,26 @@ package com.simibubi.create.foundation.item.render; +import java.util.HashSet; +import java.util.Set; + import com.mojang.blaze3d.vertex.PoseStack; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.RenderProperties; +import net.minecraftforge.registries.ForgeRegistries; public abstract class CustomRenderedItemModelRenderer extends BlockEntityWithoutLevelRenderer { + private static final Set ITEMS = new HashSet<>(); + public CustomRenderedItemModelRenderer() { super(null, null); } @@ -34,4 +44,25 @@ public abstract class CustomRenderedItemModelRenderer> consumer) { + for (Item item : ITEMS) { + if (ForgeRegistries.ITEMS.containsValue(item)) { + BlockEntityWithoutLevelRenderer renderer = RenderProperties.get(item).getItemStackRenderer(); + if (renderer instanceof CustomRenderedItemModelRenderer customRenderer) { + consumer.accept(item, customRenderer::createModel); + } + } + } + } + } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java index 9fe7b2b80..7a29d0d14 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java @@ -1,49 +1,48 @@ package com.simibubi.create.foundation.item.render; -import java.util.ArrayList; +import java.util.HashMap; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; public class CustomRenderedItems { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Map> modelFuncs = new HashMap<>(); + private final Map> finalModelFuncs = new IdentityHashMap<>(); - public CustomRenderedItems() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation item, + NonNullFunction func) { + modelFuncs.put(item, func); } public void forEach( NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFuncs.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFuncs.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); + finalModelFuncs.clear(); + CustomRenderedItemModelRenderer.acceptModelFuncs(finalModelFuncs::put); + modelFuncs.forEach((location, func) -> { + Item item = ForgeRegistries.ITEMS.getValue(location); + if (item == null) { + return; + } + finalModelFuncs.put(item, func); + }); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java index 44b0c5d9f..539dd5b60 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.item.render; -import com.simibubi.create.CreateClient; - import net.minecraft.world.item.Item; import net.minecraftforge.client.IItemRenderProperties; @@ -14,7 +12,7 @@ public class SimpleCustomRenderer implements IItemRenderProperties { } public static SimpleCustomRenderer create(Item item, CustomRenderedItemModelRenderer renderer) { - CreateClient.MODEL_SWAPPER.getCustomRenderedItems().register(item.delegate, renderer::createModel); + CustomRenderedItemModelRenderer.registerForSwapping(item); return new SimpleCustomRenderer(renderer); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java index cad0c1bab..279339556 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java @@ -10,6 +10,7 @@ import java.util.Set; import com.google.common.collect.ImmutableSet; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.resources.ResourceLocation; @@ -109,8 +110,7 @@ public class PonderTagRegistry { } public TagBuilder add(ItemLike item) { - return add(item.asItem() - .getRegistryName()); + return add(RegisteredObjects.getKeyOrThrow(item.asItem())); } public TagBuilder add(ItemProviderEntry entry) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index cf22e348c..90f5ce8fe 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -8,7 +8,9 @@ import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.ponder.ui.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.ChatFormatting; @@ -18,7 +20,6 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.event.RenderTooltipEvent; @@ -112,8 +113,7 @@ public class PonderTooltipHandler { if (stack.isEmpty()) return; - if (!PonderRegistry.ALL.containsKey(stack.getItem() - .getRegistryName())) + if (!PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(stack.getItem()))) return; if (prevStack.isEmpty() || !prevStack.sameItem(stack)) @@ -165,7 +165,7 @@ public class PonderTooltipHandler { bars += ChatFormatting.GRAY + Strings.repeat("|", current); if (progress < 1) bars += ChatFormatting.DARK_GRAY + Strings.repeat("|", total - current); - return new TextComponent(bars); + return Components.literal(bars); } return holdW; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index a81424f72..5193df037 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; import net.minecraft.client.Camera; @@ -47,7 +48,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.registries.ForgeRegistries; public class PonderWorld extends SchematicWorld { @@ -228,7 +228,7 @@ public class PonderWorld extends SchematicWorld { @SuppressWarnings("unchecked") private Particle makeParticle(T data, double x, double y, double z, double mx, double my, double mz) { - ResourceLocation key = ForgeRegistries.PARTICLE_TYPES.getKey(data.getType()); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(data.getType()); ParticleProvider particleProvider = (ParticleProvider) particleProviders.get(key); return particleProvider == null ? null : particleProvider.createParticle(data, asClientWorld.get(), x, y, z, mx, my, mz); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java index 06fb92e84..fa09e1135 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java @@ -9,12 +9,12 @@ import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; import com.simibubi.create.foundation.ponder.element.InputWindowElement; import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -135,7 +135,7 @@ public class DisplayScenes { scene.world.hideSection(depot, Direction.SOUTH); scene.idle(5); - scene.world.setDisplayBoardText(board, 1, TextComponent.EMPTY); + scene.world.setDisplayBoardText(board, 1, Components.immutableEmpty()); scene.world.flashDisplayLink(linkPos); scene.idle(5); ElementLink dirtElement = scene.world.showIndependentSection(dirt, Direction.SOUTH); @@ -156,7 +156,7 @@ public class DisplayScenes { scene.world.moveSection(stressElement, util.vector.of(0, -2, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent(1024 + " ").append(Lang.translateDirect("generic.unit.stress"))); + Components.literal(1024 + " ").append(Lang.translateDirect("generic.unit.stress"))); scene.world.flashDisplayLink(linkPos); scene.idle(40); scene.world.hideIndependentSection(stressElement, Direction.SOUTH); @@ -166,8 +166,8 @@ public class DisplayScenes { scene.world.moveSection(chestElement, util.vector.of(0, -3, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent(418 + " ").append(new ItemStack(Items.DEEPSLATE).getHoverName())); - scene.world.setDisplayBoardText(board, 2, new TextComponent(14 + " ").append(AllBlocks.COGWHEEL.asStack() + Components.literal(418 + " ").append(new ItemStack(Items.DEEPSLATE).getHoverName())); + scene.world.setDisplayBoardText(board, 2, Components.literal(14 + " ").append(AllBlocks.COGWHEEL.asStack() .getHoverName())); scene.world.flashDisplayLink(linkPos); scene.idle(40); @@ -185,8 +185,8 @@ public class DisplayScenes { scene.world.moveSection(cuckooElement, util.vector.of(0, -1, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent("6:00 ").append(Lang.translateDirect("generic.daytime.pm"))); - scene.world.setDisplayBoardText(board, 2, TextComponent.EMPTY); + Components.literal("6:00 ").append(Lang.translateDirect("generic.daytime.pm"))); + scene.world.setDisplayBoardText(board, 2, Components.immutableEmpty()); scene.world.flashDisplayLink(linkPos); scene.idle(90); @@ -286,7 +286,7 @@ public class DisplayScenes { .showControls(new InputWindowElement(target, Pointing.RIGHT).withItem(new ItemStack(Items.NAME_TAG)) .rightClick(), 40); scene.idle(6); - scene.world.setDisplayBoardText(board, 0, new TextComponent("Create")); + scene.world.setDisplayBoardText(board, 0, Components.literal("Create")); scene.idle(25); scene.overlay.showText(50) @@ -360,7 +360,7 @@ public class DisplayScenes { scene.overlay.showControls(new InputWindowElement(target, Pointing.RIGHT).rightClick(), 40); scene.idle(6); - scene.world.setDisplayBoardText(board, 0, new TextComponent("")); + scene.world.setDisplayBoardText(board, 0, Components.immutableEmpty()); scene.idle(25); scene.overlay.showText(70) @@ -452,7 +452,7 @@ public class DisplayScenes { scene.world.moveSection(redstoneBlock, util.vector.of(-1, 0, 1), 0); scene.idle(10); scene.world.flashDisplayLink(linkPos); - scene.world.setDisplayBoardText(board, 1, TextComponent.EMPTY); + scene.world.setDisplayBoardText(board, 1, Components.immutableEmpty()); scene.idle(25); scene.overlay.showSelectionWithText(depot, 80) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java index 7e7bb5c1f..ae6bf1945 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java @@ -21,13 +21,13 @@ import com.simibubi.create.foundation.ponder.Selection; import com.simibubi.create.foundation.ponder.element.InputWindowElement; import com.simibubi.create.foundation.ponder.element.ParrotElement; import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -630,7 +630,7 @@ public class RedstoneScenes { .withItem(new ItemStack(Items.NAME_TAG)), 40); scene.idle(7); - Component component = new TextComponent("CREATE"); + Component component = Components.literal("CREATE"); for (int i = 0; i < 3; i++) { final int index = i; scene.world.modifyTileNBT(util.select.position(3 - i, 1, 3), NixieTubeTileEntity.class, nbt -> { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index 2b1bb4682..afb234ff3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -23,7 +23,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Mth; public abstract class NavigatableSimiScreen extends AbstractSimiScreen { @@ -96,7 +96,7 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { ms.pushPose(); ms.translate(0, 0, 500); if (backTrack.isHoveredOrFocused()) { - TranslatableComponent translate = Lang.translateDirect(backTrackingLangKey()); + MutableComponent translate = Lang.translateDirect(backTrackingLangKey()); font.draw(ms, translate, 41 - font.width(translate) / 2, height - 16, Theme.i(Theme.Key.TEXT_DARKER)); if (Mth.equal(arrowAnimation.getValue(), arrowAnimation.getChaseTarget())) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java index 17e337439..22fcd732d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.PonderChapter; import com.simibubi.create.foundation.ponder.PonderRegistry; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; @@ -104,7 +105,7 @@ public class PonderIndexScreen extends NavigatableSimiScreen { PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) .showing(new ItemStack(item)) .withCallback((x, y) -> { - if (!PonderRegistry.ALL.containsKey(item.getRegistryName())) + if (!PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(item))) return; centerScalingOn(x, y); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java index c7bd9bc8b..ce6bbcc80 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.PonderTag; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; @@ -24,7 +25,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; public class PonderTagIndexScreen extends NavigatableSimiScreen { @@ -214,7 +214,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { if (hoveredItem != null) { List list = TooltipHelper.cutStringTextComponent(hoveredItem.getDescription(), ChatFormatting.GRAY, ChatFormatting.GRAY); - list.add(0, new TextComponent(hoveredItem.getTitle())); + list.add(0, Components.literal(hoveredItem.getTitle())); renderComponentTooltip(ms, list, mouseX, mouseY); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index 854026875..f91b6ecdc 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; @@ -83,13 +84,13 @@ public class PonderTagScreen extends NavigatableSimiScreen { PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) .showing(new ItemStack(i)); - if (PonderRegistry.ALL.containsKey(i.getRegistryName())) { + if (PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(i))) { b.withCallback((mouseX, mouseY) -> { centerScalingOn(mouseX, mouseY); ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag)); }); } else { - if (i.getRegistryName() + if (RegisteredObjects.getKeyOrThrow(i) .getNamespace() .equals(Create.ID)) b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) @@ -104,9 +105,8 @@ public class PonderTagScreen extends NavigatableSimiScreen { } if (!tag.getMainItem().isEmpty()) { - ResourceLocation registryName = tag.getMainItem() - .getItem() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(tag.getMainItem() + .getItem()); PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 48, itemCenterY - 10) .showing(tag.getMainItem()); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index 32554bf02..b976f571c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -35,12 +35,14 @@ import com.simibubi.create.foundation.ponder.content.PonderIndex; import com.simibubi.create.foundation.ponder.element.TextWindowElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import com.simibubi.create.foundation.utility.Pointing; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; @@ -53,7 +55,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -117,13 +118,11 @@ public class PonderUI extends NavigatableSimiScreen { } public static PonderUI of(ItemStack item) { - return new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); + return new PonderUI(PonderRegistry.compile(RegisteredObjects.getKeyOrThrow(item.getItem()))); } public static PonderUI of(ItemStack item, PonderTag tag) { - PonderUI ponderUI = new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); + PonderUI ponderUI = new PonderUI(PonderRegistry.compile(RegisteredObjects.getKeyOrThrow(item.getItem()))); ponderUI.referredToByTag = tag; return ponderUI; } @@ -654,7 +653,7 @@ public class PonderUI extends NavigatableSimiScreen { if (hoveredBlockPos != null && PonderIndex.editingModeActive() && !userViewMode) { ms.translate(0, -15, 0); boolean copied = copiedBlockPos != null && hoveredBlockPos.equals(copiedBlockPos); - MutableComponent coords = new TextComponent( + MutableComponent coords = Components.literal( hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ()) .withStyle(copied ? ChatFormatting.GREEN : ChatFormatting.GOLD); renderTooltip(ms, coords, 0, 0); diff --git a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java index 70bde02e9..7615afb36 100644 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java @@ -15,6 +15,7 @@ import com.mojang.math.Vector4f; import com.simibubi.create.Create; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; @@ -78,8 +79,7 @@ public class TileEntityRenderHelper { } catch (Exception e) { iterator.remove(); - String message = "BlockEntity " + tileEntity.getType() - .getRegistryName() + String message = "BlockEntity " + RegisteredObjects.getKeyOrThrow(tileEntity.getType()) .toString() + " could not be rendered virtually."; if (AllConfigs.CLIENT.explainRenderErrors.get()) Create.LOGGER.error(message, e); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java index e50ad52c2..75d6367d2 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.outliner.ChasingAABBOutline; @@ -16,7 +17,6 @@ import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; @@ -25,8 +25,8 @@ import net.minecraft.world.phys.Vec3; public class ValueBox extends ChasingAABBOutline { protected Component label; - protected Component sublabel = TextComponent.EMPTY; - protected Component scrollTooltip = TextComponent.EMPTY; + protected Component sublabel = Components.immutableEmpty(); + protected Component scrollTooltip = Components.immutableEmpty(); protected Vec3 labelOffset = Vec3.ZERO; protected int passiveColor; @@ -106,11 +106,11 @@ public class ValueBox extends ChasingAABBOutline { ms.translate(labelOffset.x, labelOffset.y, labelOffset.z); renderHoveringText(ms, buffer, label); - if (!sublabel.toString().isEmpty()) { + if (!sublabel.getString().isEmpty()) { ms.translate(0, 10, 0); renderHoveringText(ms, buffer, sublabel); } - if (!scrollTooltip.getContents().isEmpty()) { + if (!scrollTooltip.getString().isEmpty()) { ms.translate(0, 10, 0); renderHoveringText(ms, buffer, scrollTooltip, 0x998899, 0x111111); } @@ -137,7 +137,7 @@ public class ValueBox extends ChasingAABBOutline { public void renderContents(PoseStack ms, MultiBufferSource buffer) { super.renderContents(ms, buffer); Font font = Minecraft.getInstance().font; - Component countString = new TextComponent(count == 0 ? "*" : count + ""); + Component countString = Components.literal(count == 0 ? "*" : count + ""); ms.translate(17.5f, -5f, 7f); boolean isFilter = stack.getItem() instanceof FilterItem; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java index d801e692d..8f69bfc62 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; @@ -13,7 +14,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; @@ -64,7 +64,7 @@ public class EdgeInteractionRenderer { AABB bb = EdgeInteractionHandler.getBB(pos, closestEdge); boolean hit = bb.contains(target.getLocation()); - ValueBox box = new ValueBox(TextComponent.EMPTY, bb.move(-pos.getX(), -pos.getY(), -pos.getZ()), pos); + ValueBox box = new ValueBox(Components.immutableEmpty(), bb.move(-pos.getX(), -pos.getY(), -pos.getZ()), pos); Vec3 textOffset = Vec3.ZERO; boolean positive = closestEdge.getAxisDirection() == AxisDirection.POSITIVE; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index 934204a36..d9fe1c193 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.ItemValueBox import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxRenderer; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -23,7 +24,6 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; @@ -66,7 +66,7 @@ public class FilteringRenderer { boolean isFilterSlotted = filter.getItem() instanceof FilterItem; boolean showCount = behaviour.isCountVisible(); boolean fluids = behaviour.fluidFilter; - Component label = isFilterSlotted ? TextComponent.EMPTY + Component label = isFilterSlotted ? Components.immutableEmpty() : Lang.translateDirect(behaviour.recipeFilter ? "logistics.recipe_filter" : fluids ? "logistics.fluid_filter" : "logistics.filter"); boolean hit = behaviour.slotPositioning.testHit(state, target.getLocation() @@ -80,7 +80,7 @@ public class FilteringRenderer { box.offsetLabel(behaviour.textShift) .withColors(fluids ? 0x407088 : 0x7A6A2C, fluids ? 0x70adb5 : 0xB79D64) - .scrollTooltip(showCount && !isFilterSlotted ? new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]") : TextComponent.EMPTY) + .scrollTooltip(showCount && !isFilterSlotted ? Components.literal("[").append(Lang.translateDirect("action.scroll")).append("]") : Components.immutableEmpty()) .passive(!hit); CreateClient.OUTLINER.showValueBox(Pair.of("filter", pos), box.transform(behaviour.slotPositioning)) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java index ec7545742..79311f5b6 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java @@ -8,6 +8,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.IconValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.TextValueBox; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.Minecraft; @@ -15,7 +16,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; @@ -65,12 +65,12 @@ public class ScrollValueRenderer { if (behaviour instanceof ScrollOptionBehaviour) { box = new IconValueBox(label, ((ScrollOptionBehaviour) behaviour).getIconForSelected(), bb, pos); } else { - box = new TextValueBox(label, bb, pos, new TextComponent(behaviour.formatValue())); + box = new TextValueBox(label, bb, pos, Components.literal(behaviour.formatValue())); if (behaviour.unit != null) - box.subLabel(new TextComponent("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); + box.subLabel(Components.literal("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); } - box.scrollTooltip(new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]")); + box.scrollTooltip(Components.literal("[").append(Lang.translateDirect("action.scroll")).append("]")); box.offsetLabel(behaviour.textShift.add(20, -10, 0)) .withColors(0x5A5D5A, 0xB5B7B6) .passive(!highlight); diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index 4817470f3..f2cb5d081 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -68,8 +68,7 @@ public class BlockHelper { if (blockState.hasProperty(BlockStateProperties.STAGE)) return blockState.setValue(BlockStateProperties.STAGE, 0); if (blockState.is(BlockTags.CAULDRONS)) - return Blocks.CAULDRON.delegate.get() - .defaultBlockState(); + return Blocks.CAULDRON.defaultBlockState(); if (blockState.hasProperty(BlockStateProperties.LEVEL_COMPOSTER)) return blockState.setValue(BlockStateProperties.LEVEL_COMPOSTER, 0); if (blockState.hasProperty(BlockStateProperties.EXTENDED)) diff --git a/src/main/java/com/simibubi/create/foundation/utility/Components.java b/src/main/java/com/simibubi/create/foundation/utility/Components.java new file mode 100644 index 000000000..1a892adcc --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/Components.java @@ -0,0 +1,34 @@ +package com.simibubi.create.foundation.utility; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.KeybindComponent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; + +public final class Components { + public static Component immutableEmpty() { + return TextComponent.EMPTY; + } + + /** Use {@link #immutableEmpty()} when possible to prevent creating an extra object. */ + public static MutableComponent empty() { + return TextComponent.EMPTY.copy(); + } + + public static MutableComponent literal(String str) { + return new TextComponent(str); + } + + public static MutableComponent translatable(String key) { + return new TranslatableComponent(key); + } + + public static MutableComponent translatable(String key, Object... args) { + return new TranslatableComponent(key, args); + } + + public static MutableComponent keybind(String name) { + return new KeybindComponent(name); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java b/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java new file mode 100644 index 000000000..6e1e92d5e --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java @@ -0,0 +1,108 @@ +package com.simibubi.create.foundation.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Map; + +import org.jetbrains.annotations.Nullable; + +import com.simibubi.create.Create; + +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.IForgeRegistryEntry; + +public class CreateRegistry, V> { + private static final List> ALL = new ArrayList<>(); + + protected final IForgeRegistry objectRegistry; + protected final Map locationMap = new HashMap<>(); + protected final Map objectMap = new IdentityHashMap<>(); + protected boolean unwrapped = false; + + public CreateRegistry(IForgeRegistry objectRegistry) { + this.objectRegistry = objectRegistry; + ALL.add(this); + } + + public void register(ResourceLocation location, V value) { + if (!unwrapped) { + locationMap.put(location, value); + } else { + K object = objectRegistry.getValue(location); + if (object != null) { + objectMap.put(object, value); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry after unwrapping!"); + } + } + } + + public void register(K object, V value) { + if (unwrapped) { + objectMap.put(object, value); + } else { + ResourceLocation location = objectRegistry.getKey(object); + if (location != null) { + locationMap.put(location, value); + } else { + Create.LOGGER.warn("Could not get location of object '" + object + "' in CreateRegistry before unwrapping!"); + } + } + } + + @Nullable + public V get(ResourceLocation location) { + if (!unwrapped) { + return locationMap.get(location); + } else { + K object = objectRegistry.getValue(location); + if (object != null) { + return objectMap.get(object); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry after unwrapping!"); + return null; + } + } + } + + @Nullable + public V get(K object) { + if (unwrapped) { + return objectMap.get(object); + } else { + ResourceLocation location = objectRegistry.getKey(object); + if (location != null) { + return locationMap.get(location); + } else { + Create.LOGGER.warn("Could not get location of object '" + object + "' in CreateRegistry before unwrapping!"); + return null; + } + } + } + + public boolean isUnwrapped() { + return unwrapped; + } + + protected void unwrap() { + for (Map.Entry entry : locationMap.entrySet()) { + ResourceLocation location = entry.getKey(); + K object = objectRegistry.getValue(location); + if (object != null) { + objectMap.put(object, entry.getValue()); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry during unwrapping!"); + } + } + unwrapped = true; + } + + public static void unwrapAll() { + for (CreateRegistry registry : ALL) { + registry.unwrap(); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Debug.java b/src/main/java/com/simibubi/create/foundation/utility/Debug.java index 74e2f881c..d37522de6 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Debug.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Debug.java @@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.util.thread.EffectiveSide; @@ -18,20 +17,20 @@ public class Debug { @Deprecated public static void debugChat(String message) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), false); + Minecraft.getInstance().player.displayClientMessage(Components.literal(message), false); } @Deprecated public static void debugChatAndShowStack(String message, int depth) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message).append("@") + Minecraft.getInstance().player.displayClientMessage(Components.literal(message).append("@") .append(debugStack(depth)), false); } @Deprecated public static void debugMessage(String message) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), true); + Minecraft.getInstance().player.displayClientMessage(Components.literal(message), true); } @Deprecated @@ -49,18 +48,18 @@ public class Debug { public static Component debugStack(int depth) { StackTraceElement[] stackTraceElements = Thread.currentThread() .getStackTrace(); - MutableComponent text = new TextComponent("[") - .append(new TextComponent(getLogicalSide()).withStyle(ChatFormatting.GOLD)) + MutableComponent text = Components.literal("[") + .append(Components.literal(getLogicalSide()).withStyle(ChatFormatting.GOLD)) .append("] "); for (int i = 1; i < depth + 2 && i < stackTraceElements.length; i++) { StackTraceElement e = stackTraceElements[i]; if (e.getClassName() .equals(Debug.class.getName())) continue; - text.append(new TextComponent(e.getMethodName()).withStyle(ChatFormatting.YELLOW)) + text.append(Components.literal(e.getMethodName()).withStyle(ChatFormatting.YELLOW)) .append(", "); } - return text.append(new TextComponent(" ...").withStyle(ChatFormatting.GRAY)); + return text.append(Components.literal(" ...").withStyle(ChatFormatting.GRAY)); } @Deprecated diff --git a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java index 25d982d7a..aa7edb495 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java +++ b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java @@ -13,7 +13,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec2; @@ -47,7 +46,7 @@ public class DynamicComponent { } public MutableComponent get() { - return parsedCustomText == null ? TextComponent.EMPTY.copy() : parsedCustomText.copy(); + return parsedCustomText == null ? Components.empty() : parsedCustomText.copy(); } public void read(Level level, BlockPos pos, CompoundTag nbt) { @@ -90,7 +89,7 @@ public class DynamicComponent { public static CommandSourceStack getCommandSource(ServerLevel level, BlockPos pos) { return new CommandSourceStack(CommandSource.NULL, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, Create.ID, - new TextComponent(Create.ID), level.getServer(), null); + Components.literal(Create.ID), level.getServer(), null); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java index 5e9ac98dc..6ff90da6b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java @@ -1,7 +1,6 @@ package com.simibubi.create.foundation.utility; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class FluidFormatter { @@ -13,13 +12,13 @@ public class FluidFormatter { public static Couple asComponents(long amount, boolean shorten) { if (shorten && amount >= 1000) { return Couple.create( - new TextComponent(String.format("%.1f" , amount / 1000d)), + Components.literal(String.format("%.1f" , amount / 1000d)), Lang.translateDirect("generic.unit.buckets") ); } return Couple.create( - new TextComponent(String.valueOf(amount)), + Components.literal(String.valueOf(amount)), Lang.translateDirect("generic.unit.millibuckets") ); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/Lang.java b/src/main/java/com/simibubi/create/foundation/utility/Lang.java index 3e062b8bb..51dde4d44 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Lang.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Lang.java @@ -7,8 +7,7 @@ import java.util.Locale; import com.simibubi.create.Create; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fluids.FluidStack; @@ -22,8 +21,8 @@ public class Lang { * @param args * @return */ - public static TranslatableComponent translateDirect(String key, Object... args) { - return new TranslatableComponent(Create.ID + "." + key, resolveBuilders(args)); + public static MutableComponent translateDirect(String key, Object... args) { + return Components.translatable(Create.ID + "." + key, resolveBuilders(args)); } public static String asId(String name) { @@ -42,10 +41,6 @@ public class Lang { return result; } - public static Component empty() { - return TextComponent.EMPTY; - } - // public static LangBuilder builder() { diff --git a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java index 5440c102a..564b6131f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java @@ -6,8 +6,6 @@ import joptsimple.internal.Strings; import net.minecraft.ChatFormatting; 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.world.entity.player.Player; public class LangBuilder { @@ -37,7 +35,7 @@ public class LangBuilder { * @return */ public LangBuilder translate(String langKey, Object... args) { - return add(new TranslatableComponent(namespace + "." + langKey, Lang.resolveBuilders(args))); + return add(Components.translatable(namespace + "." + langKey, Lang.resolveBuilders(args))); } /** @@ -47,7 +45,7 @@ public class LangBuilder { * @return */ public LangBuilder text(String literalText) { - return add(new TextComponent(literalText)); + return add(Components.literal(literalText)); } /** @@ -58,7 +56,7 @@ public class LangBuilder { * @return */ public LangBuilder text(ChatFormatting format, String literalText) { - return add(new TextComponent(literalText).withStyle(format)); + return add(Components.literal(literalText).withStyle(format)); } /** @@ -69,7 +67,7 @@ public class LangBuilder { * @return */ public LangBuilder text(int color, String literalText) { - return add(new TextComponent(literalText).withStyle(s -> s.withColor(color))); + return add(Components.literal(literalText).withStyle(s -> s.withColor(color))); } /** diff --git a/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java b/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java index bfd0fd91f..25c4338d8 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java @@ -78,7 +78,7 @@ public class ModelSwapper { public static List getAllBlockStateModelLocations(Block block) { List models = new ArrayList<>(); - ResourceLocation blockRl = block.getRegistryName(); + ResourceLocation blockRl = RegisteredObjects.getKeyOrThrow(block); block.getStateDefinition() .getPossibleStates() .forEach(state -> { @@ -88,7 +88,7 @@ public class ModelSwapper { } public static ModelResourceLocation getItemModelLocation(Item item) { - return new ModelResourceLocation(item.getRegistryName(), "inventory"); + return new ModelResourceLocation(RegisteredObjects.getKeyOrThrow(item), "inventory"); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java b/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java new file mode 100644 index 000000000..1fde9bb2d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java @@ -0,0 +1,68 @@ +package com.simibubi.create.foundation.utility; + +import org.jetbrains.annotations.NotNull; + +import net.minecraft.core.particles.ParticleType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.IForgeRegistryEntry; + +public final class RegisteredObjects { + // registry argument for easier porting to 1.19 + @NotNull + public static > ResourceLocation getKeyOrThrow(IForgeRegistry registry, V value) { + ResourceLocation key = value.getRegistryName(); + if (key == null) { + throw new IllegalArgumentException("Could not get key for value " + value + "!"); + } + return key; + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Block value) { + return getKeyOrThrow(ForgeRegistries.BLOCKS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Item value) { + return getKeyOrThrow(ForgeRegistries.ITEMS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Fluid value) { + return getKeyOrThrow(ForgeRegistries.FLUIDS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(EntityType value) { + return getKeyOrThrow(ForgeRegistries.ENTITIES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(BlockEntityType value) { + return getKeyOrThrow(ForgeRegistries.BLOCK_ENTITIES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Potion value) { + return getKeyOrThrow(ForgeRegistries.POTIONS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(ParticleType value) { + return getKeyOrThrow(ForgeRegistries.PARTICLE_TYPES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(RecipeSerializer value) { + return getKeyOrThrow(ForgeRegistries.RECIPE_SERIALIZERS, value); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java index ff66d8ffc..a7a74c928 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -96,8 +96,8 @@ public class RemapHelper { reMap.put("adjustable_pulse_repeater", PULSE_REPEATER.getId()); reMap.put("adjustable_repeater", PULSE_REPEATER.getId()); - reMap.put("copper_block", Blocks.COPPER_BLOCK.getRegistryName()); - reMap.put("copper_ore", Blocks.COPPER_ORE.getRegistryName()); + reMap.put("copper_block", RegisteredObjects.getKeyOrThrow(Blocks.COPPER_BLOCK)); + reMap.put("copper_ore", RegisteredObjects.getKeyOrThrow(Blocks.COPPER_ORE)); reMap.put("acacia_glass", ACACIA_WINDOW.getId()); reMap.put("acacia_glass_pane", ACACIA_WINDOW_PANE.getId());