33import dev .kosmx .playerAnim .core .util .MathHelper ;
44import net .minecraft .core .BlockPos ;
55import net .minecraft .util .Mth ;
6+ import net .minecraft .util .RandomSource ;
7+ import net .minecraft .world .item .ItemStack ;
68import net .minecraft .world .level .Level ;
79import net .minecraft .world .level .block .state .BlockState ;
810import net .minecraft .world .phys .Vec3 ;
1315import team .lodestar .lodestone .modules .toolkit .inventory .ItemStackHandlerItemDisplayData ;
1416import team .lodestar .lodestone .modules .toolkit .inventory .LodestoneItemStackBlockHandler ;
1517
18+ import java .util .Objects ;
19+
1620public class SpiritAltarSpiritDisplayData extends ItemStackHandlerItemDisplayData {
1721
1822 protected static final int WARMUP_DURATION = 30 ;
@@ -21,10 +25,16 @@ public class SpiritAltarSpiritDisplayData extends ItemStackHandlerItemDisplayDat
2125 public int warmupTicks ;
2226
2327 public SpiritAltarSpiritDisplayData (LodestoneItemStackBlockHandler parent ) {
24- super (parent , 0.02f , 0.0125f );
28+ super (parent , 0.015f , 0.1f );
2529 altar = (SpiritAltarBlockEntity ) parent .getParent ();
2630 }
2731
32+ @ Override
33+ public ItemDisplayDataEntry addNewItem (int index , ItemStack stack ) {
34+ RandomSource random = Objects .requireNonNull (handler .getParent ().getLevel ()).random ;
35+ return super .addNewItem (index , stack ).setAngle (random .nextFloat () * 6.28f );
36+ }
37+
2838 @ Override
2939 public void tick (LodestoneBlockEntity parent , Level level , BlockPos pos , BlockState state ) {
3040 int target = altar .possibleRecipes .isEmpty () ? 0 : WARMUP_DURATION ;
@@ -45,6 +55,12 @@ public float getLiftForItem(ItemDisplayDataEntry item, int index, float total) {
4555 return 0.25f + getSpinUp (Easing .QUARTIC_OUT ) * getSpinUp (Easing .BACK_OUT ) * 0.5f ;
4656 }
4757
58+ @ Override
59+ public float getItemScaleForItem (ItemDisplayDataEntry item , int index , float total ) {
60+ float delta = Math .min (item .getAge () / 6f , 1f );
61+ return Easing .SINE_IN_OUT .lerp (delta , 0f , 0.5f );
62+ }
63+
4864 public float getSpinUp (Easing easing ) {
4965 return easing .ease (warmupTicks / (float )WARMUP_DURATION );
5066 }
0 commit comments