Skip to content

Commit 945f9f6

Browse files
committed
Switch to using the new RegisterClientExtensionsEvent
1 parent 9d70c5e commit 945f9f6

31 files changed

+174
-344
lines changed

src/additions/java/mekanism/additions/client/AdditionsClientRegistration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import net.neoforged.neoforge.client.event.ModelEvent.RegisterAdditional;
3535
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
3636
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
37+
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
3738

3839
@EventBusSubscriber(modid = MekanismAdditions.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
3940
public class AdditionsClientRegistration {
@@ -74,6 +75,11 @@ public static void registerLayer(EntityRenderersEvent.RegisterLayerDefinitions e
7475
event.registerLayerDefinition(ModelBabyCreeper.ARMOR_LAYER, () -> ModelBabyCreeper.createBodyLayer(new CubeDeformation(1)));
7576
}
7677

78+
@SubscribeEvent
79+
public static void registerClientExtensions(RegisterClientExtensionsEvent event) {
80+
ClientRegistrationUtil.registerBlockExtensions(event, AdditionsBlocks.BLOCKS);
81+
}
82+
7783
@SubscribeEvent
7884
public static void registerAdditionalModels(RegisterAdditional event) {
7985
AdditionsModelCache.INSTANCE.setup(event);

src/generators/java/mekanism/generators/client/GeneratorsClientRegistration.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import mekanism.client.ClientRegistration;
55
import mekanism.client.ClientRegistrationUtil;
66
import mekanism.client.model.baked.ExtensionBakedModel.TransformedBakedModel;
7+
import mekanism.client.render.RenderPropertiesProvider.MekRenderProperties;
78
import mekanism.client.render.lib.QuadTransformation;
89
import mekanism.common.inventory.container.tile.MekanismTileContainer;
910
import mekanism.generators.client.gui.GuiBioGenerator;
@@ -49,13 +50,13 @@
4950
import net.neoforged.api.distmarker.Dist;
5051
import net.neoforged.bus.api.SubscribeEvent;
5152
import net.neoforged.fml.common.EventBusSubscriber;
52-
import net.neoforged.fml.common.Mod;
5353
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
5454
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
5555
import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent;
5656
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
5757
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
5858
import net.neoforged.neoforge.client.event.TextureAtlasStitchedEvent;
59+
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
5960

6061
@EventBusSubscriber(modid = MekanismGenerators.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
6162
public class GeneratorsClientRegistration {
@@ -146,4 +147,11 @@ public static void onStitch(TextureAtlasStitchedEvent event) {
146147
RenderFissionReactor.resetCachedModels();
147148
GeneratorsSpecialColors.GUI_OBJECTS.parse(MekanismGenerators.rl("textures/colormap/gui_objects.png"));
148149
}
150+
151+
@SubscribeEvent
152+
public static void registerClientExtensions(RegisterClientExtensionsEvent event) {
153+
event.registerItem(new MekRenderProperties(RenderWindGeneratorItem.RENDERER), GeneratorsBlocks.WIND_GENERATOR.asItem());
154+
ClientRegistrationUtil.registerBlockExtensions(event, GeneratorsBlocks.BLOCKS);
155+
ClientRegistrationUtil.registerFluidExtensions(event, GeneratorsFluids.FLUIDS);
156+
}
149157
}

src/generators/java/mekanism/generators/client/render/GeneratorsRenderPropertiesProvider.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/generators/java/mekanism/generators/common/item/generator/ItemBlockWindGenerator.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/generators/java/mekanism/generators/common/registries/GeneratorsBlocks.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import mekanism.generators.common.content.blocktype.Generator;
2727
import mekanism.generators.common.item.ItemBlockFissionLogicAdapter;
2828
import mekanism.generators.common.item.ItemBlockFusionLogicAdapter;
29-
import mekanism.generators.common.item.generator.ItemBlockWindGenerator;
3029
import mekanism.generators.common.tile.TileEntityAdvancedSolarGenerator;
3130
import mekanism.generators.common.tile.TileEntityBioGenerator;
3231
import mekanism.generators.common.tile.TileEntityGasGenerator;
@@ -105,7 +104,7 @@ private GeneratorsBlocks() {
105104
public static final BlockRegistryObject<BlockTileModel<TileEntityAdvancedSolarGenerator, Generator<TileEntityAdvancedSolarGenerator>>, ItemBlockTooltip<BlockTileModel<TileEntityAdvancedSolarGenerator, Generator<TileEntityAdvancedSolarGenerator>>>> ADVANCED_SOLAR_GENERATOR =
106105
BLOCKS.registerDetails("advanced_solar_generator", () -> new BlockTileModel<>(GeneratorsBlockTypes.ADVANCED_SOLAR_GENERATOR, properties -> properties.mapColor(MapColor.COLOR_BLUE)))
107106
.forItemHolder(holder -> holder.addAttachmentOnlyContainers(ContainerType.ITEM, () -> ItemSlotsBuilder.builder().addEnergy().build()));
108-
public static final BlockRegistryObject<BlockTileModel<TileEntityWindGenerator, Generator<TileEntityWindGenerator>>, ItemBlockWindGenerator> WIND_GENERATOR = BLOCKS.register("wind_generator", () -> new BlockTileModel<>(GeneratorsBlockTypes.WIND_GENERATOR, properties -> properties.mapColor(MapColor.METAL)), ItemBlockWindGenerator::new)
107+
public static final BlockRegistryObject<BlockTileModel<TileEntityWindGenerator, Generator<TileEntityWindGenerator>>, ItemBlockTooltip<BlockTileModel<TileEntityWindGenerator, Generator<TileEntityWindGenerator>>>> WIND_GENERATOR = BLOCKS.registerDetails("wind_generator", () -> new BlockTileModel<>(GeneratorsBlockTypes.WIND_GENERATOR, properties -> properties.mapColor(MapColor.METAL)))
109108
.forItemHolder(holder -> holder.addAttachmentOnlyContainers(ContainerType.ITEM, () -> ItemSlotsBuilder.builder().addEnergy().build()));
110109

111110
public static final BlockRegistryObject<BlockTurbineRotor, ItemBlockTooltip<BlockTurbineRotor>> TURBINE_ROTOR = registerTooltipBlock("turbine_rotor", BlockTurbineRotor::new);

src/main/java/mekanism/client/ClientRegistration.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,13 @@
102102
import mekanism.client.particle.RadiationParticle;
103103
import mekanism.client.particle.ScubaBubbleParticle;
104104
import mekanism.client.render.MekanismRenderer;
105+
import mekanism.client.render.RenderPropertiesProvider;
106+
import mekanism.client.render.RenderPropertiesProvider.MekCustomArmorRenderProperties;
107+
import mekanism.client.render.RenderPropertiesProvider.MekRenderProperties;
105108
import mekanism.client.render.RenderTickHandler;
106109
import mekanism.client.render.armor.FreeRunnerArmor;
107110
import mekanism.client.render.armor.JetpackArmor;
111+
import mekanism.client.render.armor.MekaSuitArmor;
108112
import mekanism.client.render.armor.ScubaMaskArmor;
109113
import mekanism.client.render.armor.ScubaTankArmor;
110114
import mekanism.client.render.entity.RenderFlame;
@@ -116,6 +120,7 @@
116120
import mekanism.client.render.item.MekaSuitBarDecorator;
117121
import mekanism.client.render.item.TransmitterTypeDecorator;
118122
import mekanism.client.render.item.block.RenderEnergyCubeItem;
123+
import mekanism.client.render.item.block.RenderFluidTankItem;
119124
import mekanism.client.render.item.gear.RenderAtomicDisassembler;
120125
import mekanism.client.render.item.gear.RenderFlameThrower;
121126
import mekanism.client.render.item.gear.RenderFreeRunners;
@@ -212,6 +217,7 @@
212217
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
213218
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
214219
import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent;
220+
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
215221
import net.neoforged.neoforge.client.gui.VanillaGuiLayers;
216222
import net.neoforged.neoforge.client.model.SeparateTransformsModel;
217223
import net.neoforged.neoforge.common.NeoForge;
@@ -589,6 +595,32 @@ public static void registerItemDecorations(RegisterItemDecorationsEvent event) {
589595
MekanismBlocks.BASIC_UNIVERSAL_CABLE, MekanismBlocks.ADVANCED_UNIVERSAL_CABLE, MekanismBlocks.ELITE_UNIVERSAL_CABLE, MekanismBlocks.ULTIMATE_UNIVERSAL_CABLE);
590596
}
591597

598+
@SubscribeEvent
599+
public static void registerClientExtensions(RegisterClientExtensionsEvent event) {
600+
event.registerItem(new MekCustomArmorRenderProperties(RenderJetpack.ARMORED_RENDERER, JetpackArmor.ARMORED_JETPACK), MekanismItems.ARMORED_JETPACK.get());
601+
event.registerItem(new MekCustomArmorRenderProperties(RenderJetpack.RENDERER, JetpackArmor.JETPACK), MekanismItems.JETPACK.get());
602+
event.registerItem(new MekCustomArmorRenderProperties(RenderFreeRunners.ARMORED_RENDERER, FreeRunnerArmor.ARMORED_FREE_RUNNERS), MekanismItems.ARMORED_FREE_RUNNERS.get());
603+
event.registerItem(new MekCustomArmorRenderProperties(RenderFreeRunners.RENDERER, FreeRunnerArmor.FREE_RUNNERS), MekanismItems.FREE_RUNNERS.get());
604+
event.registerItem(new MekCustomArmorRenderProperties(RenderScubaMask.RENDERER, ScubaMaskArmor.SCUBA_MASK), MekanismItems.SCUBA_MASK.get());
605+
event.registerItem(new MekCustomArmorRenderProperties(RenderScubaTank.RENDERER, ScubaTankArmor.SCUBA_TANK), MekanismItems.SCUBA_TANK.get());
606+
event.registerItem(new MekRenderProperties(RenderAtomicDisassembler.RENDERER), MekanismItems.ATOMIC_DISASSEMBLER.get());
607+
event.registerItem(new MekRenderProperties(RenderFlameThrower.RENDERER), MekanismItems.FLAMETHROWER.get());
608+
609+
event.registerItem(MekaSuitArmor.HELMET, MekanismItems.MEKASUIT_HELMET.get());
610+
event.registerItem(MekaSuitArmor.BODYARMOR, MekanismItems.MEKASUIT_BODYARMOR.get());
611+
event.registerItem(MekaSuitArmor.PANTS, MekanismItems.MEKASUIT_PANTS.get());
612+
event.registerItem(MekaSuitArmor.BOOTS, MekanismItems.MEKASUIT_BOOTS.get());
613+
614+
ClientRegistrationUtil.registerItemExtensions(event, new MekRenderProperties(RenderEnergyCubeItem.RENDERER), MekanismBlocks.BASIC_ENERGY_CUBE,
615+
MekanismBlocks.ADVANCED_ENERGY_CUBE, MekanismBlocks.ELITE_ENERGY_CUBE, MekanismBlocks.ULTIMATE_ENERGY_CUBE, MekanismBlocks.CREATIVE_ENERGY_CUBE);
616+
ClientRegistrationUtil.registerItemExtensions(event, new MekRenderProperties(RenderFluidTankItem.RENDERER), MekanismBlocks.BASIC_FLUID_TANK,
617+
MekanismBlocks.ADVANCED_FLUID_TANK, MekanismBlocks.ELITE_FLUID_TANK, MekanismBlocks.ULTIMATE_FLUID_TANK, MekanismBlocks.CREATIVE_FLUID_TANK);
618+
619+
event.registerBlock(RenderPropertiesProvider.boundingParticles(), MekanismBlocks.BOUNDING_BLOCK.getBlock());
620+
ClientRegistrationUtil.registerBlockExtensions(event, MekanismBlocks.BLOCKS);
621+
ClientRegistrationUtil.registerFluidExtensions(event, MekanismFluids.FLUIDS);
622+
}
623+
592624
@SubscribeEvent
593625
public static void addLayers(EntityRenderersEvent.AddLayers event) {
594626
//Add our own custom armor and elytra layer to the various player renderers

src/main/java/mekanism/client/ClientRegistrationUtil.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
11
package mekanism.client;
22

3+
import com.mojang.blaze3d.shaders.FogShape;
4+
import com.mojang.blaze3d.systems.RenderSystem;
35
import java.lang.ref.WeakReference;
46
import mekanism.api.providers.IBlockProvider;
57
import mekanism.api.providers.IItemProvider;
68
import mekanism.api.text.EnumColor;
79
import mekanism.client.gui.machine.GuiAdvancedElectricMachine;
810
import mekanism.client.gui.machine.GuiElectricMachine;
911
import mekanism.client.render.MekanismRenderer;
12+
import mekanism.client.render.RenderPropertiesProvider;
13+
import mekanism.common.block.BlockMekanism;
1014
import mekanism.common.block.interfaces.IColoredBlock;
1115
import mekanism.common.inventory.container.tile.MekanismTileContainer;
1216
import mekanism.common.item.interfaces.IColoredItem;
17+
import mekanism.common.registration.impl.BlockDeferredRegister;
1318
import mekanism.common.registration.impl.ContainerTypeRegistryObject;
1419
import mekanism.common.registration.impl.FluidDeferredRegister;
20+
import mekanism.common.registration.impl.FluidDeferredRegister.MekanismFluidType;
1521
import mekanism.common.registration.impl.TileEntityTypeRegistryObject;
1622
import mekanism.common.registries.MekanismDataComponents;
1723
import mekanism.common.tile.prefab.TileEntityAdvancedElectricMachine;
1824
import mekanism.common.tile.prefab.TileEntityElectricMachine;
25+
import net.minecraft.client.Camera;
1926
import net.minecraft.client.KeyMapping;
27+
import net.minecraft.client.Minecraft;
2028
import net.minecraft.client.color.block.BlockColor;
2129
import net.minecraft.client.color.item.ItemColor;
2230
import net.minecraft.client.gui.screens.MenuScreens.ScreenConstructor;
2331
import net.minecraft.client.gui.screens.Screen;
2432
import net.minecraft.client.gui.screens.inventory.MenuAccess;
33+
import net.minecraft.client.multiplayer.ClientLevel;
34+
import net.minecraft.client.renderer.FogRenderer;
2535
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
2636
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
2737
import net.minecraft.client.renderer.item.ItemProperties;
@@ -40,9 +50,15 @@
4050
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
4151
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
4252
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
53+
import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
54+
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
55+
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
4356
import net.neoforged.neoforge.client.model.DynamicFluidContainerModel;
57+
import net.neoforged.neoforge.fluids.FluidType;
58+
import net.neoforged.neoforge.registries.DeferredHolder;
4459
import org.jetbrains.annotations.NotNull;
4560
import org.jetbrains.annotations.Nullable;
61+
import org.joml.Vector3f;
4662

4763
public class ClientRegistrationUtil {
4864

@@ -178,4 +194,76 @@ public static void registerIColoredBlockHandler(RegisterColorHandlersEvent event
178194
public static void registerIColoredItemHandler(RegisterColorHandlersEvent.Item event, IItemProvider... items) {
179195
registerItemColorHandler(event, COLORED_ITEM_COLOR, items);
180196
}
197+
198+
public static void registerItemExtensions(RegisterClientExtensionsEvent event, IClientItemExtensions extension, IItemProvider... items) {
199+
for (IItemProvider item : items) {
200+
event.registerItem(extension, item.asItem());
201+
}
202+
}
203+
204+
public static void registerBlockExtensions(RegisterClientExtensionsEvent event, BlockDeferredRegister allBlocks) {
205+
for (DeferredHolder<Block, ? extends Block> primaryEntry : allBlocks.getPrimaryEntries()) {
206+
if (primaryEntry.get() instanceof BlockMekanism) {
207+
event.registerBlock(RenderPropertiesProvider.PARTICLE_HANDLER, primaryEntry.get());
208+
}
209+
}
210+
}
211+
212+
public static void registerFluidExtensions(RegisterClientExtensionsEvent event, FluidDeferredRegister allFluids) {
213+
for (DeferredHolder<FluidType, ? extends FluidType> fluidTypeEntry : allFluids.getFluidTypeEntries()) {
214+
if (fluidTypeEntry.get() instanceof MekanismFluidType fluidType) {
215+
event.registerFluidType(new IClientFluidTypeExtensions() {
216+
@NotNull
217+
@Override
218+
public ResourceLocation getStillTexture() {
219+
return fluidType.stillTexture;
220+
}
221+
222+
@NotNull
223+
@Override
224+
public ResourceLocation getFlowingTexture() {
225+
return fluidType.flowingTexture;
226+
}
227+
228+
@Override
229+
public ResourceLocation getOverlayTexture() {
230+
return fluidType.overlayTexture;
231+
}
232+
233+
@Nullable
234+
@Override
235+
public ResourceLocation getRenderOverlayTexture(Minecraft mc) {
236+
return fluidType.renderOverlayTexture;
237+
}
238+
239+
@NotNull
240+
@Override
241+
public Vector3f modifyFogColor(@NotNull Camera camera, float partialTick, @NotNull ClientLevel level, int renderDistance, float darkenWorldAmount,
242+
@NotNull Vector3f fluidFogColor) {
243+
return new Vector3f(MekanismRenderer.getRed(getTintColor()), MekanismRenderer.getGreen(getTintColor()), MekanismRenderer.getBlue(getTintColor()));
244+
}
245+
246+
@Override
247+
public void modifyFogRender(@NotNull Camera camera, @NotNull FogRenderer.FogMode mode, float renderDistance, float partialTick, float nearDistance,
248+
float farDistance, @NotNull FogShape shape) {
249+
//Copy of logic for water except always treating it as if it was a player who has no water vision
250+
// and does not take the biome's closer water fog into account
251+
farDistance = 24F;
252+
if (farDistance > renderDistance) {
253+
farDistance = renderDistance;
254+
shape = FogShape.CYLINDER;
255+
}
256+
RenderSystem.setShaderFogStart(-8);
257+
RenderSystem.setShaderFogEnd(farDistance);
258+
RenderSystem.setShaderFogShape(shape);
259+
}
260+
261+
@Override
262+
public int getTintColor() {
263+
return fluidType.color;
264+
}
265+
}, fluidType);
266+
}
267+
}
268+
}
181269
}

0 commit comments

Comments
 (0)