Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ public class AstralAdditions implements ModInitializer {

@Override
public void onInitialize() {

ModFluids.registerFluids();
ModEntities.registerEntities();
ModBlocks.registerBlocks();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package com.github.ethanicuss.astraladditions;

import com.github.ethanicuss.astraladditions.musicplayer.NowPlayingHud;
import com.github.ethanicuss.astraladditions.registry.*;
import com.github.ethanicuss.astraladditions.playertracker.PlayerTracker;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class AstralAdditionsClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(AstralAdditions.MOD_ID);
public static PlayerTracker playerTracker = new PlayerTracker();


@Override
public void onInitializeClient() {
ModEntities.registerClient();
Expand All @@ -20,5 +23,15 @@ public void onInitializeClient() {
ModItemProperties.registerClient();
ModPotion.registerClient();
LOGGER.info("Astral Additions client is active!");

//!IDK where to move these to
HudRenderCallback.EVENT.register((matrices, tickDelta) -> {
NowPlayingHud.render(matrices);
});

ClientTickEvents.END_CLIENT_TICK.register(client -> {
NowPlayingHud.tick();
});

}
}
412 changes: 253 additions & 159 deletions src/main/java/com/github/ethanicuss/astraladditions/items/PylonItem.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

public class ShimmerBottleItem extends Item {

StatusEffectInstance glowing = new StatusEffectInstance(StatusEffects.GLOWING, 600);
StatusEffectInstance vision = new StatusEffectInstance(StatusEffects.NIGHT_VISION, 600);
StatusEffectInstance glowing = new StatusEffectInstance(StatusEffects.GLOWING, 600, 0, false, false);
StatusEffectInstance vision = new StatusEffectInstance(StatusEffects.NIGHT_VISION, 600, 0, false, false);

private static final int MAX_USE_TIME = 40;

Expand All @@ -37,8 +37,8 @@ public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user){
ItemStack itemStack = super.finishUsing(stack, world, user);
if (!world.isClient) {
PlayerEntity player = (PlayerEntity)user;
player.addStatusEffect(new StatusEffectInstance(StatusEffects.GLOWING, 600, 0, false, false));
player.addStatusEffect(new StatusEffectInstance(StatusEffects.NIGHT_VISION, 600, 0, false, false));
player.addStatusEffect(glowing);
player.addStatusEffect(vision);
player.playSound(SoundEvents.BLOCK_BUBBLE_COLUMN_UPWARDS_INSIDE, SoundCategory.AMBIENT, 0.8f, 0.8f);
return user instanceof PlayerEntity && ((PlayerEntity) user).getAbilities().creativeMode ? itemStack : new ItemStack(Items.GLASS_BOTTLE);
}
Expand All @@ -50,7 +50,7 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> too
}

public int getMaxUseTime(ItemStack stack) {
return 40;
return MAX_USE_TIME;
}

public UseAction getUseAction(ItemStack stack) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.github.ethanicuss.astraladditions.mixin.knockback;

import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(PlayerEntity.class)
public class AttackKnockbackCompatMixin {

@Redirect(method = "attack(Lnet/minecraft/entity/Entity;)V",
at = @At(value = "FIELD",
target = "Lnet/minecraft/entity/attribute/EntityAttributes;ATTACK_KNOCKBACK:Lnet/minecraft/entity/attribute/EntityAttribute;")
)
private EntityAttribute redirectAttackKnockbackAttribute() {
return EntityAttributes.GENERIC_ATTACK_KNOCKBACK;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.github.ethanicuss.astraladditions.mixin.knockback;

import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.mob.MobEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(MobEntity.class)
public class MobAttackKnockbackCompatMixin {

@Redirect(method = "tryAttack(Lnet/minecraft/entity/Entity;)Z",
at = @At(value = "FIELD",
target = "Lnet/minecraft/entity/attribute/EntityAttributes;ATTACK_KNOCKBACK:Lnet/minecraft/entity/attribute/EntityAttribute;"),
require = 0
)
private EntityAttribute redirectAttackKnockbackAttribute() {
return EntityAttributes.GENERIC_ATTACK_KNOCKBACK;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.ethanicuss.astraladditions.musicplayer;

import com.github.ethanicuss.astraladditions.AstralAdditions;
import com.github.ethanicuss.astraladditions.AstralAdditionsClient;
import com.github.ethanicuss.astraladditions.entities.shimmerblaze.ShimmerBlazeEntity;
import com.github.ethanicuss.astraladditions.registry.ModMusic;
Expand All @@ -10,6 +11,8 @@
import net.minecraft.entity.boss.dragon.EnderDragonEntity;
import net.minecraft.entity.mob.HostileEntity;
import net.minecraft.sound.MusicSound;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.TypeFilter;
import net.minecraft.util.math.Box;

Expand All @@ -18,6 +21,8 @@
import java.util.function.Predicate;

public class MusicPlayer {
private static MusicSound lastShown = null;

private static final Predicate<WitherEntity> WITHER_PREDICATE = (entity) -> {
return true;
};
Expand Down Expand Up @@ -218,6 +223,25 @@ public static MusicSound findMusic(MusicTracker musicTracker){
}
}
}
maybeShowNowPlaying(val, musicTracker);
return val;
}
}

private static void maybeShowNowPlaying(MusicSound next, MusicTracker tracker) {
if (next == null || next == lastShown) return;

if (!ModMusic.isCustom(next)) {
lastShown = next;
return;
}

String key = ModMusic.getTrackKey(next);
if (key != null) {
Text title = new TranslatableText(AstralAdditions.MOD_ID + ".music." + key + ".title");
Text artist = new TranslatableText(AstralAdditions.MOD_ID + ".music." + key + ".artist");
NowPlayingHud.show(title, artist);
}

lastShown = next;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.github.ethanicuss.astraladditions.musicplayer;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;

public class NowPlayingHud {

private static final int showTick = 20*4;
private static final int fadeTick = 20;

private static Text title = Text.of("");
private static Text artist = Text.of("");
private static int ticksLeft = 0;

private NowPlayingHud() {}

public static void show(Text titleText, Text artistText) {
title = titleText;
artist = artistText;
ticksLeft = showTick + fadeTick * 2;
}

public static void tick() {
if (ticksLeft > 0) ticksLeft--;
}

public static void render(MatrixStack matrices) {
if (ticksLeft <= 0) return;

MinecraftClient client = MinecraftClient.getInstance();
if (client.options.hudHidden) return;

float alpha = 1.0f;
if (ticksLeft > showTick + fadeTick) {
//fading out
int tick = (showTick + fadeTick * 2) - ticksLeft;
alpha = Math.min(1.0f, tick / (float) fadeTick);
} else if (ticksLeft < fadeTick) {
//fading out
alpha = ticksLeft / (float) fadeTick;
}

int a = ((int)(alpha * 255.0f) & 0xFF) << 24;

Text line1 = title;
Text line2 = artist;

TextRenderer textRenderer = client.textRenderer;
int x = 10;
int y = 10;

int w = Math.max(textRenderer.getWidth(line1), textRenderer.getWidth(line2));
int h = textRenderer.fontHeight * 2 + 6;

DrawableHelper.fill(matrices, x - 4, y - 4, x + w + 4, y + h, a | 0x101010);

textRenderer.drawWithShadow(matrices, line1, x, y, a | 0xFFFFFF);
textRenderer.drawWithShadow(matrices, line2, x, y + textRenderer.fontHeight + 2, a | 0xB0B0B0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,25 +80,11 @@ private static ToIntFunction<BlockState> createLightLevelFromLitBlockState(int l
public static final BlockItem JAR_ITEM = new BlockItem(JAR_BLOCK, new FabricItemSettings().group(ItemGroup.DECORATIONS));
public static final BlockEntityType<JarBlockEntity> JAR_BLOCKENTITY = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(AstralAdditions.MOD_ID, "jar"), FabricBlockEntityTypeBuilder.create(JarBlockEntity::new, JAR_BLOCK).build());

public static final Block DESIZER_1 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_2 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_3 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_4 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_6 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_7 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_8 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_9 = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));

public static final Block DESIZER_CONTROLLER = new DesizerControllerBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));
public static final Block DESIZER_BASE = new DesizerCasingBlock(FabricBlockSettings.of(Material.METAL).sounds(BlockSoundGroup.METAL).strength(3.0f));

public static final BlockItem DESIZER_1_ITEM = new BlockItem(DESIZER_1, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_2_ITEM = new BlockItem(DESIZER_2, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_3_ITEM = new BlockItem(DESIZER_3, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_4_ITEM = new BlockItem(DESIZER_4, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_6_ITEM = new BlockItem(DESIZER_6, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_7_ITEM = new BlockItem(DESIZER_7, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_8_ITEM = new BlockItem(DESIZER_8, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_9_ITEM = new BlockItem(DESIZER_9, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));

public static final BlockItem DESIZER_CONTROLLER_ITEM = new BlockItem(DESIZER_CONTROLLER, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));
public static final BlockItem DESIZER_BASE_ITEM = new BlockItem(DESIZER_BASE, new FabricItemSettings().group(ItemGroup.BUILDING_BLOCKS));

Expand All @@ -124,14 +110,7 @@ public static void registerBlocks() {
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "ender_tip"), ENDER_TIP_BLOCK);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "ender_sprouts"), ENDER_SPROUT_BLOCK);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "pearl_pod"), PEARL_POD_BLOCK);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_1"), DESIZER_1);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_2"), DESIZER_2);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_3"), DESIZER_3);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_4"), DESIZER_4);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_6"), DESIZER_6);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_7"), DESIZER_7);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_8"), DESIZER_8);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_9"), DESIZER_9);

Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_controller"), DESIZER_CONTROLLER);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "desizer_base"), DESIZER_BASE);
Registry.register(Registry.BLOCK, new Identifier(AstralAdditions.MOD_ID, "the_end"), THE_END_BLOCK);
Expand All @@ -149,14 +128,7 @@ public static void registerBlockItems() {
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "ender_tip"), ENDER_TIP_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "ender_sprouts"), ENDER_SPROUT_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "pearl_pod"), PEARL_POD_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_1"), DESIZER_1_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_2"), DESIZER_2_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_3"), DESIZER_3_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_4"), DESIZER_4_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_6"), DESIZER_6_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_7"), DESIZER_7_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_8"), DESIZER_8_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_9"), DESIZER_9_ITEM);

Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_controller"), DESIZER_CONTROLLER_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "desizer_base"), DESIZER_BASE_ITEM);
Registry.register(Registry.ITEM, new Identifier(AstralAdditions.MOD_ID, "the_end"), THE_END_BLOCK_ITEM);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.github.ethanicuss.astraladditions.registry;

import com.github.ethanicuss.astraladditions.AstralAdditions;
import com.github.ethanicuss.astraladditions.AstralAdditionsClient;
import com.github.ethanicuss.astraladditions.entities.blackhole.BlackholeEntity;
import com.github.ethanicuss.astraladditions.entities.blackhole.BlackholeEntityRenderer;
import com.github.ethanicuss.astraladditions.entities.boomerang.BoomerangEntity;
Expand Down Expand Up @@ -57,6 +56,7 @@
import net.minecraft.util.registry.Registry;



public class ModEntities {
public static final EntityType<MoonmanEntity> MOONMAN = Registry.register(
Registry.ENTITY_TYPE,
Expand Down Expand Up @@ -184,7 +184,6 @@ public static void registerEntities() {
FabricDefaultAttributeRegistry.register(ENDER_WATCHER, EnderWatcherEntity.createWatcherAttributes());
FabricDefaultAttributeRegistry.register(GLAZER, GlazerEntity.createGlazerAttributes());
FabricDefaultAttributeRegistry.register(BLACKHOLE, BlackholeEntity.createBlackholeAttributes());

}

public static void registerClient() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.github.ethanicuss.astraladditions.items.tools.ShimmerBlowerItem;
import com.github.ethanicuss.astraladditions.items.tools.ShimmerFishingRodItem;
import com.github.ethanicuss.astraladditions.items.weapons.*;
import com.simibubi.create.content.equipment.goggles.GogglesItem;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

import net.minecraft.sound.MusicSound;

import javax.annotation.Nullable;
import java.util.IdentityHashMap;
import java.util.Map;

public class ModMusic {
private static final int GAME_MIN_DELAY = 12000;
private static final int GAME_MAX_DELAY = 24000;//12000, 24000
Expand All @@ -28,4 +32,44 @@ public class ModMusic {
public static final MusicSound SHIMMER_BLAZE = new MusicSound(ModSounds.MUSIC_SHIMMER_BLAZE, 0, 0, true);
public static final MusicSound ASTRAL_LAKES_REMIX = new MusicSound(ModSounds.MUSIC_ASTRAL_LAKES_REMIX, 0, 0, true);


private static final Map<MusicSound, String> TRACK_KEYS = new IdentityHashMap<>();

static {
register(MOON, "moon");
register(POST_MOON, "post_moon");
register(DAY, "day");
register(NIGHT, "night");
register(OW_DAY, "ow_day");
register(OW_NIGHT, "ow_night");
register(OW_CAVE, "ow_cave");
register(OW_SCARY, "ow_scary");
register(ORBIT, "orbit");
register(MERCURY, "mercury");
register(MARS, "mars");
register(END, "end");
register(END_BOSS, "end_boss");
register(WITHER, "wither");
register(WITHER_PHASE2, "wither_phase2");
register(WITHER_SPAWN, "wither_spawn");
register(WITHER_DEATH, "wither_death");
register(COMBAT, "combat");
register(COMBAT_END, "combat_end");
register(SHIMMER_BLAZE, "shimmer_blaze");
register(ASTRAL_LAKES_REMIX,"astral_lakes_remix");
}

private static void register(MusicSound sound, String key) {
TRACK_KEYS.put(sound, key);
}

public static boolean isCustom(MusicSound sound) {
return TRACK_KEYS.containsKey(sound);
}

@Nullable
public static String getTrackKey(MusicSound sound) {
return TRACK_KEYS.get(sound);
}

}
Loading
Loading