Skip to content

Commit

Permalink
Staffs (more or less)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lyof429 committed May 5, 2024
1 parent c0072f0 commit 84abdf8
Show file tree
Hide file tree
Showing 8 changed files with 177 additions and 83 deletions.
3 changes: 3 additions & 0 deletions src/main/java/net/lyof/sortilege/Sortilege.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.fabricmc.api.ModInitializer;
import net.lyof.sortilege.configs.ModJsonConfigs;
import net.lyof.sortilege.enchants.ModEnchants;
import net.lyof.sortilege.item.ModItemGroups;
import net.lyof.sortilege.item.ModItems;
import net.minecraft.util.Identifier;
Expand All @@ -18,6 +19,8 @@ public void onInitialize() {

ModItems.register();
ModItemGroups.register();

ModEnchants.register();
}

public static Identifier makeID(String name) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/net/lyof/sortilege/configs/ModJsonConfigs.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.minecraft.util.Identifier;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Triple;

import java.io.File;
import java.io.FileWriter;
Expand Down Expand Up @@ -39,7 +40,7 @@ public static class StaffInfo {
public int cooldown;
public int charge_time;
public int xp_cost;
public List<MutableTriple<Float, Float, Float>> colors = new ArrayList<>();
public List<Triple<Float, Float, Float>> colors = new ArrayList<>();
public boolean fireRes;
public String dependency;

Expand Down
43 changes: 30 additions & 13 deletions src/main/java/net/lyof/sortilege/enchants/ModEnchants.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@
import net.lyof.sortilege.Sortilege;
import net.lyof.sortilege.enchants.armor.MagicProtectionEnchantment;
import net.lyof.sortilege.enchants.common.SoulboundEnchantment;
import net.lyof.sortilege.enchants.staff.CurseStaffEnchantment;
import net.lyof.sortilege.enchants.staff.ElementalStaffEnchantment;
import net.lyof.sortilege.enchants.staff.StaffEnchantment;
import net.lyof.sortilege.enchants.weapon.ArcaneEnchantment;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Triple;

import java.util.List;

public class ModEnchants {
public static void register() {}
Expand All @@ -15,7 +24,7 @@ public static Enchantment register(String name, Enchantment enchant) {
return Registry.register(Registries.ENCHANTMENT, Sortilege.makeID(name), enchant);
}

/*

// STAFF ENCHANTS
public static Enchantment POTENCY = register("potency",
new StaffEnchantment(Enchantment.Rarity.COMMON, 5));
Expand All @@ -28,35 +37,43 @@ public static Enchantment register(String name, Enchantment enchant) {

public static Enchantment PUSH = register("push",
new StaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
null, (candidate) -> !candidate.getDescriptionId().equals("enchantment.sortilege.pull")));
null, (candidate) -> !candidate.getTranslationKey().equals("enchantment.sortilege.pull")));
public static Enchantment PULL = register("pull",
new StaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
null, (candidate) -> !candidate.getDescriptionId().equals("enchantment.sortilege.push")));
null, (candidate) -> !candidate.getTranslationKey().equals("enchantment.sortilege.push")));


public static Enchantment BRAZIER = register("brazier",
new ElementalStaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
List.of(new Triple<>(1f, 0.7f, 0f), new Triple<>(1f, 1f, 0f), new Triple<>(1f, 0.85f, 0f)),
(target, level) -> target.setSecondsOnFire(level * 4)));
List.of(new MutableTriple<>(1f, 0.7f, 0f),
new MutableTriple<>(1f, 1f, 0f),
new MutableTriple<>(1f, 0.85f, 0f)),
(target, level) -> target.setOnFireFor(level * 4)));
public static Enchantment BLIZZARD = register("blizzard",
new ElementalStaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
List.of(new Triple<>(0.7f, 0.7f, 1f), new Triple<>(0.8f, 0.9f, 1f)),
(target, level) -> target.setTicksFrozen(target.getTicksFrozen() + 150*level)));
List.of(new MutableTriple<>(0.7f, 0.7f, 1f),
new MutableTriple<>(0.8f, 0.9f, 1f)),
(target, level) -> target.setFrozenTicks(target.getFrozenTicks() + 150*level)));
public static Enchantment BLAST = register("blast",
new ElementalStaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
List.of(new Triple<>(0.5f, 0.25f, 0f), new Triple<>(0.8f, 0.2f, 0f), new Triple<>(1f, 0.4f, 0f)),
List.of(new MutableTriple<>(0.5f, 0.25f, 0f),
new MutableTriple<>(0.8f, 0.2f, 0f),
new MutableTriple<>(1f, 0.4f, 0f)),
null));
public static Enchantment BLITZ = register("blitz",
new ElementalStaffEnchantment(Enchantment.Rarity.UNCOMMON, 2,
List.of(new Triple<>(1f, 1f, 0f), new Triple<>(1f, 1f, 0.5f), new Triple<>(1f, 1f, 0.75f)), (target, level) -> {
target.setDeltaMovement(0, -1, 0);
target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, 40 * level));
target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 40 * level));
List.of(new MutableTriple<>(1f, 1f, 0f),
new MutableTriple<>(1f, 1f, 0.5f),
new MutableTriple<>(1f, 1f, 0.75f)),
(target, level) -> {
target.setVelocity(0, -1, 0);
target.addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 40 * level));
target.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 40 * level));
}));

public static Enchantment IGNORANCE_CURSE = register("ignorance_curse",
new CurseStaffEnchantment(Enchantment.Rarity.RARE));
*/


// EXTRA ENCHANTS
public static Enchantment MAGIC_PROTECTION = register("magic_protection",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package net.lyof.sortilege.enchants.staff;

import net.lyof.sortilege.item.custom.StaffItem;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentTarget;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;

import java.util.function.BiConsumer;
import java.util.function.Predicate;
Expand Down Expand Up @@ -39,4 +41,9 @@ public void triggerAttack(LivingEntity target, int level) {
public int getMaxLevel() {
return this.maxLevel;
}

@Override
public boolean isAcceptableItem(ItemStack stack) {
return stack.getItem() instanceof StaffItem;
}
}
11 changes: 11 additions & 0 deletions src/main/java/net/lyof/sortilege/item/ModItemGroups.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package net.lyof.sortilege.item;

import com.mojang.datafixers.util.Pair;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.lyof.sortilege.Sortilege;
import net.lyof.sortilege.configs.ModJsonConfigs;
import net.lyof.sortilege.item.custom.StaffItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroups;

public class ModItemGroups {
public static void register() {
ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(entries -> {
entries.add(ModItems.LIMITITE);
});
ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register(entries -> {
Sortilege.log(ModItems.STAFFS);
for (Pair<String, ModJsonConfigs.StaffInfo> staff : ModJsonConfigs.STAFFS) {
Sortilege.log(staff.getFirst());
}
});
}
}
18 changes: 17 additions & 1 deletion src/main/java/net/lyof/sortilege/item/ModItems.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
package net.lyof.sortilege.item;

import com.mojang.datafixers.util.Pair;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.fabricmc.loader.api.FabricLoader;
import net.lyof.sortilege.Sortilege;
import net.lyof.sortilege.configs.ModJsonConfigs;
import net.lyof.sortilege.item.custom.LimititeItem;
import net.lyof.sortilege.item.custom.StaffItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;

import java.util.HashMap;
import java.util.Map;

public class ModItems {
public static void register() {}
public static Map<String, Item> STAFFS = new HashMap<>();

public static void register() {
for (Pair<String, ModJsonConfigs.StaffInfo> pair : ModJsonConfigs.STAFFS) {
String id = pair.getFirst();
ModJsonConfigs.StaffInfo staff = pair.getSecond();
if (FabricLoader.getInstance().isModLoaded(staff.dependency))
STAFFS.put(id, register(id, new StaffItem(staff, new FabricItemSettings().maxCount(1))));
}
}

public static Item register(String name, Item item) {
return Registry.register(Registries.ITEM, Sortilege.makeID(name), item);
Expand Down
Loading

0 comments on commit 84abdf8

Please sign in to comment.