Finish Colored Flames

This commit is contained in:
2022-08-05 00:49:26 +02:00
parent 062e9355cf
commit 1e495cdf1a
42 changed files with 178 additions and 16 deletions

View File

@@ -1,5 +1,6 @@
package me.hypherionmc.hyperlighting.client.particles; package me.hypherionmc.hyperlighting.client.particles;
import me.hypherionmc.hyperlighting.common.init.FlameParticles;
import me.hypherionmc.hyperlighting.common.init.HLParticles; import me.hypherionmc.hyperlighting.common.init.HLParticles;
import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.particle.ParticleEngine;
import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleOptions;
@@ -8,7 +9,9 @@ import net.minecraft.core.particles.ParticleType;
public class ParticleRegistryHandler { public class ParticleRegistryHandler {
public static void registerParticles(ParticleStrategy strategy) { public static void registerParticles(ParticleStrategy strategy) {
strategy.register(HLParticles.COLORED_FLAME.get(), ColoredFlameParticle.Factory::new); for (FlameParticles value : FlameParticles.values()) {
strategy.register(value.getParticle().get(), ColoredFlameParticle.Factory::new);
}
} }
public interface ParticleStrategy { public interface ParticleStrategy {

View File

@@ -8,6 +8,7 @@ import me.hypherionmc.craterlib.util.BlockStateUtils;
import me.hypherionmc.craterlib.util.RenderUtils; import me.hypherionmc.craterlib.util.RenderUtils;
import me.hypherionmc.hyperlighting.api.LightableBlock; import me.hypherionmc.hyperlighting.api.LightableBlock;
import me.hypherionmc.hyperlighting.common.init.CommonRegistration; import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.hyperlighting.common.init.FlameParticles;
import me.hypherionmc.hyperlighting.common.init.HLItems; import me.hypherionmc.hyperlighting.common.init.HLItems;
import me.hypherionmc.hyperlighting.common.init.HLSounds; import me.hypherionmc.hyperlighting.common.init.HLSounds;
import me.hypherionmc.hyperlighting.util.StackUtil; import me.hypherionmc.hyperlighting.util.StackUtil;
@@ -63,14 +64,11 @@ public class AdvancedTorchBlock extends HorizontalDirectionalBlock implements Dy
Direction.UP, Block.box(6.0D, 0.0D, 6.0D, 10.0D, 10.0D, 10.0D) Direction.UP, Block.box(6.0D, 0.0D, 6.0D, 10.0D, 10.0D, 10.0D)
)); ));
private final Supplier<SimpleParticleType> particleType;
private DyeColor color; private DyeColor color;
public AdvancedTorchBlock(String name, DyeColor color, CreativeModeTab tab, Supplier<SimpleParticleType> type) { public AdvancedTorchBlock(String name, DyeColor color, CreativeModeTab tab) {
super(Properties.of(Material.WOOD).noCollission().instabreak().lightLevel(BlockStateUtils.createLightLevelFromLitBlockState(15))); super(Properties.of(Material.WOOD).noCollission().instabreak().lightLevel(BlockStateUtils.createLightLevelFromLitBlockState(15)));
this.registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.NORTH).setValue(LIT, CommonRegistration.config.torchConfig.litByDefault).setValue(COLOR, color)); this.registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.NORTH).setValue(LIT, CommonRegistration.config.torchConfig.litByDefault).setValue(COLOR, color));
this.particleType = type;
this.color = color; this.color = color;
HLItems.register(name, () -> new BlockItemDyable(this, new Item.Properties().tab(tab))); HLItems.register(name, () -> new BlockItemDyable(this, new Item.Properties().tab(tab)));
@@ -191,7 +189,7 @@ public class AdvancedTorchBlock extends HorizontalDirectionalBlock implements Dy
double d1 = (double) pos.getY() + 0.7D; double d1 = (double) pos.getY() + 0.7D;
double d2 = (double) pos.getZ() + 0.5D; double d2 = (double) pos.getZ() + 0.5D;
levelIn.addParticle(ParticleTypes.SMOKE, d0, d1, d2, 0.0D, 0.0D, 0.0D); levelIn.addParticle(ParticleTypes.SMOKE, d0, d1, d2, 0.0D, 0.0D, 0.0D);
levelIn.addParticle(particleType.get(), d0, d1, d2, 0D, 0D, 0D); levelIn.addParticle(FlameParticles.getParticleByColor(color).get(), d0, d1, d2, 0D, 0D, 0D);
} else { } else {
Direction direction = stateIn.getValue(FACING); Direction direction = stateIn.getValue(FACING);
double d0 = (double) pos.getX() + 0.5D; double d0 = (double) pos.getX() + 0.5D;
@@ -199,7 +197,7 @@ public class AdvancedTorchBlock extends HorizontalDirectionalBlock implements Dy
double d2 = (double) pos.getZ() + 0.5D; double d2 = (double) pos.getZ() + 0.5D;
Direction direction1 = direction.getOpposite(); Direction direction1 = direction.getOpposite();
levelIn.addParticle(ParticleTypes.SMOKE, d0 + 0.37D * (double) direction1.getStepX(), d1 + 0.15D, d2 + 0.37D * (double) direction1.getStepZ(), 0.0D, 0.0D, 0.0D); levelIn.addParticle(ParticleTypes.SMOKE, d0 + 0.37D * (double) direction1.getStepX(), d1 + 0.15D, d2 + 0.37D * (double) direction1.getStepZ(), 0.0D, 0.0D, 0.0D);
levelIn.addParticle(particleType.get(), d0 + 0.37D * (double) direction1.getStepX(), d1 + 0.15D, d2 + 0.37D * (double) direction1.getStepZ(), 0D, 0D, 0D); levelIn.addParticle(FlameParticles.getParticleByColor(color).get(), d0 + 0.37D * (double) direction1.getStepX(), d1 + 0.15D, d2 + 0.37D * (double) direction1.getStepZ(), 0D, 0D, 0D);
} }
} }
} }

View File

@@ -0,0 +1,57 @@
package me.hypherionmc.hyperlighting.common.init;
import me.hypherionmc.craterlib.common.particles.WrappedSimpleParticleType;
import me.hypherionmc.craterlib.systems.reg.RegistrationProvider;
import me.hypherionmc.craterlib.systems.reg.RegistryObject;
import me.hypherionmc.hyperlighting.Constants;
import net.minecraft.core.Registry;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.material.MaterialColor;
import java.util.Arrays;
import java.util.function.Supplier;
import static me.hypherionmc.hyperlighting.common.init.HLParticles.register;
/**
* @author HypherionSA
* @date 05/08/2022
*/
public enum FlameParticles {
WHITE(DyeColor.WHITE),
ORANGE(DyeColor.ORANGE),
MAGENTA(DyeColor.MAGENTA),
LIGHT_BLUE(DyeColor.LIGHT_BLUE),
YELLOW(DyeColor.YELLOW),
LIME(DyeColor.LIME),
PINK(DyeColor.PINK),
GRAY(DyeColor.GRAY),
LIGHT_GRAY(DyeColor.LIGHT_GRAY),
CYAN(DyeColor.CYAN),
PURPLE(DyeColor.PURPLE),
BLUE(DyeColor.BLUE),
BROWN(DyeColor.BROWN),
GREEN(DyeColor.GREEN),
RED(DyeColor.RED),
BLACK(DyeColor.BLACK);
private final RegistryObject<SimpleParticleType> PARTICLE;
private final DyeColor color;
private FlameParticles(DyeColor color) {
PARTICLE = register("flame_" + color.getName().toLowerCase(), () -> new WrappedSimpleParticleType(false));
this.color = color;
}
public RegistryObject<SimpleParticleType> getParticle() {
return PARTICLE;
}
public static RegistryObject<SimpleParticleType> getParticleByColor(DyeColor color) {
return Arrays.stream(FlameParticles.values()).filter(p -> p.color == color).findFirst().get().getParticle();
}
public static void loadAll() {}
}

View File

@@ -16,7 +16,7 @@ public class HLBlocks {
public static RegistrationProvider<Block> BLOCKS = RegistrationProvider.get(Registry.BLOCK_REGISTRY, Constants.MOD_ID); public static RegistrationProvider<Block> BLOCKS = RegistrationProvider.get(Registry.BLOCK_REGISTRY, Constants.MOD_ID);
/* Torches */ /* Torches */
public static BlockRegistryObject<Block> ADVANCED_TORCH = register("advanced_torch", () -> new AdvancedTorchBlock("advanced_torch", DyeColor.ORANGE, CommonRegistration.LIGHTS_TAB, HLParticles.COLORED_FLAME)); public static BlockRegistryObject<Block> ADVANCED_TORCH = register("advanced_torch", () -> new AdvancedTorchBlock("advanced_torch", DyeColor.ORANGE, CommonRegistration.LIGHTS_TAB));
public static void loadAll() {} public static void loadAll() {}

View File

@@ -14,12 +14,12 @@ public class HLParticles {
public static final RegistrationProvider<ParticleType<?>> PARTICLES = RegistrationProvider.get(Registry.PARTICLE_TYPE_REGISTRY, Constants.MOD_ID); public static final RegistrationProvider<ParticleType<?>> PARTICLES = RegistrationProvider.get(Registry.PARTICLE_TYPE_REGISTRY, Constants.MOD_ID);
public static RegistryObject<SimpleParticleType> COLORED_FLAME = register("colored_flame", () -> new WrappedSimpleParticleType(false));
public static <T extends ParticleType<?>> RegistryObject<T> register(String name, Supplier<T> particle) { public static <T extends ParticleType<?>> RegistryObject<T> register(String name, Supplier<T> particle) {
return PARTICLES.register(name, particle); return PARTICLES.register(name, particle);
} }
public static void loadAll() {} public static void loadAll() {
FlameParticles.loadAll();
}
} }

View File

@@ -3,6 +3,8 @@
"subtitles.torch_ignite": "Torch Ignite Sound", "subtitles.torch_ignite": "Torch Ignite Sound",
"entity.hyperlighting.firefly": "Neon Fly",
"cl.hyperlightingconfig.title": "Hyper Lighting Config", "cl.hyperlightingconfig.title": "Hyper Lighting Config",
"cl.torchconfig.litbydefault": "Lit when Placed", "cl.torchconfig.litbydefault": "Lit when Placed",
"cl.torchconfig.requirestool": "Requires Torch Lighter" "cl.torchconfig.requirestool": "Requires Torch Lighter"

View File

@@ -1,5 +0,0 @@
{
"textures": [
"hyperlighting:flames/colored_flame_red"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_black"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_blue"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_brown"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_cyan"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_gray"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_green"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_light_blue"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_light_gray"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_lime"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_magenta"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_orange"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_pink"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_purple"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_red"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_white"
]
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"hyperlighting:flames/flame_yellow"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

View File

@@ -1,12 +1,17 @@
package me.hypherionmc.hyperlighting; package me.hypherionmc.hyperlighting;
import me.hypherionmc.hyperlighting.common.entities.NeonFlyEntity;
import me.hypherionmc.hyperlighting.common.init.CommonRegistration; import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.hyperlighting.common.init.HLEntities;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
public class HyperLightingFabric implements ModInitializer { public class HyperLightingFabric implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
CommonRegistration.registerAll(); CommonRegistration.registerAll();
FabricDefaultAttributeRegistry.register(HLEntities.FIREFLY.get(), NeonFlyEntity.prepareAttributes());
} }
} }

View File

@@ -1,9 +1,14 @@
package me.hypherionmc.hyperlighting.client; package me.hypherionmc.hyperlighting.client;
import me.hypherionmc.hyperlighting.client.init.ClientRegistration; import me.hypherionmc.hyperlighting.client.init.ClientRegistration;
import me.hypherionmc.hyperlighting.client.model.NeonFlyModel;
import me.hypherionmc.hyperlighting.client.particles.ParticleRegistryHandler; import me.hypherionmc.hyperlighting.client.particles.ParticleRegistryHandler;
import me.hypherionmc.hyperlighting.client.renderer.entity.NeonFlyRenderer;
import me.hypherionmc.hyperlighting.common.init.HLEntities;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.particle.ParticleEngine;
import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.ParticleType;
@@ -20,5 +25,8 @@ public class HyperLightingFabricClient implements ClientModInitializer {
ParticleFactoryRegistry.getInstance().register(particle, provider::create); ParticleFactoryRegistry.getInstance().register(particle, provider::create);
} }
}); });
EntityRendererRegistry.register(HLEntities.FIREFLY.get(), NeonFlyRenderer::new);
EntityModelLayerRegistry.registerModelLayer(NeonFlyModel.LAYER_LOCATION, NeonFlyModel::createBodyLayer);
} }
} }

View File

@@ -2,11 +2,18 @@ package me.hypherionmc.hyperlighting;
import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen;
import me.hypherionmc.hyperlighting.client.init.ClientRegistration; import me.hypherionmc.hyperlighting.client.init.ClientRegistration;
import me.hypherionmc.hyperlighting.client.renderer.entity.NeonFlyRenderer;
import me.hypherionmc.hyperlighting.common.entities.NeonFlyEntity;
import me.hypherionmc.hyperlighting.common.init.CommonRegistration; import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.hyperlighting.common.init.HLEntities;
import net.minecraft.client.renderer.entity.EntityRenderers;
import net.minecraft.world.entity.SpawnPlacements;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraftforge.client.ConfigScreenHandler; import net.minecraftforge.client.ConfigScreenHandler;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@Mod(Constants.MOD_ID) @Mod(Constants.MOD_ID)
@@ -14,11 +21,18 @@ public class HyperLightingForge {
public HyperLightingForge() { public HyperLightingForge() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientInit); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientInit);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonInit);
CommonRegistration.registerAll(); CommonRegistration.registerAll();
} }
public void clientInit(FMLClientSetupEvent event) { public void clientInit(FMLClientSetupEvent event) {
new ClientRegistration().registerAll(); new ClientRegistration().registerAll();
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, screen) -> new CraterConfigScreen(CommonRegistration.config, screen))); ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory((mc, screen) -> new CraterConfigScreen(CommonRegistration.config, screen)));
EntityRenderers.register(HLEntities.FIREFLY.get(), NeonFlyRenderer::new);
}
public void commonInit(FMLCommonSetupEvent event) {
} }
} }