ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditionsClient.java

132 lines
8.4 KiB
Java
Raw Normal View History

2021-02-27 21:24:26 +01:00
/*
* This file ("ActuallyAdditions.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod;
2021-08-31 00:44:39 +02:00
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.blocks.render.*;
2021-02-27 21:24:26 +01:00
import de.ellpeck.actuallyadditions.mod.entity.RenderWorm;
import de.ellpeck.actuallyadditions.mod.event.ClientEvents;
2022-01-05 18:31:40 +01:00
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
2021-02-27 21:24:26 +01:00
import de.ellpeck.actuallyadditions.mod.inventory.ActuallyContainers;
import de.ellpeck.actuallyadditions.mod.inventory.gui.*;
2023-01-16 22:47:31 +01:00
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
2021-02-27 21:24:26 +01:00
import de.ellpeck.actuallyadditions.mod.misc.special.SpecialRenderInit;
2023-12-20 22:02:25 +01:00
import de.ellpeck.actuallyadditions.mod.particle.ActuallyParticles;
import de.ellpeck.actuallyadditions.mod.particle.ParticleBeam;
import de.ellpeck.actuallyadditions.mod.particle.ParticleLaserItem;
2024-03-14 01:53:37 +01:00
import de.ellpeck.actuallyadditions.mod.patchouli.PatchouliPages;
2021-02-27 21:24:26 +01:00
import net.minecraft.client.Minecraft;
2024-03-02 21:23:08 +01:00
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
2022-01-05 18:31:40 +01:00
import net.minecraft.client.renderer.RenderType;
2024-03-02 21:23:08 +01:00
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.core.BlockPos;
import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.phys.BlockHitResult;
2024-03-04 20:21:48 +01:00
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent;
2024-03-04 20:21:48 +01:00
import net.neoforged.neoforge.common.NeoForge;
2021-02-27 21:24:26 +01:00
public class ActuallyAdditionsClient {
public static void setupMenus(RegisterMenuScreensEvent evt) {
evt.register(ActuallyContainers.SACK_CONTAINER.get(), SackGui::new);
evt.register(ActuallyContainers.VOID_SACK_CONTAINER.get(), VoidSackGui::new);
evt.register(ActuallyContainers.BIO_REACTOR_CONTAINER.get(), GuiBioReactor::new);
evt.register(ActuallyContainers.BREAKER_CONTAINER.get(), GuiBreaker::new);
evt.register(ActuallyContainers.CANOLA_PRESS_CONTAINER.get(), GuiCanolaPress::new);
evt.register(ActuallyContainers.COAL_GENERATOR_CONTAINER.get(), GuiCoalGenerator::new);
evt.register(ActuallyContainers.COFFEE_MACHINE_CONTAINER.get(), GuiCoffeeMachine::new);
evt.register(ActuallyContainers.DIRECTIONAL_BREAKER_CONTAINER.get(), GuiDirectionalBreaker::new);
evt.register(ActuallyContainers.DRILL_CONTAINER.get(), GuiDrill::new);
evt.register(ActuallyContainers.DROPPER_CONTAINER.get(), GuiDropper::new);
evt.register(ActuallyContainers.ENERVATOR_CONTAINER.get(), GuiEnervator::new);
evt.register(ActuallyContainers.ENERGIZER_CONTAINER.get(), GuiEnergizer::new);
evt.register(ActuallyContainers.FARMER_CONTAINER.get(), GuiFarmer::new);
evt.register(ActuallyContainers.FEEDER_CONTAINER.get(), GuiFeeder::new);
evt.register(ActuallyContainers.FERMENTING_BARREL_CONTAINER.get(), GuiFermentingBarrel::new);
evt.register(ActuallyContainers.FILTER_CONTAINER.get(), GuiFilter::new);
evt.register(ActuallyContainers.FIREWORK_BOX_CONTAINER.get(), GuiFireworkBox::new);
evt.register(ActuallyContainers.FLUID_COLLECTOR_CONTAINER.get(), GuiFluidCollector::new);
evt.register(ActuallyContainers.FURNACE_DOUBLE_CONTAINER.get(), GuiFurnaceDouble::new);
evt.register(ActuallyContainers.GRINDER_CONTAINER.get(), CrusherScreen::new);
evt.register(ActuallyContainers.LASER_RELAY_ITEM_WHITELIST_CONTAINER.get(), GuiLaserRelayItemWhitelist::new);
evt.register(ActuallyContainers.MINER_CONTAINER.get(), GuiMiner::new);
evt.register(ActuallyContainers.OIL_GENERATOR_CONTAINER.get(), GuiOilGenerator::new);
evt.register(ActuallyContainers.PHANTOM_PLACER_CONTAINER.get(), GuiPhantomPlacer::new);
evt.register(ActuallyContainers.RANGED_COLLECTOR_CONTAINER.get(), GuiRangedCollector::new);
evt.register(ActuallyContainers.XPSOLIDIFIER_CONTAINER.get(), GuiXPSolidifier::new);
}
2021-02-27 21:24:26 +01:00
2023-01-16 22:47:31 +01:00
public static void setup(FMLClientSetupEvent event) {
2021-02-27 21:24:26 +01:00
// From old proxy
2024-03-04 20:21:48 +01:00
NeoForge.EVENT_BUS.register(new ClientEvents());
NeoForge.EVENT_BUS.register(new SpecialRenderInit());
2021-02-27 21:24:26 +01:00
2023-01-16 22:47:31 +01:00
event.enqueueWork(() ->
2024-03-02 21:23:08 +01:00
ItemProperties.register(ActuallyItems.WORM.get(), new ResourceLocation(ActuallyAdditions.MODID, "snail"),
(stack, level, entity, tintIndex) -> "snail mail".equalsIgnoreCase(stack.getHoverName().getString()) ? 1F : 0F));
2023-01-16 22:47:31 +01:00
2022-01-05 18:31:40 +01:00
setupRenderLayers();
2024-03-14 01:53:37 +01:00
PatchouliPages.init();
2022-01-05 18:31:40 +01:00
}
private static void setupRenderLayers() {
2024-03-02 21:23:08 +01:00
ItemBlockRenderTypes.setRenderLayer(InitFluids.CANOLA_OIL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.CANOLA_OIL.getFlowing(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.REFINED_CANOLA_OIL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.REFINED_CANOLA_OIL.getFlowing(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.CRYSTALLIZED_OIL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.CRYSTALLIZED_OIL.getFlowing(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.EMPOWERED_OIL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(InitFluids.EMPOWERED_OIL.getFlowing(), RenderType.translucent());
2022-01-08 19:54:43 +01:00
2024-03-02 21:23:08 +01:00
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.CANOLA.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.RICE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.FLAX.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.COFFEE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ActuallyBlocks.GREENHOUSE_GLASS.get(), RenderType.cutout());
2021-02-27 21:24:26 +01:00
}
2024-03-02 21:23:08 +01:00
public static void setupSpecialRenders(EntityRenderersEvent.RegisterRenderers event) {
event.registerBlockEntityRenderer(ActuallyBlocks.ATOMIC_RECONSTRUCTOR.getTileEntityType(), ReconstructorRenderer::new);
event.registerBlockEntityRenderer(ActuallyBlocks.DISPLAY_STAND.getTileEntityType(), RenderDisplayStand::new);
event.registerBlockEntityRenderer(ActuallyBlocks.EMPOWERER.getTileEntityType(), RenderEmpowerer::new);
event.registerBlockEntityRenderer(ActuallyBlocks.BATTERY_BOX.getTileEntityType(), RenderBatteryBox::new);
2021-02-27 21:24:26 +01:00
2024-03-02 21:23:08 +01:00
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_ADVANCED.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_EXTREME.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_ITEM.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_ITEM_ADVANCED.getTileEntityType(), RenderLaserRelay::new);
event.registerBlockEntityRenderer(ActuallyBlocks.LASER_RELAY_FLUIDS.getTileEntityType(), RenderLaserRelay::new);
2023-01-16 00:47:13 +01:00
2024-03-02 21:23:08 +01:00
event.registerEntityRenderer(ActuallyAdditions.ENTITY_WORM.get(), RenderWorm::new);
2021-02-27 21:24:26 +01:00
}
public static void registerParticleFactories(RegisterParticleProvidersEvent event) {
event.registerSpriteSet(ActuallyParticles.LASER_ITEM.get(), ParticleLaserItem.Factory::new);
event.registerSpriteSet(ActuallyParticles.BEAM.get(), ParticleBeam.Factory::new);
2023-01-19 16:27:56 +01:00
}
2021-02-27 21:24:26 +01:00
// TODO: [port] validate that this works
2021-11-21 20:49:33 +01:00
public static void sendBreakPacket(BlockPos pos) {
2024-03-02 21:23:08 +01:00
ClientPacketListener connection = Minecraft.getInstance().getConnection();
2021-02-27 21:24:26 +01:00
assert connection != null;
assert Minecraft.getInstance().hitResult != null;
2024-03-02 21:23:08 +01:00
connection.send(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.STOP_DESTROY_BLOCK, pos, ((BlockHitResult) Minecraft.getInstance().hitResult).getDirection()));
2021-02-27 21:24:26 +01:00
}
}