tmp
This commit is contained in:
parent
8651bd6a41
commit
836934d46d
@ -8,6 +8,7 @@ import com.jenny.magic.enchantments.enchantments;
|
|||||||
import com.jenny.magic.entities.entities;
|
import com.jenny.magic.entities.entities;
|
||||||
import com.jenny.magic.items.items;
|
import com.jenny.magic.items.items;
|
||||||
import com.jenny.magic.networking.networking;
|
import com.jenny.magic.networking.networking;
|
||||||
|
import com.jenny.magic.particles.particles;
|
||||||
import com.mojang.logging.LogUtils;
|
import com.mojang.logging.LogUtils;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
@ -37,6 +38,7 @@ public class Magic {
|
|||||||
blockEntities.register(modEventBus);
|
blockEntities.register(modEventBus);
|
||||||
enchantments.register(modEventBus);
|
enchantments.register(modEventBus);
|
||||||
creativeTab.register(modEventBus);
|
creativeTab.register(modEventBus);
|
||||||
|
particles.register(modEventBus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
|
@ -11,7 +11,7 @@ import static com.jenny.magic.Magic.MODID;
|
|||||||
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
public class ConfigServer {
|
public class ConfigServer {
|
||||||
public static final ForgeConfigSpec SPEC;
|
public static final ForgeConfigSpec SPEC;
|
||||||
public static final ForgeConfigSpec.ConfigValue<Integer> C_TELEPORT_SCROLL_RANGE, C_TELEPORT_SCROLL_RANGE_RANDOM;
|
public static final ForgeConfigSpec.ConfigValue<Integer> C_TELEPORT_SCROLL_RANGE, C_TELEPORT_SCROLL_RANGE_RANDOM, C_BROADCAST_RANGE;
|
||||||
public static final ForgeConfigSpec.ConfigValue<List<String>> C_DISABLED_LIST;
|
public static final ForgeConfigSpec.ConfigValue<List<String>> C_DISABLED_LIST;
|
||||||
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
|
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
|
||||||
|
|
||||||
@ -25,6 +25,9 @@ public class ConfigServer {
|
|||||||
C_DISABLED_LIST =
|
C_DISABLED_LIST =
|
||||||
BUILDER.comment("add any items (without mod ID) from this mod to this list to disable their recipes")
|
BUILDER.comment("add any items (without mod ID) from this mod to this list to disable their recipes")
|
||||||
.define("disabled_items", defaultListDisabled());
|
.define("disabled_items", defaultListDisabled());
|
||||||
|
C_BROADCAST_RANGE =
|
||||||
|
BUILDER.comment("up to which distance to send particle effects to players")
|
||||||
|
.defineInRange("scroll_teleport_random_range", 128, 1, 60000000);
|
||||||
SPEC = BUILDER.build();
|
SPEC = BUILDER.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.jenny.magic.items;
|
package com.jenny.magic.items;
|
||||||
|
|
||||||
import com.jenny.magic.entities.BaseWandProjectile;
|
import com.jenny.magic.entities.BaseWandProjectile;
|
||||||
import com.jenny.magic.mana.ManaClient;
|
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
@ -12,7 +10,10 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
public abstract class BaseWand extends QualityItem {
|
public abstract class BaseWand extends QualityItem {
|
||||||
public BaseWand(Properties properties) {
|
public BaseWand(Properties properties) {
|
||||||
super(properties.stacksTo(1));
|
super(properties.stacksTo(1).durability(100));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void onItemDestroyed(Player player) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -21,14 +22,24 @@ public abstract class BaseWand extends QualityItem {
|
|||||||
BaseWandProjectile projectile = newProjectile(pLevel);
|
BaseWandProjectile projectile = newProjectile(pLevel);
|
||||||
projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F);
|
projectile.shootFromRotation(pPlayer, pPlayer.getXRot(), pPlayer.getYRot(), 0.0F, 2.0F);
|
||||||
pLevel.addFreshEntity(projectile);
|
pLevel.addFreshEntity(projectile);
|
||||||
|
setDamage(itemstack, getDamage(itemstack) + damageItem(itemstack, 1, pPlayer, (player) -> onItemDestroyed(player)));
|
||||||
if (!pLevel.isClientSide) {
|
return InteractionResultHolder.success(itemstack);
|
||||||
manaUpdate((ServerPlayer) pPlayer);
|
|
||||||
} else {
|
|
||||||
ManaClient.lastUse = System.currentTimeMillis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return InteractionResultHolder.success(itemstack);
|
;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValidRepairItem(@NotNull ItemStack pStack, @NotNull ItemStack pRepairCandidate) {
|
||||||
|
if (pRepairCandidate.getItem().getDescriptionId().equals(items.DRAGON_HEART.get().getDescriptionId())) {
|
||||||
|
while (pRepairCandidate.getCount() >= 1 && pStack.isDamaged()) {
|
||||||
|
pRepairCandidate.shrink(1);
|
||||||
|
pStack.setDamageValue(pStack.getDamageValue() - 20);
|
||||||
|
System.out.println("test");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract BaseWandProjectile newProjectile(Level level);
|
abstract BaseWandProjectile newProjectile(Level level);
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.jenny.magic.items;
|
package com.jenny.magic.items;
|
||||||
|
|
||||||
|
import com.jenny.magic.networking.networking;
|
||||||
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
|
import com.jenny.magic.particles.effects;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.BoneMealItem;
|
import net.minecraft.world.item.BoneMealItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
@ -14,7 +18,7 @@ public class BonemealScroll extends SingleActionScroll {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, Level level) {
|
void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, @NotNull Level level) {
|
||||||
if (!level.isClientSide) {
|
if (!level.isClientSide) {
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
for (int x = -5; x <= 5; x++) {
|
for (int x = -5; x <= 5; x++) {
|
||||||
@ -26,6 +30,7 @@ public class BonemealScroll extends SingleActionScroll {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
networking.sendToClose(new EffectS2C(effects.EFFECT.SCROLL_BONEMEAL, player.position().add(0, player.getEyeHeight(), 0)), (ServerLevel) level);
|
||||||
itemStack.shrink(1);
|
itemStack.shrink(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package com.jenny.magic.items;
|
|||||||
import com.jenny.magic.networking.networking;
|
import com.jenny.magic.networking.networking;
|
||||||
import com.jenny.magic.networking.packets.EffectS2C;
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
import com.jenny.magic.particles.effects;
|
import com.jenny.magic.particles.effects;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
@ -21,7 +21,7 @@ public class HealthScroll extends SingleActionScroll {
|
|||||||
if (player.getMaxHealth() != player.getHealth()) {
|
if (player.getMaxHealth() != player.getHealth()) {
|
||||||
player.heal(5);
|
player.heal(5);
|
||||||
itemStack.shrink(1);
|
itemStack.shrink(1);
|
||||||
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_HEALTH, player.position().add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
networking.sendToClose(new EffectS2C(effects.EFFECT.SCROLL_HEALTH, player.position().add(0, player.getEyeHeight(), 0)), (ServerLevel) level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ public class RepelScroll extends SingleActionScroll {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, Level level) {
|
void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, @NotNull Level level) {
|
||||||
if (!level.isClientSide) {
|
if (!level.isClientSide) {
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
for (Entity e : level.getEntitiesOfClass(LivingEntity.class, player.getBoundingBox().inflate(5, 2, 5))) {
|
for (Entity e : level.getEntitiesOfClass(LivingEntity.class, player.getBoundingBox().inflate(5, 2, 5))) {
|
||||||
|
@ -43,7 +43,7 @@ public class TeleportScroll extends BaseItem {
|
|||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String dim(Level level) {
|
public static @NotNull String dim(@NotNull Level level) {
|
||||||
return level.dimension().location().toString();
|
return level.dimension().location().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ public class WandVacuum extends BaseItem {
|
|||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, Level level) {
|
protected void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, @NotNull Level level) {
|
||||||
if (!level.isClientSide) {
|
if (!level.isClientSide) {
|
||||||
AABB aabb = new AABB(player.position().subtract(20, 20, 20), player.position().add(20, 20, 20));
|
AABB aabb = new AABB(player.position().subtract(20, 20, 20), player.position().add(20, 20, 20));
|
||||||
for (ItemEntity e : level.getEntitiesOfClass(ItemEntity.class, aabb)) {
|
for (ItemEntity e : level.getEntitiesOfClass(ItemEntity.class, aabb)) {
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
package com.jenny.magic.networking;
|
package com.jenny.magic.networking;
|
||||||
|
|
||||||
|
import com.jenny.magic.config.ConfigServer;
|
||||||
import com.jenny.magic.networking.packets.EffectS2C;
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
import com.jenny.magic.networking.packets.ManaAmountS2C;
|
import com.jenny.magic.networking.packets.ManaAmountS2C;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraftforge.network.NetworkDirection;
|
import net.minecraftforge.network.NetworkDirection;
|
||||||
import net.minecraftforge.network.NetworkRegistry;
|
import net.minecraftforge.network.NetworkRegistry;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
import net.minecraftforge.network.simple.SimpleChannel;
|
import net.minecraftforge.network.simple.SimpleChannel;
|
||||||
|
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import static com.jenny.magic.Magic.MODID;
|
import static com.jenny.magic.Magic.MODID;
|
||||||
|
|
||||||
public class networking {
|
public class networking {
|
||||||
@ -48,4 +52,12 @@ public class networking {
|
|||||||
public static <MSG> void sendToPlayer(MSG message, ServerPlayer player) {
|
public static <MSG> void sendToPlayer(MSG message, ServerPlayer player) {
|
||||||
INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), message);
|
INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sendToClose(EffectS2C message, ServerLevel level) {
|
||||||
|
for (ServerPlayer p : level.getPlayers(Predicate.not(ServerPlayer::hasDisconnected)).stream().toList()) {
|
||||||
|
if (p.position().subtract(message.vector1).length() <= ConfigServer.C_BROADCAST_RANGE.get()) {
|
||||||
|
INSTANCE.send(PacketDistributor.PLAYER.with(() -> p), message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import java.util.function.Supplier;
|
|||||||
|
|
||||||
public class EffectS2C {
|
public class EffectS2C {
|
||||||
private final effects.EFFECT effectID;
|
private final effects.EFFECT effectID;
|
||||||
private final Vec3 vector1;
|
public final Vec3 vector1;
|
||||||
|
|
||||||
public EffectS2C(effects.EFFECT effectID, Vec3 origin) {
|
public EffectS2C(effects.EFFECT effectID, Vec3 origin) {
|
||||||
this.effectID = effectID;
|
this.effectID = effectID;
|
||||||
|
43
src/main/java/com/jenny/magic/particles/BasicParticle.java
Normal file
43
src/main/java/com/jenny/magic/particles/BasicParticle.java
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package com.jenny.magic.particles;
|
||||||
|
|
||||||
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
import net.minecraft.client.particle.Particle;
|
||||||
|
import net.minecraft.client.particle.ParticleProvider;
|
||||||
|
import net.minecraft.client.particle.SimpleAnimatedParticle;
|
||||||
|
import net.minecraft.client.particle.SpriteSet;
|
||||||
|
import net.minecraft.core.particles.SimpleParticleType;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
public class BasicParticle extends SimpleAnimatedParticle {
|
||||||
|
BasicParticle(ClientLevel pLevel, double pX, double pY, double pZ, double pXSpeed, double pYSpeed, double pZSpeed, SpriteSet pSprites) {
|
||||||
|
super(pLevel, pX, pY, pZ, pSprites, 0.0125F);
|
||||||
|
this.xd = pXSpeed;
|
||||||
|
this.yd = pYSpeed;
|
||||||
|
this.zd = pZSpeed;
|
||||||
|
this.quadSize *= 0.75F;
|
||||||
|
this.lifetime = 60 + this.random.nextInt(12);
|
||||||
|
this.setFadeColor(15916745);
|
||||||
|
this.setSpriteFromAge(pSprites);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void move(double pX, double pY, double pZ) {
|
||||||
|
this.setBoundingBox(this.getBoundingBox().move(pX, pY, pZ));
|
||||||
|
this.setLocationFromBoundingbox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
public static class Provider implements ParticleProvider<SimpleParticleType> {
|
||||||
|
private final SpriteSet sprites;
|
||||||
|
|
||||||
|
public Provider(SpriteSet pSprites) {
|
||||||
|
this.sprites = pSprites;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Particle createParticle(@NotNull SimpleParticleType pType, @NotNull ClientLevel pLevel, double pX, double pY, double pZ, double pXSpeed, double pYSpeed, double pZSpeed) {
|
||||||
|
return new BasicParticle(pLevel, pX, pY, pZ, pXSpeed, pYSpeed, pZSpeed, this.sprites);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
52
src/main/java/com/jenny/magic/particles/Particle.java
Normal file
52
src/main/java/com/jenny/magic/particles/Particle.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package com.jenny.magic.particles;
|
||||||
|
|
||||||
|
import net.minecraft.client.multiplayer.ClientLevel;
|
||||||
|
import net.minecraft.client.particle.ParticleProvider;
|
||||||
|
import net.minecraft.client.particle.ParticleRenderType;
|
||||||
|
import net.minecraft.client.particle.SpriteSet;
|
||||||
|
import net.minecraft.client.particle.TextureSheetParticle;
|
||||||
|
import net.minecraft.core.particles.SimpleParticleType;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class Particle extends TextureSheetParticle {
|
||||||
|
private final float quadSizeStart;
|
||||||
|
|
||||||
|
protected Particle(ClientLevel level, double xCoord, double yCoord, double zCoord,
|
||||||
|
SpriteSet spriteSet, double xd, double yd, double zd) {
|
||||||
|
super(level, xCoord, yCoord, zCoord, xd, yd, zd);
|
||||||
|
this.friction = 0.8F;
|
||||||
|
this.xd = xd;
|
||||||
|
this.yd = yd;
|
||||||
|
this.zd = zd;
|
||||||
|
this.quadSizeStart = this.quadSize;
|
||||||
|
this.lifetime = 40;
|
||||||
|
this.setSpriteFromAge(spriteSet);
|
||||||
|
|
||||||
|
this.rCol = 1f;
|
||||||
|
this.gCol = 1f;
|
||||||
|
this.bCol = 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public ParticleRenderType getRenderType() {
|
||||||
|
return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
public static class Provider implements ParticleProvider<SimpleParticleType> {
|
||||||
|
private final SpriteSet sprites;
|
||||||
|
|
||||||
|
public Provider(SpriteSet spriteSet) {
|
||||||
|
this.sprites = spriteSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public net.minecraft.client.particle.Particle createParticle(@NotNull SimpleParticleType particleType, @NotNull ClientLevel level,
|
||||||
|
double x, double y, double z,
|
||||||
|
double dx, double dy, double dz) {
|
||||||
|
return new Particle(level, x, y, z, this.sprites, dx, dy, dz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,8 @@ public class effects {
|
|||||||
case WAND_VACUUM -> wandVacuum(origin);
|
case WAND_VACUUM -> wandVacuum(origin);
|
||||||
case SCROLL_TELEPORT_ORIGIN -> teleportOrigin(origin);
|
case SCROLL_TELEPORT_ORIGIN -> teleportOrigin(origin);
|
||||||
case SCROLL_TELEPORT_TARGET -> teleportTarget(origin);
|
case SCROLL_TELEPORT_TARGET -> teleportTarget(origin);
|
||||||
|
case SCROLL_BONEMEAL -> bonemeal(origin);
|
||||||
|
case SCROLL_HEALTH -> health(origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +44,22 @@ public class effects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void bonemeal(Vec3 v) {
|
||||||
|
Vec3 pos;
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
pos = randPosBetween2D(2, 4).add(v);
|
||||||
|
level().addParticle(ParticleTypes.COMPOSTER, pos.x, pos.y, pos.z, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void health(Vec3 v) {
|
||||||
|
Vec3 pos;
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
pos = randPosBetween2D(2, 4).add(v);
|
||||||
|
level().addParticle(particles.PARTICLE_HEALTH.get(), pos.x, pos.y, pos.z, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static Vec3 randPos(float maxDist) {
|
public static Vec3 randPos(float maxDist) {
|
||||||
return new Vec3(
|
return new Vec3(
|
||||||
rng().nextFloat() * 2 - 1,
|
rng().nextFloat() * 2 - 1,
|
||||||
@ -56,6 +74,10 @@ public class effects {
|
|||||||
rng().nextFloat() * 2 - 1).normalize().scale(maxDist);
|
rng().nextFloat() * 2 - 1).normalize().scale(maxDist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Vec3 randPosBetween2D(float minDist, float maxDist) {
|
||||||
|
return randPos2D(1).scale((minDist + rng().nextFloat() * (maxDist - minDist)));
|
||||||
|
}
|
||||||
|
|
||||||
public static Vec3 randPosRandDist(float maxDist) {
|
public static Vec3 randPosRandDist(float maxDist) {
|
||||||
return new Vec3(
|
return new Vec3(
|
||||||
rng().nextFloat() * 2 - 1,
|
rng().nextFloat() * 2 - 1,
|
||||||
|
31
src/main/java/com/jenny/magic/particles/particles.java
Normal file
31
src/main/java/com/jenny/magic/particles/particles.java
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package com.jenny.magic.particles;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.core.particles.ParticleType;
|
||||||
|
import net.minecraft.core.particles.SimpleParticleType;
|
||||||
|
import net.minecraftforge.client.event.RegisterParticleProvidersEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
|
import static com.jenny.magic.Magic.MODID;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
|
public class particles {
|
||||||
|
public static final DeferredRegister<ParticleType<?>> PARTICLES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, MODID);
|
||||||
|
|
||||||
|
public static final RegistryObject<SimpleParticleType> PARTICLE_HEALTH =
|
||||||
|
PARTICLES.register("particle_health", () -> new SimpleParticleType(true));
|
||||||
|
|
||||||
|
public static void register(IEventBus bus) {
|
||||||
|
PARTICLES.register(bus);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerParticleFactories(final RegisterParticleProvidersEvent event) {
|
||||||
|
Minecraft.getInstance().particleEngine.register(PARTICLE_HEALTH.get(), BasicParticle.Provider::new);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"textures": [
|
||||||
|
"magic:particle_health"
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 196 B |
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"animation": {
|
||||||
|
"frametime": 5,
|
||||||
|
"interpolate": false
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user