2020-10-29 19:50:03 +00:00
|
|
|
package wayoftime.bloodmagic.client;
|
|
|
|
|
2020-11-21 15:24:35 +00:00
|
|
|
import net.minecraft.client.Minecraft;
|
2020-10-29 19:50:03 +00:00
|
|
|
import net.minecraft.client.gui.ScreenManager;
|
2020-10-31 17:42:28 +00:00
|
|
|
import net.minecraft.client.renderer.RenderType;
|
|
|
|
import net.minecraft.client.renderer.RenderTypeLookup;
|
2020-10-29 19:50:03 +00:00
|
|
|
import net.minecraft.client.world.ClientWorld;
|
|
|
|
import net.minecraft.entity.LivingEntity;
|
|
|
|
import net.minecraft.item.IItemPropertyGetter;
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
import net.minecraft.item.ItemModelsProperties;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraftforge.api.distmarker.Dist;
|
2021-01-12 13:27:47 +00:00
|
|
|
import net.minecraftforge.client.event.ColorHandlerEvent;
|
2020-10-29 19:50:03 +00:00
|
|
|
import net.minecraftforge.client.event.ModelRegistryEvent;
|
|
|
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
2020-10-31 17:42:28 +00:00
|
|
|
import net.minecraftforge.fml.DeferredWorkQueue;
|
2020-10-29 19:50:03 +00:00
|
|
|
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
2020-10-31 17:42:28 +00:00
|
|
|
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
2020-10-29 19:50:03 +00:00
|
|
|
import net.minecraftforge.fml.common.Mod;
|
|
|
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
|
|
|
import wayoftime.bloodmagic.BloodMagic;
|
2021-01-12 13:27:47 +00:00
|
|
|
import wayoftime.bloodmagic.anointment.AnointmentColor;
|
2020-11-29 02:41:28 +00:00
|
|
|
import wayoftime.bloodmagic.api.compat.IMultiWillTool;
|
2020-11-21 15:24:35 +00:00
|
|
|
import wayoftime.bloodmagic.client.model.MimicColor;
|
2020-12-28 21:28:33 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.alchemyarray.BeaconAlchemyCircleRenderer;
|
2020-12-30 22:57:33 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.alchemyarray.DayAlchemyCircleRenderer;
|
2020-12-28 21:28:33 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.alchemyarray.LowStaticAlchemyCircleRenderer;
|
2020-12-30 22:57:33 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.alchemyarray.NightAlchemyCircleRenderer;
|
2020-12-05 16:26:01 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.alchemyarray.StaticAlchemyCircleRenderer;
|
2020-10-29 19:50:03 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.block.RenderAlchemyArray;
|
|
|
|
import wayoftime.bloodmagic.client.render.block.RenderAltar;
|
2020-11-03 22:23:44 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.block.RenderDemonCrucible;
|
2020-10-31 17:42:28 +00:00
|
|
|
import wayoftime.bloodmagic.client.render.entity.BloodLightRenderer;
|
|
|
|
import wayoftime.bloodmagic.client.render.entity.SoulSnareRenderer;
|
2020-10-29 19:50:03 +00:00
|
|
|
import wayoftime.bloodmagic.client.screens.ScreenAlchemicalReactionChamber;
|
2020-10-31 17:42:28 +00:00
|
|
|
import wayoftime.bloodmagic.client.screens.ScreenAlchemyTable;
|
2020-10-29 19:50:03 +00:00
|
|
|
import wayoftime.bloodmagic.client.screens.ScreenSoulForge;
|
|
|
|
import wayoftime.bloodmagic.common.block.BloodMagicBlocks;
|
|
|
|
import wayoftime.bloodmagic.common.item.BloodMagicItems;
|
2020-11-14 00:44:57 +00:00
|
|
|
import wayoftime.bloodmagic.common.item.ItemSacrificialDagger;
|
2020-10-29 19:50:03 +00:00
|
|
|
import wayoftime.bloodmagic.common.item.sigil.ItemSigilToggleable;
|
|
|
|
import wayoftime.bloodmagic.common.item.soul.ItemSentientSword;
|
2020-10-31 17:42:28 +00:00
|
|
|
import wayoftime.bloodmagic.common.registries.BloodMagicEntityTypes;
|
2020-12-05 16:26:01 +00:00
|
|
|
import wayoftime.bloodmagic.core.registry.AlchemyArrayRendererRegistry;
|
2020-10-29 19:50:03 +00:00
|
|
|
import wayoftime.bloodmagic.tile.TileAlchemyArray;
|
|
|
|
import wayoftime.bloodmagic.tile.TileAltar;
|
2020-11-03 22:23:44 +00:00
|
|
|
import wayoftime.bloodmagic.tile.TileDemonCrucible;
|
2020-10-29 19:50:03 +00:00
|
|
|
|
|
|
|
@Mod.EventBusSubscriber(value = Dist.CLIENT, modid = BloodMagic.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
|
|
|
public class ClientEvents
|
|
|
|
{
|
|
|
|
@SubscribeEvent
|
|
|
|
public static void registerModels(ModelRegistryEvent event)
|
|
|
|
{
|
|
|
|
ClientRegistry.bindTileEntityRenderer(TileAltar.TYPE, RenderAltar::new);
|
|
|
|
ClientRegistry.bindTileEntityRenderer(TileAlchemyArray.TYPE, RenderAlchemyArray::new);
|
2020-11-03 22:23:44 +00:00
|
|
|
ClientRegistry.bindTileEntityRenderer(TileDemonCrucible.TYPE, RenderDemonCrucible::new);
|
2020-10-29 19:50:03 +00:00
|
|
|
// ClientRegistry.bindTileEntityRenderer(TileSoulForge.TYPE, RenderAlchemyArray::new);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void registerContainerScreens()
|
|
|
|
{
|
|
|
|
ScreenManager.registerFactory(BloodMagicBlocks.SOUL_FORGE_CONTAINER.get(), ScreenSoulForge::new);
|
|
|
|
ScreenManager.registerFactory(BloodMagicBlocks.ARC_CONTAINER.get(), ScreenAlchemicalReactionChamber::new);
|
2020-10-31 17:42:28 +00:00
|
|
|
ScreenManager.registerFactory(BloodMagicBlocks.ALCHEMY_TABLE_CONTAINER.get(), ScreenAlchemyTable::new);
|
2020-10-29 19:50:03 +00:00
|
|
|
}
|
|
|
|
|
2021-01-12 13:27:47 +00:00
|
|
|
public static void colorHandlerEvent(ColorHandlerEvent.Item event)
|
|
|
|
{
|
2021-01-12 16:44:41 +00:00
|
|
|
event.getItemColors().register(new AnointmentColor(), BloodMagicItems.MELEE_DAMAGE_ANOINTMENT.get(), BloodMagicItems.SILK_TOUCH_ANOINTMENT.get(), BloodMagicItems.FORTUNE_ANOINTMENT.get(), BloodMagicItems.HOLY_WATER_ANOINTMENT.get(), BloodMagicItems.HIDDEN_KNOWLEDGE_ANOINTMENT.get());
|
2021-01-12 13:27:47 +00:00
|
|
|
}
|
|
|
|
|
2020-10-31 17:42:28 +00:00
|
|
|
@SuppressWarnings("deprecation")
|
|
|
|
public static void initClientEvents(FMLClientSetupEvent event)
|
2020-10-29 19:50:03 +00:00
|
|
|
{
|
2020-11-01 22:17:44 +00:00
|
|
|
RenderingRegistry.registerEntityRenderingHandler(BloodMagicEntityTypes.SNARE.getEntityType(), SoulSnareRenderer::new);
|
|
|
|
RenderingRegistry.registerEntityRenderingHandler(BloodMagicEntityTypes.BLOOD_LIGHT.getEntityType(), BloodLightRenderer::new);
|
|
|
|
|
2020-10-31 17:42:28 +00:00
|
|
|
DeferredWorkQueue.runLater(() -> {
|
|
|
|
RenderType rendertype = RenderType.getCutoutMipped();
|
|
|
|
RenderTypeLookup.setRenderLayer(BloodMagicBlocks.ALCHEMY_TABLE.get(), rendertype);
|
2020-11-21 14:54:13 +00:00
|
|
|
RenderTypeLookup.setRenderLayer(BloodMagicBlocks.GROWING_DOUBT.get(), rendertype);
|
2020-10-29 19:50:03 +00:00
|
|
|
|
2020-10-31 17:42:28 +00:00
|
|
|
ClientEvents.registerContainerScreens();
|
|
|
|
|
|
|
|
registerToggleableProperties(BloodMagicItems.GREEN_GROVE_SIGIL.get());
|
|
|
|
registerToggleableProperties(BloodMagicItems.FAST_MINER_SIGIL.get());
|
|
|
|
registerToggleableProperties(BloodMagicItems.MAGNETISM_SIGIL.get());
|
|
|
|
registerToggleableProperties(BloodMagicItems.ICE_SIGIL.get());
|
|
|
|
registerMultiWillTool(BloodMagicItems.SENTIENT_SWORD.get());
|
2020-11-09 02:35:26 +00:00
|
|
|
registerMultiWillTool(BloodMagicItems.SENTIENT_AXE.get());
|
|
|
|
registerMultiWillTool(BloodMagicItems.SENTIENT_PICKAXE.get());
|
|
|
|
registerMultiWillTool(BloodMagicItems.SENTIENT_SHOVEL.get());
|
2020-11-24 02:06:08 +00:00
|
|
|
registerMultiWillTool(BloodMagicItems.SENTIENT_SCYTHE.get());
|
2020-10-31 17:42:28 +00:00
|
|
|
registerMultiWillTool(BloodMagicItems.PETTY_GEM.get());
|
|
|
|
registerMultiWillTool(BloodMagicItems.LESSER_GEM.get());
|
|
|
|
registerMultiWillTool(BloodMagicItems.COMMON_GEM.get());
|
2020-11-05 21:10:50 +00:00
|
|
|
registerMultiWillTool(BloodMagicItems.GREATER_GEM.get());
|
2020-11-14 00:44:57 +00:00
|
|
|
registerSacrificialKnife(BloodMagicItems.SACRIFICIAL_DAGGER.get());
|
2020-10-31 17:42:28 +00:00
|
|
|
|
|
|
|
ItemModelsProperties.registerProperty(BloodMagicItems.SENTIENT_SWORD.get(), BloodMagic.rl("active"), new IItemPropertyGetter()
|
2020-10-29 19:50:03 +00:00
|
|
|
{
|
2020-10-31 17:42:28 +00:00
|
|
|
@Override
|
|
|
|
public float call(ItemStack stack, ClientWorld world, LivingEntity entity)
|
|
|
|
{
|
|
|
|
return ((ItemSentientSword) stack.getItem()).getActivated(stack) ? 1 : 0;
|
|
|
|
}
|
|
|
|
});
|
2020-11-21 15:24:35 +00:00
|
|
|
|
|
|
|
Minecraft.getInstance().getBlockColors().register(new MimicColor(), BloodMagicBlocks.MIMIC.get());
|
|
|
|
RenderTypeLookup.setRenderLayer(BloodMagicBlocks.MIMIC.get(), (RenderType) -> true);
|
2020-10-29 19:50:03 +00:00
|
|
|
});
|
2020-11-29 02:41:28 +00:00
|
|
|
|
2020-12-05 16:26:01 +00:00
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/movement"), new StaticAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/movementarray.png")));
|
2020-12-28 21:28:33 +00:00
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/updraft"), new BeaconAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/updraftarray.png")));
|
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/spike"), new LowStaticAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/spikearray.png")));
|
2020-12-30 22:57:33 +00:00
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/day"), new DayAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/sunarray.png"), BloodMagic.rl("textures/models/alchemyarrays/sunarrayspikes.png"), BloodMagic.rl("textures/models/alchemyarrays/sunarraycircle.png")));
|
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/night"), new NightAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/moonarrayoutside.png"), BloodMagic.rl("textures/models/alchemyarrays/moonarraysymbols.png"), BloodMagic.rl("textures/models/alchemyarrays/moonarrayinside.png")));
|
2020-12-31 20:50:14 +00:00
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/grove"), new BeaconAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/growthsigil.png")));
|
|
|
|
AlchemyArrayRendererRegistry.registerRenderer(BloodMagic.rl("array/bounce"), new LowStaticAlchemyCircleRenderer(BloodMagic.rl("textures/models/alchemyarrays/bouncearray.png")));
|
|
|
|
|
2020-10-29 19:50:03 +00:00
|
|
|
}
|
|
|
|
|
2020-10-31 17:42:28 +00:00
|
|
|
public static void registerItemModelProperties(FMLClientSetupEvent event)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-10-29 19:50:03 +00:00
|
|
|
public static void registerToggleableProperties(Item item)
|
|
|
|
{
|
|
|
|
ItemModelsProperties.registerProperty(item, BloodMagic.rl("active"), new IItemPropertyGetter()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public float call(ItemStack stack, ClientWorld world, LivingEntity entity)
|
|
|
|
{
|
|
|
|
Item item = stack.getItem();
|
|
|
|
if (item instanceof ItemSigilToggleable)
|
|
|
|
{
|
|
|
|
return ((ItemSigilToggleable) item).getActivated(stack) ? 1 : 0;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void registerMultiWillTool(Item item)
|
|
|
|
{
|
|
|
|
ItemModelsProperties.registerProperty(item, BloodMagic.rl("type"), new IItemPropertyGetter()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public float call(ItemStack stack, ClientWorld world, LivingEntity entity)
|
|
|
|
{
|
|
|
|
Item item = stack.getItem();
|
|
|
|
if (item instanceof IMultiWillTool)
|
|
|
|
{
|
|
|
|
return ((IMultiWillTool) item).getCurrentType(stack).ordinal();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-11-14 00:44:57 +00:00
|
|
|
|
|
|
|
public static void registerSacrificialKnife(Item item)
|
|
|
|
{
|
|
|
|
ItemModelsProperties.registerProperty(item, BloodMagic.rl("incense"), new IItemPropertyGetter()
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public float call(ItemStack stack, ClientWorld world, LivingEntity entity)
|
|
|
|
{
|
|
|
|
Item item = stack.getItem();
|
|
|
|
if (item instanceof ItemSacrificialDagger)
|
|
|
|
{
|
|
|
|
return ((ItemSacrificialDagger) item).canUseForSacrifice(stack) ? 1 : 0;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-10-29 19:50:03 +00:00
|
|
|
}
|