Skip to content
Merged
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 @@ -4,10 +4,12 @@
import io.wispforest.affinity.blockentity.template.TickedBlockEntity;
import io.wispforest.affinity.object.AffinityBlocks;
import io.wispforest.affinity.object.AffinityEnchantments;
import io.wispforest.affinity.object.AffinityStatusEffects;
import net.minecraft.block.BlockState;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.decoration.ItemFrameEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
Expand Down Expand Up @@ -38,6 +40,11 @@ public void tickServer() {
for (var entity : this.world.getNonSpectatingEntities(Entity.class, searchArea)) {
if (currentRepairCost.getValue() > this.flux() - REPAIR_COST_PER_ITEM) break;

if (entity instanceof LivingEntity living && living.hasStatusEffect(AffinityStatusEffects.AFFINE) && living.getMaxHealth() > living.getHealth()) {
((LivingEntity) entity).heal(1);
currentRepairCost.add(REPAIR_COST_PER_ITEM);
}

if (entity instanceof PlayerEntity) {
entity.getItemsEquipped().forEach(AffineInfuserBlockEntity::repairIfEnchanted);
} else if (entity instanceof ItemFrameEntity frame) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public void generateItemModels(ItemModelGenerator generator) {
generated(generator, AZALEA_FLOWERS, AETHUM_FLUX_BOTTLE, AZALEA_BOAT,
MILDLY_ATTUNED_AMETHYST_SHARD, FAIRLY_ATTUNED_AMETHYST_SHARD, GREATLY_ATTUNED_AMETHYST_SHARD,
STONE_SOCLE_ORNAMENT, PRISMARINE_SOCLE_ORNAMENT, PURPUR_SOCLE_ORNAMENT,
AETHUM_MAP_PROTOTYPE, REALIZED_AETHUM_MAP, ANTHRACITE_POWDER, RESPLENDENT_GEM, ECHO_SHARD);
AETHUM_MAP_PROTOTYPE, REALIZED_AETHUM_MAP, ANTHRACITE_POWDER, RESPLENDENT_GEM, ECHO_SHARD,
AFFINITEA);

handheld(generator, COLLECTION_STAFF, WAND_OF_INQUIRY);

Expand Down
30 changes: 30 additions & 0 deletions src/main/java/io/wispforest/affinity/item/AffiniteaItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.wispforest.affinity.item;

import io.wispforest.affinity.object.AffinityItems;
import io.wispforest.affinity.object.AffinityStatusEffects;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.item.FoodComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.UseAction;

public class AffiniteaItem extends Item {
public AffiniteaItem() {
super(AffinityItems.settings(0)
.food(new FoodComponent.Builder()
.statusEffect(new StatusEffectInstance(AffinityStatusEffects.AFFINE, 300 * 20), 1.0F)
.alwaysEdible()
.build()));
}

@Override
public UseAction getUseAction(ItemStack stack) {
return UseAction.DRINK;
}

@Override
public SoundEvent getEatSound() {
return getDrinkSound();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public class AffinityItems implements ItemRegistryContainer {
public static final Item AZALEA_BOAT = new BoatItem(AffinityBlocks.AZALEA_BOAT_TYPE, settings(AffinityItemGroup.NATURE).maxCount(1));

public static final Item ECHO_SHARD = new EchoShardItem();
public static final Item AFFINITEA = new AffiniteaItem();

public static OwoItemSettings settings(int tab) {
return new OwoItemSettings().tab(tab).group(Affinity.AFFINITY_GROUP);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class AffinityStatusEffects {
public static final StatusEffect IMPENDING_DOOM = new ImpendingDoomStatusEffect(StatusEffectCategory.HARMFUL, 0x000000);
public static final StatusEffect BASTION_REGENERATION = new BastionRegeneration(StatusEffectCategory.BENEFICIAL, 0xfd5c5b);
public static final StatusEffect BANISHED = new BanishedStatusEffect(StatusEffectCategory.BENEFICIAL, 0xc9b6b3);
public static final StatusEffect AFFINE = new AffinityStatusEffect(StatusEffectCategory.BENEFICIAL, 0x0000ff);

public static final StatusEffect STEADFAST = new AffinityStatusEffect(StatusEffectCategory.BENEFICIAL, 0x222222)
.addAttributeModifier(
Expand All @@ -49,6 +50,7 @@ public static void register() {

Registry.register(Registry.STATUS_EFFECT, Affinity.id("dripping"), DRIPPING);
Registry.register(Registry.STATUS_EFFECT, Affinity.id("bastion_regeneration"), BASTION_REGENERATION);
Registry.register(Registry.STATUS_EFFECT, Affinity.id("affine"), AFFINE);

Registry.register(Registry.POTION, Affinity.id("dubious"), PotionMixture.DUBIOUS_POTION);
Registry.register(Registry.RECIPE_SERIALIZER, Affinity.id("crafting_special_potiondye"), GlowingPotionDyeRecipe.SERIALIZER);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import io.wispforest.affinity.misc.potion.PotionMixture;
import io.wispforest.affinity.object.AffinityParticleSystems;
import io.wispforest.affinity.object.AffinityStatusEffects;
import net.fabricmc.api.EnvType;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.attribute.AttributeContainer;
import net.minecraft.entity.effect.StatusEffectCategory;
Expand All @@ -27,12 +29,13 @@ public BanishedStatusEffect(StatusEffectCategory category, int color) {
}

static {
ItemTooltipCallback.EVENT.register((stack, context, lines) -> {
if (PotionUtil.getPotionEffects(stack).stream().noneMatch(x -> x.getEffectType() == AffinityStatusEffects.BANISHED)) return;
if (!stack.has(PotionMixture.EXTRA_DATA)) return;
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT)
ItemTooltipCallback.EVENT.register((stack, context, lines) -> {
if (PotionUtil.getPotionEffects(stack).stream().noneMatch(x -> x.getEffectType() == AffinityStatusEffects.BANISHED)) return;
if (!stack.has(PotionMixture.EXTRA_DATA)) return;

EchoShardItem.formatLocationTooltip(stack.get(PotionMixture.EXTRA_DATA), lines);
});
EchoShardItem.formatLocationTooltip(stack.get(PotionMixture.EXTRA_DATA), lines);
});
}

@Override
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/assets/affinity/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"item.affinity.aethum_flux_bottle": "Bottle of Aethum Flux",
"item.affinity.resplendent_gem": "Resplendent Gem",
"item.affinity.echo_shard": "Echo Shard",
"item.affinity.affinitea": "Affinitea",

"text.affinity.attuned_shard_range": "Range: ",
"text.affinity.attuned_shard_range.value": "%d blocks",
Expand Down Expand Up @@ -120,6 +121,7 @@

"effect.affinity.dripping": "Dripping",
"effect.affinity.bastion_regeneration": "Bastion",
"effect.affinity.affine": "Affine",

"effect.affinity.life_leech": "Life Leech",
"item.minecraft.potion.effect.life_leech": "Potion of Life Leech",
Expand Down
6 changes: 6 additions & 0 deletions src/main/resources/assets/affinity/models/item/affinitea.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "affinity:item/affinitea"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.