- 3
- 0
я просто создал проект в интелии с плагином Minecraft Development и поставил forge 1.16.5 и sdk 1.8 и начал писать код в основном классе который создался на автомате но весь код красный я не понимаю почему , я даже просто брал чужой код и вставлял и все ровно код весь в ошибках ниже привел пример кода
- Краш-лог
package MyMod;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.particles.BasicParticleType;
import net.minecraft.particles.IParticleData;
import net.minecraft.particles.ParticleType;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ObjectHolder;
import static jdk.nashorn.internal.runtime.regexp.joni.constants.AsmConstants.S;
@Mod.EventBusSubscriber(modid = "", bus = Mod.EventBusSubscriber.Bus.MOD)
public class ParticleEffectMod {
@ObjectHolder("untitled3:custom_particle")
public static final ParticleType<BasicParticleType> CUSTOM_PARTICLE = null;
@SubscribeEvent
public static void onLivingAttack(LivingAttackEvent event) {
Entity sourceEntity = event.getSource().getEntity(); // Получаем источник урона в виде Entity
if (sourceEntity instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) sourceEntity;
BlockPos playerPos = player.getPosition(player.animationPosition).cross();
// Вызываем метод для создания частиц разных цветов
spawnColorParticles(playerPos, 20);
}
}
@OnlyIn(Dist.CLIENT)
public static void spawnColorParticles(BlockPos pos, int count) {
for (int i = 0; i < count; i++) {
double x = pos.getX() + 0.5D;
double y = pos.getY() + 0.5D;
double z = pos.getZ() + 0.5D;
// Проверяем на null и получаем экземпляр частицы
if (CUSTOM_PARTICLE != null) {
IParticleData<BasicParticleType> particleData;
particleData = CUSTOM_PARTICLE;
// Установите скорость движения частиц
Vector3d motion = Vector3d.ZERO; // Нулевая скорость движения
// Верный способ создания частиц
Minecraft.getInstance().particleEngine.createParticle(particleData, x, y, z, motion.x, motion.y, motion.z);
}
}
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void registerParticleFactories(ParticleFactoryRegisterEvent event) {
// Здесь вы можете зарегистрировать фабрику для вашей частицы, если это необходимо
// Пример: Minecraft.getInstance().particles.registerFactory(CUSTOM_PARTICLE, CustomParticle.Factory::new);
}
}
Краш-лог:
package MyMod;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.particles.BasicParticleType;
import net.minecraft.particles.IParticleData;
import net.minecraft.particles.ParticleType;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.ParticleFactoryRegisterEvent;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ObjectHolder;
import static jdk.nashorn.internal.runtime.regexp.joni.constants.AsmConstants.S;
@Mod.EventBusSubscriber(modid = "", bus = Mod.EventBusSubscriber.Bus.MOD)
public class ParticleEffectMod {
@ObjectHolder("untitled3:custom_particle")
public static final ParticleType<BasicParticleType> CUSTOM_PARTICLE = null;
@SubscribeEvent
public static void onLivingAttack(LivingAttackEvent event) {
Entity sourceEntity = event.getSource().getEntity(); // Получаем источник урона в виде Entity
if (sourceEntity instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) sourceEntity;
BlockPos playerPos = player.getPosition(player.animationPosition).cross();
// Вызываем метод для создания частиц разных цветов
spawnColorParticles(playerPos, 20);
}
}
@OnlyIn(Dist.CLIENT)
public static void spawnColorParticles(BlockPos pos, int count) {
for (int i = 0; i < count; i++) {
double x = pos.getX() + 0.5D;
double y = pos.getY() + 0.5D;
double z = pos.getZ() + 0.5D;
// Проверяем на null и получаем экземпляр частицы
if (CUSTOM_PARTICLE != null) {
IParticleData<BasicParticleType> particleData;
particleData = CUSTOM_PARTICLE;
// Установите скорость движения частиц
Vector3d motion = Vector3d.ZERO; // Нулевая скорость движения
// Верный способ создания частиц
Minecraft.getInstance().particleEngine.createParticle(particleData, x, y, z, motion.x, motion.y, motion.z);
}
}
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void registerParticleFactories(ParticleFactoryRegisterEvent event) {
// Здесь вы можете зарегистрировать фабрику для вашей частицы, если это необходимо
// Пример: Minecraft.getInstance().particles.registerFactory(CUSTOM_PARTICLE, CustomParticle.Factory::new);
}
}