Add blood particle effect and CompressedBedrock block functionality and fixed Datagen
Signed-off-by: IM23a-cernik <cernik@bzz.ch>
This commit is contained in:
@@ -2,6 +2,8 @@ package net.krituximon.stalinium;
|
||||
|
||||
import net.krituximon.stalinium.block.ModBlocks;
|
||||
import net.krituximon.stalinium.item.ModItems;
|
||||
import net.krituximon.stalinium.particle.BloodParticle;
|
||||
import net.krituximon.stalinium.particle.ModParticles;
|
||||
import net.krituximon.stalinium.sound.ModSounds;
|
||||
import net.krituximon.stalinium.worldgen.ModFeatures;
|
||||
import net.krituximon.stalinium.worldgen.StaliniumVeinFeature;
|
||||
@@ -9,6 +11,7 @@ import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.levelgen.feature.Feature;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||
import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import com.mojang.logging.LogUtils;
|
||||
@@ -51,6 +54,7 @@ public class Stalinium
|
||||
ModItems.register(modEventBus);
|
||||
ModBlocks.register(modEventBus);
|
||||
ModSounds.register(modEventBus);
|
||||
ModParticles.register(modEventBus);
|
||||
|
||||
// Register ourselves for server and other game events we are interested in.
|
||||
// Note that this is necessary if and only if we want *this* class (Stalinium) to respond directly to events.
|
||||
@@ -102,5 +106,10 @@ public class Stalinium
|
||||
LOGGER.info("HELLO FROM CLIENT SETUP");
|
||||
LOGGER.info("MINECRAFT NAME >> {}", Minecraft.getInstance().getUser().getName());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerParticleFactories(RegisterParticleProvidersEvent event) {
|
||||
event.registerSpriteSet(ModParticles.BLOOD_PARTICLE.get(), BloodParticle.Provider::new);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.krituximon.stalinium.block;
|
||||
|
||||
import net.krituximon.stalinium.Stalinium;
|
||||
import net.krituximon.stalinium.block.custom.CompressedBedrock;
|
||||
import net.krituximon.stalinium.item.ModItems;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
@@ -18,7 +19,7 @@ public class ModBlocks {
|
||||
DeferredRegister.createBlocks(Stalinium.MODID);
|
||||
|
||||
public static final DeferredBlock<Block> COMPRESSED_BEDROCK = registerBlock("compressed_bedrock",
|
||||
() -> new NetheriteOnlyBlock(BlockBehaviour.Properties.of()
|
||||
() -> new CompressedBedrock(BlockBehaviour.Properties.of()
|
||||
.strength(120f, 1200f)
|
||||
.requiresCorrectToolForDrops()
|
||||
.sound(SoundType.STONE)));
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.krituximon.stalinium.block.custom;
|
||||
|
||||
import net.krituximon.stalinium.block.NetheriteOnlyBlock;
|
||||
import net.krituximon.stalinium.particle.ModParticles;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class CompressedBedrock extends NetheriteOnlyBlock {
|
||||
public CompressedBedrock(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
|
||||
if (random.nextInt(5) == 0) {
|
||||
Direction direction = Direction.getRandom(random);
|
||||
if (direction != Direction.UP) {
|
||||
BlockPos blockpos = pos.relative(direction);
|
||||
BlockState blockstate = level.getBlockState(blockpos);
|
||||
if (!state.canOcclude() || !blockstate.isFaceSturdy(level, blockpos, direction.getOpposite())) {
|
||||
double d0 = direction.getStepX() == 0 ? random.nextDouble() : (double) 0.5F + (double) direction.getStepX() * 0.6;
|
||||
double d1 = direction.getStepY() == 0 ? random.nextDouble() : (double) 0.5F + (double) direction.getStepY() * 0.6;
|
||||
double d2 = direction.getStepZ() == 0 ? random.nextDouble() : (double) 0.5F + (double) direction.getStepZ() * 0.6;
|
||||
level.addParticle(ModParticles.BLOOD_PARTICLE.get(), (double) pos.getX() + d0, (double) pos.getY() + d1, (double) pos.getZ() + d2, (double) 0.0F, (double) 0.0F, (double) 0.0F);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,12 +14,9 @@ public class ModBlockStateProvider extends BlockStateProvider {
|
||||
|
||||
@Override
|
||||
protected void registerStatesAndModels() {
|
||||
simpleBlock(ModBlocks.COMPRESSED_BEDROCK.get(),
|
||||
models().cubeAll("compressed_bedrock", modLoc("block/compressed_bedrock")));
|
||||
simpleBlock(ModBlocks.STALINIUM_ORE.get(),
|
||||
models().cubeAll("stalinium_ore", modLoc("block/stalinium_ore")));
|
||||
simpleBlock(ModBlocks.STALINIUM_BLOCK.get(),
|
||||
models().cubeAll("stalinium_block", modLoc("block/stalinium_block")));
|
||||
blockWithItem(ModBlocks.COMPRESSED_BEDROCK);
|
||||
blockWithItem(ModBlocks.STALINIUM_BLOCK);
|
||||
blockWithItem(ModBlocks.STALINIUM_ORE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -13,13 +13,8 @@ public class ModItemModelProvider extends ItemModelProvider {
|
||||
|
||||
@Override
|
||||
protected void registerModels() {
|
||||
withExistingParent("compressed_bedrock", modLoc("block/compressed_bedrock"));
|
||||
withExistingParent("stalinium_ore", modLoc("block/stalinium_ore"));
|
||||
withExistingParent("stalinium_block", modLoc("block/stalinium_block"));
|
||||
singleTexture("stalinium_ingot",
|
||||
mcLoc("item/generated"),
|
||||
"layer0",
|
||||
modLoc("item/stalinium_ingot"));
|
||||
singleTexture("stalinium_nugget", mcLoc("item/generated"), "layer0", modLoc("item/stalinium_nugget"));
|
||||
basicItem(ModItems.STALINIUM_INGOT.get());
|
||||
basicItem(ModItems.SOVIET_ANTHEM_MUSIC_DISC.get());
|
||||
basicItem(ModItems.STALINIUM_NUGGET.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package net.krituximon.stalinium.particle;
|
||||
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.particle.*;
|
||||
import net.minecraft.core.particles.SimpleParticleType;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class BloodParticle extends TextureSheetParticle {
|
||||
protected BloodParticle(ClientLevel level, double x, double y, double z, SpriteSet spriteSet, double xSpeed, double ySpeed, double zSpeed) {
|
||||
super(level, x, y, z, xSpeed, ySpeed, zSpeed);
|
||||
|
||||
this.friction = 0.5f;
|
||||
|
||||
this.lifetime = 80;
|
||||
this.setSpriteFromAge(spriteSet);
|
||||
|
||||
this.rCol = 1f;
|
||||
this.gCol = 0f;
|
||||
this.bCol = 0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRenderType getRenderType() {
|
||||
return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
|
||||
}
|
||||
|
||||
public static class Provider implements ParticleProvider<SimpleParticleType> {
|
||||
private final SpriteSet spriteSet;
|
||||
|
||||
public Provider(SpriteSet spriteSet) {
|
||||
this.spriteSet = spriteSet;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public @Nullable Particle createParticle(SimpleParticleType simpleParticleType, ClientLevel clientLevel, double v, double v1, double v2, double v3, double v4, double v5) {
|
||||
return new BloodParticle(clientLevel, v, v1, v2, this.spriteSet, v3, v4, v5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package net.krituximon.stalinium.particle;
|
||||
|
||||
import net.krituximon.stalinium.Stalinium;
|
||||
import net.minecraft.core.particles.ParticleType;
|
||||
import net.minecraft.core.particles.SimpleParticleType;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ModParticles {
|
||||
public static final DeferredRegister<ParticleType<?>> PARTICLE_TYPES =
|
||||
DeferredRegister.create(BuiltInRegistries.PARTICLE_TYPE, Stalinium.MODID);
|
||||
|
||||
public static final Supplier<SimpleParticleType> BLOOD_PARTICLE =
|
||||
PARTICLE_TYPES.register("blood_particle", () -> new SimpleParticleType(true));
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
PARTICLE_TYPES.register(eventBus);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user