From 6af7f8eedfdcbe22d22e60b3674aff661f753d51 Mon Sep 17 00:00:00 2001 From: SammySemicolon Date: Wed, 3 Jul 2024 19:11:19 +0200 Subject: [PATCH] Wawa --- gradle.properties | 2 +- .../MiscellaneousKnowledgeEntries.java | 4 +-- .../boomerang/ScytheBoomerangEntity.java | 2 +- .../java/com/sammy/malum/data/MalumLang.java | 8 +++++ .../MaterialSpiritInfusionRecipes.java | 1 + .../SpiritMoteParticleEffects.java | 36 +++++++++++++++---- 6 files changed, 42 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8deeaf78c..acbccb5a4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ modLicense=All Rights Reserved modGroupId=com.sammy.malum modAuthors=Sammy Semicolon modDescription=A dark magic mod focused on soul and spirit magic. -lodestoneVersion=1.6.1.212 +lodestoneVersion=1.6.1.215 jeiVersion=15.2.0.22 curiosVersion=5.7.1+1.20.1 fusionVersion=1.1.1 \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/client/screen/codex/entries/MiscellaneousKnowledgeEntries.java b/src/main/java/com/sammy/malum/client/screen/codex/entries/MiscellaneousKnowledgeEntries.java index d9cb5f4e8..56e4cfe77 100644 --- a/src/main/java/com/sammy/malum/client/screen/codex/entries/MiscellaneousKnowledgeEntries.java +++ b/src/main/java/com/sammy/malum/client/screen/codex/entries/MiscellaneousKnowledgeEntries.java @@ -29,8 +29,8 @@ public static void setupEntries(ArcanaProgressionScreen screen) { screen.addEntry("mote_making", 12, 12, b -> b .configureWidget(w -> w.setIcon(LAMPLIGHTERS_TONGS)) - .addPage(new HeadlineTextItemPage("spirited_glass", "spirited_glass.1", LAMPLIGHTERS_TONGS.get())) - .addPage(new TextPage("spirited_glass.2")) + .addPage(new HeadlineTextItemPage("mote_making", "mote_making.1", LAMPLIGHTERS_TONGS.get())) + .addPage(new TextPage("mote_making.2")) ); } } diff --git a/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java b/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java index 047143182..3e8bb52b9 100644 --- a/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java +++ b/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java @@ -91,7 +91,7 @@ protected void onHitBlock(BlockHitResult result) { @Override protected boolean canHitEntity(Entity pTarget) { - return !pTarget.equals(getOwner()); + return !pTarget.equals(getOwner()) && super.canHitEntity(pTarget); } @Override diff --git a/src/main/java/com/sammy/malum/data/MalumLang.java b/src/main/java/com/sammy/malum/data/MalumLang.java index b8c5f0430..e3771cc33 100644 --- a/src/main/java/com/sammy/malum/data/MalumLang.java +++ b/src/main/java/com/sammy/malum/data/MalumLang.java @@ -827,6 +827,14 @@ protected void addTranslations() { addPages("rune_of_the_hells", "The Rune of the Hells conveys the Rite of the Hells, granting Ifrit's Courage to its wearer at a reduced potency when they are on fire, extinguishing and healing them."); + addSimpleEntryHeader("spirited_glass", "Spirited Glass", "Glass-weaver's Finest"); + addPages("spirited_glass", + ""); + + addSimpleEntryHeader("mote_making", "Mote Making", "Arcana, Squared"); + addPages("mote_making", + "A re-imagination of the Tuning Fork; Lamplighter's Tongs are a tool that in function create motes of pure arcana, stabilized by the tool, they function as a source of light."); + addSimpleEntryHeader("mirror_magic", "Mirror magic", "Magic Funnels"); addPages("mirror_magic", "The future holds many secrets.."); diff --git a/src/main/java/com/sammy/malum/data/recipe/infusion/MaterialSpiritInfusionRecipes.java b/src/main/java/com/sammy/malum/data/recipe/infusion/MaterialSpiritInfusionRecipes.java index 357f0212b..88e304b63 100644 --- a/src/main/java/com/sammy/malum/data/recipe/infusion/MaterialSpiritInfusionRecipes.java +++ b/src/main/java/com/sammy/malum/data/recipe/infusion/MaterialSpiritInfusionRecipes.java @@ -161,6 +161,7 @@ public static void buildRecipes(Consumer consumer) { public static void spiritedGlassRecipe(Consumer consumer, MalumSpiritType spirit, Item glass) { new SpiritInfusionRecipeBuilder(Ingredient.of(Tags.Items.GLASS), 16, glass, 16) .addSpirit(spirit, 2) + .addExtraItem(Items.IRON_INGOT, 1) .build(consumer); } } diff --git a/src/main/java/com/sammy/malum/visual_effects/SpiritMoteParticleEffects.java b/src/main/java/com/sammy/malum/visual_effects/SpiritMoteParticleEffects.java index e81a611f9..cbe2dcf9e 100644 --- a/src/main/java/com/sammy/malum/visual_effects/SpiritMoteParticleEffects.java +++ b/src/main/java/com/sammy/malum/visual_effects/SpiritMoteParticleEffects.java @@ -6,15 +6,29 @@ import net.minecraft.util.*; import net.minecraft.world.level.*; import net.minecraft.world.level.block.state.*; +import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.*; +import team.lodestar.lodestone.helpers.RandomHelper; import team.lodestar.lodestone.registry.common.particle.*; import team.lodestar.lodestone.systems.particle.data.*; -import team.lodestar.lodestone.systems.particle.data.color.*; import team.lodestar.lodestone.systems.particle.render_types.*; +import team.lodestar.lodestone.systems.particle.world.LodestoneWorldParticle; import team.lodestar.lodestone.systems.particle.world.options.*; +import java.util.function.Consumer; + public class SpiritMoteParticleEffects { + private static final Consumer SLOWDOWN = p -> { + Vec3 speed = p.getParticleSpeed(); + double d0 = (Math.random() + Math.random() + 1.0D) * (double) 0.15F; + double d1 = Math.sqrt(speed.x * speed.x + speed.y * speed.y + speed.z * speed.z); + p.setParticleSpeed( + speed.x / d1 * d0 * 0.4F, + speed.y / d1 * d0 * 0.4F + 0.1F, + speed.z / d1 * d0 * 0.4F); + }; + public static void destroy(Level level, BlockPos pPos, BlockState pState, MalumSpiritType spiritType) { if (!pState.isAir()) { VoxelShape voxelshape = pState.getShape(level, pPos); @@ -23,16 +37,18 @@ public static void destroy(Level level, BlockPos pPos, BlockState pState, MalumS .setRenderType(LodestoneWorldParticleRenderType.TERRAIN_SHEET) .setSpirit(spiritType) .setGravityStrength(1f) - .setTransparencyData(GenericParticleData.create(0.2f, 0).build()) - .setScaleData(GenericParticleData.create(0.125f).build()); + .setFrictionStrength(0.98f) + .setTransparencyData(GenericParticleData.create(0.5f, 0).build()) + .setScaleData(GenericParticleData.create(0.0625f).build()) + .addSpawnActor(SLOWDOWN); voxelshape.forAllBoxes((minX, minY, minZ, maxX, maxY, maxZ) -> { double xOffset = Math.min(1.0D, maxX - minX); double yOffset = Math.min(1.0D, maxY - minY); double zOffset = Math.min(1.0D, maxZ - minZ); - int xDistance = Math.max(2, Mth.ceil(xOffset / 0.25D)); - int yDistance = Math.max(2, Mth.ceil(yOffset / 0.25D)); - int zDistance = Math.max(2, Mth.ceil(zOffset / 0.25D)); + float xDistance = Math.max(2, Mth.ceil(xOffset / 0.25D)); + float yDistance = Math.max(2, Mth.ceil(yOffset / 0.25D)); + float zDistance = Math.max(2, Mth.ceil(zOffset / 0.25D)); for(int x = 0; x < xDistance; ++x) { for(int y = 0; y < yDistance; ++y) { @@ -43,8 +59,14 @@ public static void destroy(Level level, BlockPos pPos, BlockState pState, MalumS double posX = pPos.getX() + motionX * xOffset + minX; double posY = pPos.getY() + motionY * yOffset + minY; double posZ = pPos.getZ() + motionZ * zOffset + minZ; + RandomSource random = level.random; builder - .setMotion(motionX - 0.5f, motionY - 0.5f, motionZ - 0.5f) + .setMotion( + motionX - 0.5f + (random.nextFloat() * 2f - 1f) * 0.4f, + motionY - 0.5f + (random.nextFloat() * 2f - 1f) * 0.4f, + motionZ - 0.5f + (random.nextFloat() * 2f - 1f) * 0.4f + ) + .setLifetime(RandomHelper.randomBetween(level.random, 20, 40)) .spawn(level, posX, posY, posZ); } }