Snippets

Adam Walker aenKEq: Untitled snippet

Created by Adam Walker

    public static class TorchLightProvider implements ILightProvider {
        @Override
        public void gatherLights(GatherLightsEvent event, Entity entity) {
            event.add(new Light(
                    (float)(entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    (float)(entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    (float)(entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    1.0f,
                    0.78431374f,
                    0,
                    1,
                    10));
        }
    }

    public static class RedstoneTorchProvider implements ILightProvider {
        @Override
        public void gatherLights(GatherLightsEvent event, Entity entity) {
            event.add(new Light(
                    (float)(entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    (float)(entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    (float)(entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double)Minecraft.getInstance().getRenderPartialTicks()),
                    1.0f,
                    0.78431374f,
                    0,
                    1,
                    10));
        }
    }

    private LazyOptional<ILightProvider> torchProvider = LazyOptional.of(TorchLightProvider::new);
    private LazyOptional<ILightProvider> redstoneProvider = LazyOptional.of(RedstoneTorchProvider::new);

    @SubscribeEvent
    public void attachCapabilities(AttachCapabilitiesEvent<ItemStack> event) {
        if (ConfigManager.enableTorchImplementation.get()) {
            if (event.getObject().getItem() == Blocks.TORCH.asItem()) {
                event.addCapability(new ResourceLocation("albedo", "light_provider"), new ICapabilityProvider() {
                    @Nonnull
                    @Override
                    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable EnumFacing side) {
                        if (cap == Albedo.LIGHT_PROVIDER_CAPABILITY)
                            return torchProvider.cast();
                        return LazyOptional.empty();
                    }
                });
            } else if (event.getObject().getItem() == Blocks.REDSTONE_TORCH.asItem()) {
                event.addCapability(new ResourceLocation("albedo", "light_provider"), new ICapabilityProvider() {
                    @Nonnull
                    @Override
                    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable EnumFacing side) {
                        if (cap == Albedo.LIGHT_PROVIDER_CAPABILITY)
                            return redstoneProvider.cast();
                        return LazyOptional.empty();
                    }
                });
            }
        }
    }

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.