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();
}
});
}
}
}
|