mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-06-28 13:19:09 +02:00
129 lines
5.8 KiB
Java
129 lines
5.8 KiB
Java
package de.ellpeck.naturesaura.proxy;
|
|
|
|
import de.ellpeck.naturesaura.Helper;
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
|
import de.ellpeck.naturesaura.blocks.ModBlocks;
|
|
import de.ellpeck.naturesaura.compat.Compat;
|
|
import de.ellpeck.naturesaura.entities.ModEntities;
|
|
import de.ellpeck.naturesaura.entities.render.RenderEffectInhibitor;
|
|
import de.ellpeck.naturesaura.entities.render.RenderMoverMinecart;
|
|
import de.ellpeck.naturesaura.entities.render.RenderStub;
|
|
import de.ellpeck.naturesaura.events.ClientEvents;
|
|
import de.ellpeck.naturesaura.gui.GuiEnderCrate;
|
|
import de.ellpeck.naturesaura.gui.ModContainers;
|
|
import de.ellpeck.naturesaura.items.ItemColorChanger;
|
|
import de.ellpeck.naturesaura.items.ModItems;
|
|
import de.ellpeck.naturesaura.particles.ParticleHandler;
|
|
import de.ellpeck.naturesaura.particles.ParticleMagic;
|
|
import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
|
|
import de.ellpeck.naturesaura.reg.IColorProvidingItem;
|
|
import de.ellpeck.naturesaura.reg.ITESRProvider;
|
|
import de.ellpeck.naturesaura.reg.ModRegistry;
|
|
import de.ellpeck.naturesaura.renderers.PlayerLayerTrinkets;
|
|
import de.ellpeck.naturesaura.renderers.SupporterFancyHandler;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.screens.MenuScreens;
|
|
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
|
import net.minecraft.client.renderer.RenderType;
|
|
import net.minecraft.client.renderer.entity.EntityRenderer;
|
|
import net.minecraft.client.renderer.entity.EntityRenderers;
|
|
import net.minecraft.client.renderer.entity.ThrownItemRenderer;
|
|
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
|
import net.minecraft.client.renderer.item.ItemProperties;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.world.item.Item;
|
|
import net.minecraft.world.level.block.Block;
|
|
import net.neoforged.neoforge.common.NeoForge;
|
|
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
|
|
|
public class ClientProxy implements IProxy {
|
|
|
|
@Override
|
|
public void preInit(FMLCommonSetupEvent event) {
|
|
NeoForge.EVENT_BUS.register(new ClientEvents());
|
|
Compat.setupClient();
|
|
MenuScreens.register(ModContainers.ENDER_CRATE, GuiEnderCrate::new);
|
|
MenuScreens.register(ModContainers.ENDER_ACCESS, GuiEnderCrate::new);
|
|
|
|
ItemProperties.register(ModItems.COLOR_CHANGER, new ResourceLocation(NaturesAura.MOD_ID, "fill_mode"),
|
|
(stack, level, entity, i) -> ItemColorChanger.isFillMode(stack) ? 1 : 0);
|
|
ItemProperties.register(ModItems.COLOR_CHANGER, new ResourceLocation(NaturesAura.MOD_ID, "has_color"),
|
|
(stack, level, entity, i) -> ItemColorChanger.getStoredColor(stack) != null ? 1 : 0);
|
|
for (var item : new Item[]{ModItems.SKY_AXE, ModItems.DEPTH_PICKAXE, ModItems.DEPTH_AXE}) {
|
|
ItemProperties.register(item, new ResourceLocation(NaturesAura.MOD_ID, "enabled"),
|
|
(stack, level, entity, i) -> Helper.isToolEnabled(stack) ? 1 : 0);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void init(FMLCommonSetupEvent event) {
|
|
var skinMap = Minecraft.getInstance().getEntityRenderDispatcher().getSkinMap();
|
|
for (var render : new EntityRenderer[]{skinMap.get("default"), skinMap.get("slim")}) {
|
|
if (render instanceof PlayerRenderer living)
|
|
living.addLayer(new PlayerLayerTrinkets(living));
|
|
}
|
|
new SupporterFancyHandler();
|
|
|
|
for (var item : ModRegistry.ALL_ITEMS) {
|
|
if (item instanceof IColorProvidingBlock color)
|
|
this.addColorProvidingBlock(color);
|
|
if (item instanceof IColorProvidingItem color)
|
|
this.addColorProvidingItem(color);
|
|
if (item instanceof ITESRProvider<?> provider)
|
|
provider.registerTESR();
|
|
}
|
|
|
|
EntityRenderers.register(ModEntities.MOVER_CART, RenderMoverMinecart::new);
|
|
EntityRenderers.register(ModEntities.EFFECT_INHIBITOR, RenderEffectInhibitor::new);
|
|
EntityRenderers.register(ModEntities.LIGHT_PROJECTILE, RenderStub::new);
|
|
EntityRenderers.register(ModEntities.STRUCTURE_FINDER, c -> new ThrownItemRenderer<>(c, 1, true));
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("removal")
|
|
public void postInit(FMLCommonSetupEvent event) {
|
|
// TODO this uses a vanilla model so we can't just add the json entry to it
|
|
ItemBlockRenderTypes.setRenderLayer(ModBlocks.GOLD_POWDER, RenderType.cutoutMipped());
|
|
}
|
|
|
|
@Override
|
|
public void spawnMagicParticle(double posX, double posY, double posZ, double motionX, double motionY, double motionZ, int color, float scale, int maxAge, float gravity, boolean collision, boolean fade) {
|
|
ParticleHandler.spawnParticle(() -> new ParticleMagic(Minecraft.getInstance().level,
|
|
posX, posY, posZ,
|
|
motionX, motionY, motionZ,
|
|
color, scale, maxAge, gravity, collision, fade, ParticleHandler.depthEnabled), posX, posY, posZ);
|
|
}
|
|
|
|
@Override
|
|
public void setParticleDepth(boolean depth) {
|
|
ParticleHandler.depthEnabled = depth;
|
|
}
|
|
|
|
@Override
|
|
public void setParticleSpawnRange(int range) {
|
|
ParticleHandler.range = range;
|
|
}
|
|
|
|
@Override
|
|
public void setParticleCulling(boolean cull) {
|
|
ParticleHandler.culling = cull;
|
|
}
|
|
|
|
private void addColorProvidingItem(IColorProvidingItem item) {
|
|
var colors = Minecraft.getInstance().getItemColors();
|
|
var color = item.getItemColor();
|
|
|
|
// TODO use event
|
|
if (item instanceof Item) {
|
|
colors.register(color, (Item) item);
|
|
} else if (item instanceof Block) {
|
|
colors.register(color, (Block) item);
|
|
}
|
|
}
|
|
|
|
private void addColorProvidingBlock(IColorProvidingBlock block) {
|
|
if (block instanceof Block)
|
|
Minecraft.getInstance().getBlockColors().register(block.getBlockColor(), (Block) block);
|
|
}
|
|
|
|
} |