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