Skip to content

Commit

Permalink
Stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
SammySemicolon committed Oct 15, 2023
1 parent cae9547 commit 5dab55a
Show file tree
Hide file tree
Showing 12 changed files with 56 additions and 64 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ org.gradle.daemon=false
# Dependency Version
minecraftVersion=1.18.2
forgeVersion=40.2.0
lodestoneVersion=1.4.2.484
lodestoneVersion=1.4.2.486
forgegradleVersion=5.1.53
mixingradleVersion=0.7-SNAPSHOT
librarianVersion=1.+
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void render(MalumItemHolderBlockEntity blockEntityIn, float partialTicks,
ItemStack stack = blockEntityIn.inventory.getStackInSlot(0);
if (!stack.isEmpty()) {
poseStack.pushPose();
Vec3 itemOffset = blockEntityIn.getItemOffset();
Vec3 itemOffset = blockEntityIn.getItemOffset(partialTicks);
poseStack.translate(itemOffset.x(), itemOffset.y(), itemOffset.z());
poseStack.mulPose(Vector3f.YP.rotationDegrees(((level.getGameTime() % 360) + partialTicks) * 3));
poseStack.scale(0.6f, 0.6f, 0.6f);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.sammy.malum.client.renderer.entity.*;
import com.sammy.malum.common.block.curiosities.spirit_altar.SpiritAltarBlockEntity;
import com.sammy.malum.registry.common.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms;
Expand All @@ -26,6 +28,11 @@ public void render(SpiritAltarBlockEntity blockEntityIn, float partialTicks, Pos
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
LodestoneBlockEntityInventory inventory = blockEntityIn.spiritInventory;

poseStack.translate(0, 2, 0);
FloatingItemEntityRenderer.renderSpiritGlimmer(poseStack, SpiritTypeRegistry.SACRED_SPIRIT, partialTicks);
poseStack.translate(0, -2, 0);


int spiritsRendered = 0;
for (int i = 0; i < inventory.slotCount; i++) {
ItemStack item = inventory.getStackInSlot(i);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@
import com.mojang.blaze3d.vertex.*;
import com.mojang.math.*;
import com.sammy.malum.common.entity.*;
import com.sammy.malum.core.systems.spirit.*;
import net.minecraft.client.*;
import net.minecraft.client.multiplayer.*;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.block.model.*;
import net.minecraft.client.renderer.entity.*;
import net.minecraft.client.renderer.texture.*;
import net.minecraft.client.resources.model.*;
import net.minecraft.network.chat.*;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.*;
import net.minecraft.util.*;
import net.minecraft.world.item.*;
import net.minecraft.world.level.*;
import net.minecraft.world.phys.*;
import team.lodestar.lodestone.helpers.*;
import team.lodestar.lodestone.setup.*;
Expand All @@ -21,9 +25,7 @@
import team.lodestar.lodestone.systems.rendering.trail.*;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.stream.*;

import static com.sammy.malum.MalumMod.*;
import static team.lodestar.lodestone.LodestoneLib.*;
Expand All @@ -40,7 +42,7 @@ public FloatingItemEntityRenderer(EntityRendererProvider.Context context) {
}

private static final ResourceLocation LIGHT_TRAIL = malumPath("textures/vfx/concentrated_trail.png");
private static final RenderType LIGHT_TYPE = LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE_TRIANGLE.apply(LIGHT_TRAIL);
private static final RenderType TRAIL_TYPE = LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE_TRIANGLE.apply(LIGHT_TRAIL);
@Override
public void render(FloatingItemEntity entity, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
List<TrailPoint> trailPoints = entity.trailPointBuilder.getTrailPoints(partialTicks);
Expand All @@ -52,7 +54,7 @@ public void render(FloatingItemEntity entity, float entityYaw, float partialTick
trailPoints.add(new TrailPoint(new Vec3(x, y + entity.getYOffset(partialTicks) + 0.25F, z).add(entity.getDeltaMovement().scale(1+partialTicks))));
poseStack.translate(-x, -y, -z);
VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld().setPosColorTexLightmapDefaultFormat();
VertexConsumer lightBuffer = DELAYED_RENDER.getBuffer(LIGHT_TYPE);
VertexConsumer lightBuffer = DELAYED_RENDER.getBuffer(TRAIL_TYPE);
final Color primaryColor = entity.spiritType.getPrimaryColor();
final Color secondaryColor = entity.spiritType.getSecondaryColor();
for (int i = 0; i < 2; i++) {
Expand All @@ -73,7 +75,6 @@ public void render(FloatingItemEntity entity, float entityYaw, float partialTick
public static void renderSpirit(FloatingItemEntity entity, ItemRenderer itemRenderer, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
ItemStack itemStack = entity.getItem();
BakedModel model = itemRenderer.getModel(itemStack, entity.level, null, entity.getItem().getCount());
VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld().setPosColorTexLightmapDefaultFormat().setColor(entity.spiritType.getPrimaryColor());
float yOffset = entity.getYOffset(partialTicks);
float scale = model.getTransforms().getTransform(ItemTransforms.TransformType.GROUND).scale.y();
float rotation = entity.getRotation(partialTicks);
Expand All @@ -84,27 +85,35 @@ public static void renderSpirit(FloatingItemEntity entity, ItemRenderer itemRend
poseStack.popPose();
poseStack.pushPose();
poseStack.translate(0.0D, (yOffset + 0.5F * scale), 0.0D);
renderSpiritGlimmer(poseStack, builder, partialTicks);
renderSpiritGlimmer(poseStack, entity.spiritType, partialTicks);
poseStack.popPose();
}

public static void renderSpiritGlimmer(PoseStack poseStack, VFXBuilders.WorldVFXBuilder builder, float partialTicks) {
ClientLevel level = Minecraft.getInstance().level;
float v = level.getGameTime() + partialTicks;
float time = (float) ((Math.sin(v) + v % 15f) / 15f);
if (time >= 0.5f) {
time = 1f - time;
}
float multiplier = 1 + Easing.BOUNCE_IN_OUT.ease(time*2f, 0, 0.25f, 1);
public static void renderSpiritItem(PoseStack poseStack, MultiBufferSource bufferIn, ItemRenderer itemRenderer, ItemStack stack, float yOffset, float rotation, int packedLightIn) {
Level level = Minecraft.getInstance().level;
BakedModel model = itemRenderer.getModel(stack, level, null, stack.getCount());
float scale = model.getTransforms().getTransform(ItemTransforms.TransformType.GROUND).scale.y();
poseStack.pushPose();
poseStack.translate(0.0D, (yOffset + 0.25F * scale), 0.0D);
poseStack.mulPose(Vector3f.YP.rotation(rotation));
itemRenderer.render(stack, ItemTransforms.TransformType.GROUND, false, poseStack, bufferIn, packedLightIn, OverlayTexture.NO_OVERLAY, model);
poseStack.popPose();
}
public static void renderSpiritGlimmer(PoseStack poseStack, MalumSpiritType spiritType, float partialTicks) {
Level level = Minecraft.getInstance().level;
VertexConsumer bloom = DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE.applyAndCache(lodestonePath("textures/particle/twinkle.png")));
VertexConsumer star = DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE.applyAndCache(malumPath("textures/particle/star.png")));
VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld().setPosColorTexLightmapDefaultFormat().setColor(spiritType.getPrimaryColor());
float gameTime = level.getGameTime() + partialTicks;
float sine = (float) Math.abs(((Math.sin((gameTime / 80f) % 360)) * 0.2f));
float bounce = EasingHelper.weightedEasingLerp(Easing.BOUNCE_IN_OUT, (gameTime % 20)/20f, 0.025f, 0.05f, 0.025f);
float scale = 0.1f + sine + bounce;

poseStack.pushPose();
poseStack.mulPose(Minecraft.getInstance().getEntityRenderDispatcher().cameraOrientation());
poseStack.mulPose(Vector3f.YP.rotationDegrees(180f));
for (int i = 0; i < 3; i++) {
float size = (0.125f + i * 0.13f) * multiplier;
float alpha = (0.75f - i * 0.3f);
builder.setAlpha(alpha * 0.6f).renderQuad(DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE.applyAndCache(lodestonePath("textures/particle/wisp.png"))), poseStack, size * 0.75f);
builder.setAlpha(alpha).renderQuad(DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE.applyAndCache(lodestonePath("textures/particle/twinkle.png"))), poseStack, size);
}
builder.setAlpha(0.45f).renderQuad(bloom, poseStack, scale);
builder.setAlpha(0.75f).renderQuad(star, poseStack, scale*1.25f);
poseStack.popPose();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.sammy.malum.common.recipe.*;
import com.sammy.malum.core.systems.particle_effects.*;
import com.sammy.malum.core.systems.recipe.*;
import com.sammy.malum.core.systems.spirit.*;
import com.sammy.malum.registry.common.*;
import com.sammy.malum.registry.common.block.*;
import com.sammy.malum.visual_effects.*;
Expand All @@ -28,20 +27,14 @@
import net.minecraftforge.network.*;
import org.jetbrains.annotations.*;
import team.lodestar.lodestone.helpers.*;
import team.lodestar.lodestone.setup.*;
import team.lodestar.lodestone.systems.blockentity.*;
import team.lodestar.lodestone.systems.easing.*;
import team.lodestar.lodestone.systems.particle.*;
import team.lodestar.lodestone.systems.particle.builder.*;
import team.lodestar.lodestone.systems.particle.data.*;
import team.lodestar.lodestone.systems.recipe.*;

import javax.annotation.Nullable;
import javax.annotation.*;
import java.awt.*;
import java.util.List;
import java.util.*;
import java.util.function.*;
import java.util.stream.*;

import static com.sammy.malum.registry.common.PacketRegistry.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ public TwistedTabletBlockEntity(BlockPos pos, BlockState state) {
}

@Override
public Vec3 getItemOffset() {
public Vec3 getItemOffset(float partialTicks) {
Direction direction = getBlockState().getValue(BlockStateProperties.FACING);
float gameTime = level.getGameTime() + partialTicks;
float xOffset = direction.getStepX() * 0.25f;
float yOffset = direction.getStepY() * 0.4f + (inventory.getStackInSlot(0).getItem() instanceof SpiritShardItem ? (float)Math.sin((level.getGameTime() % 360) / 20f) * 0.05f : 0);
float yOffset = direction.getStepY() * 0.4f + (inventory.getStackInSlot(0).getItem() instanceof SpiritShardItem ? (float)Math.sin((gameTime % 360) / 20f) * 0.05f : 0);
float zOffset = direction.getStepY() * 0.25f;
return new Vec3(0.5f - xOffset, 0.5f - yOffset, 0.5f - zOffset);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
public interface IMalumSpecialItemAccessPoint
{
LodestoneBlockEntityInventory getSuppliedInventory();
Vec3 getItemCenterPos();
Vec3 getItemOffset();
default Vec3 getItemCenterPos() {
return getItemCenterPos(0);
}
Vec3 getItemCenterPos(float partialTicks);
Vec3 getItemOffset(float partialTicks);
BlockPos getAccessPointBlockPos();
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package com.sammy.malum.common.block.storage;

import com.sammy.malum.common.item.spirit.*;
import com.sammy.malum.core.helper.*;
import com.sammy.malum.core.systems.spirit.*;
import com.sammy.malum.visual_effects.*;
import net.minecraft.core.*;
import net.minecraft.world.entity.monster.*;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.entity.*;
import net.minecraft.world.level.block.state.*;
import net.minecraft.world.phys.*;
Expand All @@ -32,9 +29,9 @@ public LodestoneBlockEntityInventory getSuppliedInventory() {
}

@Override
public Vec3 getItemCenterPos() {
public Vec3 getItemCenterPos(float partialTicks) {
final BlockPos blockPos = getBlockPos();
final Vec3 offset = getItemOffset();
final Vec3 offset = getItemOffset(partialTicks);
return new Vec3(blockPos.getX()+offset.x, blockPos.getY()+offset.y, blockPos.getZ()+offset.z);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
import com.sammy.malum.common.block.storage.*;
import com.sammy.malum.common.item.spirit.*;
import com.sammy.malum.registry.common.block.*;
import com.sammy.malum.visual_effects.*;
import net.minecraft.core.*;
import net.minecraft.world.level.block.entity.*;
import net.minecraft.world.level.block.state.*;
import net.minecraft.world.phys.*;
import team.lodestar.lodestone.helpers.*;

public class ItemPedestalBlockEntity extends MalumItemHolderBlockEntity {

Expand All @@ -23,9 +21,10 @@ public ItemPedestalBlockEntity(BlockPos pos, BlockState state) {
}

@Override
public Vec3 getItemOffset() {
public Vec3 getItemOffset(float partialTicks) {
if (inventory.getStackInSlot(0).getItem() instanceof SpiritShardItem) {
return PEDESTAL_ITEM_OFFSET.add(0, (float)Math.sin((level.getGameTime() % 360) / 20f) * 0.05f, 0);
float gameTime = level.getGameTime() + partialTicks;
return PEDESTAL_ITEM_OFFSET.add(0, (float)Math.sin((gameTime % 360) / 20f) * 0.05f, 0);
}
return PEDESTAL_ITEM_OFFSET;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ public ItemStandBlockEntity(BlockPos pos, BlockState state) {
}

@Override
public Vec3 getItemOffset() {
public Vec3 getItemOffset(float partialTicks) {
Direction direction = getBlockState().getValue(BlockStateProperties.FACING);
float gameTime = level.getGameTime() + partialTicks;
float xOffset = direction.getStepX() * 0.25f;
float yOffset = direction.getStepY() * 0.1f + (inventory.getStackInSlot(0).getItem() instanceof SpiritShardItem ? (float)Math.sin((level.getGameTime() % 360) / 20f) * 0.05f : 0);
float yOffset = direction.getStepY() * 0.1f + (inventory.getStackInSlot(0).getItem() instanceof SpiritShardItem ? (float)Math.sin((gameTime % 360) / 20f) * 0.05f : 0);
float zOffset = direction.getStepZ() * 0.25f;
return new Vec3(0.5f - xOffset, 0.5f - yOffset, 0.5f - zOffset);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,25 +92,6 @@ public static void craftItemParticles(SpiritAltarBlockEntity altar) {
BlockPos altarPos = altar.getBlockPos();
Vec3 targetPos = altar.getCentralItemOffset().add(altarPos.getX(),altarPos.getY(), altarPos.getZ());

for (int i = 0; i < 8; i++) {
int finalI = i;
Vec3 offsetPosition = DataHelper.rotatingRadialOffset(targetPos, 0.6f, i, 8, gameTime, 160);

var lightSpecs = spiritLightSpecs(level, offsetPosition, activeSpiritType);
lightSpecs.getBuilder().act(b -> b
.modifyColorData(d -> d.multiplyCoefficient(0.35f))
.modifyData(b::getScaleData, d -> d.multiplyValue(2f).multiplyCoefficient(0.9f))
.modifyData(b::getTransparencyData, d -> d.multiplyCoefficient(0.9f))
.multiplyLifetime(1.5f)
.setLifetime(b.getParticleOptions().lifetimeSupplier.get() + finalI * 2));
lightSpecs.getBloomBuilder().act(b -> b
.modifyColorData(d -> d.multiplyCoefficient(0.35f))
.modifyData(b::getScaleData, d -> d.multiplyValue(1.6f).multiplyCoefficient(0.9f))
.modifyData(b::getTransparencyData, d -> d.multiplyCoefficient(0.9f))
.setLifetime((int) (b.getParticleOptions().lifetimeSupplier.get() + finalI * 2.5f)));
lightSpecs.spawnParticles();
}

for (int i = 0; i < 8; i++) {
int finalI = i;
Vec3 offsetPosition = DataHelper.rotatingRadialOffset(targetPos, 0.6f, i, 8, gameTime, 160);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.minecraft.world.phys.Vec3;
import team.lodestar.lodestone.helpers.*;
import team.lodestar.lodestone.setup.LodestoneParticleRegistry;
import team.lodestar.lodestone.systems.easing.*;
import team.lodestar.lodestone.systems.particle.*;
import team.lodestar.lodestone.systems.particle.builder.*;
import team.lodestar.lodestone.systems.particle.data.color.ColorParticleData;
Expand Down Expand Up @@ -80,7 +81,7 @@ public static WorldParticleBuilder spiritBloom(Level level, MalumSpiritType spir
return WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE)
.setTransparencyData(GenericParticleData.create(0.35f, 0f).build())
.setSpinData(spinData)
.setScaleData(GenericParticleData.create(0.04f, RandomHelper.randomBetween(rand, 0.08f, 0.15f), 0).setCoefficient(1.15f).build())
.setScaleData(GenericParticleData.create(0.04f, RandomHelper.randomBetween(rand, 0.08f, 0.14f), 0).setEasing(Easing.SINE_IN, Easing.SINE_IN_OUT).build())
.setColorData(spiritType.createBloomColorData().build())
.setLifetime(lifetime)
.enableNoClip();
Expand Down

0 comments on commit 5dab55a

Please sign in to comment.