From 324094f41867f512fb16e3ce7eb76138197eec9a Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Tue, 17 Dec 2019 15:53:40 +0000 Subject: [PATCH] 'Tis the season! - Decked the halls - Jingled the bells - Wrapped the presents - Loaded up the sleigh --- .../java/electroblob/wizardry/Wizardry.java | 7 ++ .../client/model/ModelWizardArmour.java | 12 +++ .../wizardry/client/model/WizardryModels.java | 81 +++++++++++------- .../wizardry/entity/living/EntityWizard.java | 4 +- .../entity/projectile/EntityMagicMissile.java | 38 ++++++-- .../wizardry/item/ItemBlankScroll.java | 3 + .../electroblob/wizardry/item/ItemScroll.java | 6 +- .../wizardry/item/ItemSpellBook.java | 1 + .../electroblob/wizardry/item/ItemWand.java | 5 +- .../wizardry/item/ItemWizardArmour.java | 9 +- .../electroblob/wizardry/registry/Spells.java | 7 +- .../wizardry/registry/WizardrySounds.java | 1 + .../wizardry/spell/EmpoweringPresence.java | 7 ++ .../wizardry/spell/InvigoratingPresence.java | 6 ++ .../electroblob/wizardry/spell/Spell.java | 20 +++-- .../wizardry/spell/SummonSnowGolem.java | 9 ++ .../assets/ebwizardry/lang/en_gb.lang | 5 ++ .../assets/ebwizardry/lang/en_us.lang | 5 ++ .../ebwizardry/models/item/blank_scroll.json | 10 ++- .../models/item/festive_scroll.json | 6 ++ .../models/item/festive_spell_book.json | 6 ++ .../ebwizardry/models/item/festive_wand.json | 6 ++ .../assets/ebwizardry/models/item/scroll.json | 10 ++- .../ebwizardry/models/item/spell_book.json | 10 ++- .../resources/assets/ebwizardry/sounds.json | 3 +- .../assets/ebwizardry/sounds/hohoho.ogg | Bin 0 -> 22371 bytes .../armour/wizard_armour_earth_legs.png | Bin 1851 -> 0 bytes .../textures/armour/wizard_armour_festive.png | Bin 0 -> 13234 bytes .../armour/wizard_armour_festive_legs.png | Bin 0 -> 1862 bytes .../textures/gui/spell_hud/_index.json | 4 + .../textures/gui/spell_hud/festive.json | 33 +++++++ .../textures/gui/spell_hud/festive.png | Bin 0 -> 26303 bytes .../textures/items/scroll_festive.png | Bin 0 -> 2426 bytes .../textures/items/spell_book_festive.png | Bin 0 -> 2192 bytes .../textures/items/wand_festive.png | Bin 0 -> 1664 bytes 35 files changed, 252 insertions(+), 62 deletions(-) create mode 100644 src/main/resources/assets/ebwizardry/models/item/festive_scroll.json create mode 100644 src/main/resources/assets/ebwizardry/models/item/festive_spell_book.json create mode 100644 src/main/resources/assets/ebwizardry/models/item/festive_wand.json create mode 100644 src/main/resources/assets/ebwizardry/sounds/hohoho.ogg delete mode 100644 src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_earth_legs.png create mode 100644 src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive.png create mode 100644 src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive_legs.png create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.json create mode 100644 src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.png create mode 100644 src/main/resources/assets/ebwizardry/textures/items/scroll_festive.png create mode 100644 src/main/resources/assets/ebwizardry/textures/items/spell_book_festive.png create mode 100644 src/main/resources/assets/ebwizardry/textures/items/wand_festive.png diff --git a/src/main/java/electroblob/wizardry/Wizardry.java b/src/main/java/electroblob/wizardry/Wizardry.java index 74187947..4afa01ae 100644 --- a/src/main/java/electroblob/wizardry/Wizardry.java +++ b/src/main/java/electroblob/wizardry/Wizardry.java @@ -32,6 +32,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry; import org.apache.logging.log4j.Logger; import java.io.File; +import java.util.Calendar; /** * "Electroblob's Wizardry adds an RPG-like system of spells to Minecraft, with the aim of being as playable as @@ -88,6 +89,8 @@ public class Wizardry { * this folder contains the main config file and the global spell properties folder, if used. */ public static File configDirectory; + public static boolean tisTheSeason; + // The instance of wizardry that Forge uses. @Instance(Wizardry.MODID) public static Wizardry instance; @@ -106,6 +109,10 @@ public class Wizardry { configDirectory = new File(event.getModConfigurationDirectory(), Wizardry.MODID); settings.initConfig(event); + Calendar calendar = Calendar.getInstance(); + tisTheSeason = calendar.get(Calendar.MONTH) + 1 == 12 && calendar.get(Calendar.DAY_OF_MONTH) >= 24 + && calendar.get(Calendar.DAY_OF_MONTH) <= 26; + // Capabilities WizardData.register(); DispenserCastingData.register(); diff --git a/src/main/java/electroblob/wizardry/client/model/ModelWizardArmour.java b/src/main/java/electroblob/wizardry/client/model/ModelWizardArmour.java index 2bebd9c0..4a55d5ef 100644 --- a/src/main/java/electroblob/wizardry/client/model/ModelWizardArmour.java +++ b/src/main/java/electroblob/wizardry/client/model/ModelWizardArmour.java @@ -1,5 +1,6 @@ package electroblob.wizardry.client.model; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.block.BlockStatue; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -13,6 +14,7 @@ public class ModelWizardArmour extends ModelArmourFixer { ModelRenderer hatSegment4; ModelRenderer hatSegment5; ModelRenderer hatSegment6; + ModelRenderer hatBobble; ModelRenderer robe; public ModelWizardArmour(float delta){ @@ -75,6 +77,13 @@ public class ModelWizardArmour extends ModelArmourFixer { hatSegment6.mirror = true; setRotation(hatSegment6, -0.5585054F, 0F, 0F); + hatBobble = new ModelRenderer(this, 52, 47); + hatBobble.addBox(0F, 0F, 0F, 3, 3, 3); + hatBobble.setRotationPoint(-1.5F, -15.1F, 4F); + hatBobble.setTextureSize(64, 64); + hatBobble.mirror = true; + setRotation(hatBobble, -0.65F, 0F, 0F); + bipedBody = new ModelRenderer(this, 16, 16); bipedBody.addBox(-4F, 0F, -2F, 8, 11, 4, delta); bipedBody.setRotationPoint(0F, 0F, 0F); @@ -97,6 +106,7 @@ public class ModelWizardArmour extends ModelArmourFixer { bipedHead.addChild(hatSegment4); bipedHead.addChild(hatSegment5); bipedHead.addChild(hatSegment6); + bipedHead.addChild(hatBobble); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){ @@ -129,6 +139,8 @@ public class ModelWizardArmour extends ModelArmourFixer { this.robe.rotateAngleX = (this.bipedLeftLeg.rotateAngleX + this.bipedRightLeg.rotateAngleX) / 2f; this.robe.rotateAngleY = this.bipedBody.rotateAngleY; this.robe.rotateAngleZ = (this.bipedLeftLeg.rotateAngleZ + this.bipedRightLeg.rotateAngleZ) / 2f; + + this.hatBobble.showModel = Wizardry.tisTheSeason; } } diff --git a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java index cf58f5ca..05a6ccc0 100644 --- a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java +++ b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java @@ -67,10 +67,10 @@ public final class WizardryModels { registerMultiTexturedModel((ItemCrystal)WizardryItems.magic_crystal); - registerItemModel(WizardryItems.magic_wand); - registerItemModel(WizardryItems.apprentice_wand); - registerItemModel(WizardryItems.advanced_wand); - registerItemModel(WizardryItems.master_wand); + registerWandModel(WizardryItems.magic_wand); + registerWandModel(WizardryItems.apprentice_wand); + registerWandModel(WizardryItems.advanced_wand); + registerWandModel(WizardryItems.master_wand); registerItemModel(WizardryItems.spell_book); // Wildcard registered for wizard trades. @@ -78,37 +78,37 @@ public final class WizardryModels { registerItemModel(WizardryItems.arcane_tome); registerItemModel(WizardryItems.wizard_handbook); - registerItemModel(WizardryItems.novice_fire_wand); - registerItemModel(WizardryItems.novice_ice_wand); - registerItemModel(WizardryItems.novice_lightning_wand); - registerItemModel(WizardryItems.novice_necromancy_wand); - registerItemModel(WizardryItems.novice_earth_wand); - registerItemModel(WizardryItems.novice_sorcery_wand); - registerItemModel(WizardryItems.novice_healing_wand); + registerWandModel(WizardryItems.novice_fire_wand); + registerWandModel(WizardryItems.novice_ice_wand); + registerWandModel(WizardryItems.novice_lightning_wand); + registerWandModel(WizardryItems.novice_necromancy_wand); + registerWandModel(WizardryItems.novice_earth_wand); + registerWandModel(WizardryItems.novice_sorcery_wand); + registerWandModel(WizardryItems.novice_healing_wand); - registerItemModel(WizardryItems.apprentice_fire_wand); - registerItemModel(WizardryItems.apprentice_ice_wand); - registerItemModel(WizardryItems.apprentice_lightning_wand); - registerItemModel(WizardryItems.apprentice_necromancy_wand); - registerItemModel(WizardryItems.apprentice_earth_wand); - registerItemModel(WizardryItems.apprentice_sorcery_wand); - registerItemModel(WizardryItems.apprentice_healing_wand); + registerWandModel(WizardryItems.apprentice_fire_wand); + registerWandModel(WizardryItems.apprentice_ice_wand); + registerWandModel(WizardryItems.apprentice_lightning_wand); + registerWandModel(WizardryItems.apprentice_necromancy_wand); + registerWandModel(WizardryItems.apprentice_earth_wand); + registerWandModel(WizardryItems.apprentice_sorcery_wand); + registerWandModel(WizardryItems.apprentice_healing_wand); - registerItemModel(WizardryItems.advanced_fire_wand); - registerItemModel(WizardryItems.advanced_ice_wand); - registerItemModel(WizardryItems.advanced_lightning_wand); - registerItemModel(WizardryItems.advanced_necromancy_wand); - registerItemModel(WizardryItems.advanced_earth_wand); - registerItemModel(WizardryItems.advanced_sorcery_wand); - registerItemModel(WizardryItems.advanced_healing_wand); + registerWandModel(WizardryItems.advanced_fire_wand); + registerWandModel(WizardryItems.advanced_ice_wand); + registerWandModel(WizardryItems.advanced_lightning_wand); + registerWandModel(WizardryItems.advanced_necromancy_wand); + registerWandModel(WizardryItems.advanced_earth_wand); + registerWandModel(WizardryItems.advanced_sorcery_wand); + registerWandModel(WizardryItems.advanced_healing_wand); - registerItemModel(WizardryItems.master_fire_wand); - registerItemModel(WizardryItems.master_ice_wand); - registerItemModel(WizardryItems.master_lightning_wand); - registerItemModel(WizardryItems.master_necromancy_wand); - registerItemModel(WizardryItems.master_earth_wand); - registerItemModel(WizardryItems.master_sorcery_wand); - registerItemModel(WizardryItems.master_healing_wand); + registerWandModel(WizardryItems.master_fire_wand); + registerWandModel(WizardryItems.master_ice_wand); + registerWandModel(WizardryItems.master_lightning_wand); + registerWandModel(WizardryItems.master_necromancy_wand); + registerWandModel(WizardryItems.master_earth_wand); + registerWandModel(WizardryItems.master_sorcery_wand); + registerWandModel(WizardryItems.master_healing_wand); registerItemModel(WizardryItems.spectral_sword); registerItemModel(WizardryItems.spectral_pickaxe); @@ -303,6 +303,23 @@ public final class WizardryModels { // Assigns the model for all metadata values ModelLoader.setCustomMeshDefinition(item, s -> new ModelResourceLocation(item.getRegistryName(), "inventory")); } + + /** + * Registers a wand model, using the item's registry name as the model name (this convention makes it easier to + * keep track of everything). + */ + private static void registerWandModel(Item item){ + + if(Wizardry.tisTheSeason){ + // Changing the last parameter from null to "inventory" fixed the item/block model weirdness. No idea why! + ModelBakery.registerItemVariants(item, new ModelResourceLocation("ebwizardry:festive_wand", "inventory")); + // Assigns the model for all metadata values + ModelLoader.setCustomMeshDefinition(item, s -> new ModelResourceLocation("ebwizardry:festive_wand", "inventory")); + }else{ + registerItemModel(item); + } + + } /** * Registers an item model, using the itemstack-sensitive {@link IMultiTexturedItem#getModelName(ItemStack)} as the diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java b/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java index bc25a475..728be7d7 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java @@ -218,7 +218,8 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp // Copied from EntityVillager if(!this.world.isRemote && this.livingSoundTime > -this.getTalkInterval() + 20){ this.livingSoundTime = -this.getTalkInterval(); - this.playSound(stack.isEmpty() ? WizardrySounds.ENTITY_WIZARD_NO : WizardrySounds.ENTITY_WIZARD_YES, this.getSoundVolume(), this.getSoundPitch()); + SoundEvent yes = Wizardry.tisTheSeason ? WizardrySounds.ENTITY_WIZARD_HOHOHO : WizardrySounds.ENTITY_WIZARD_YES; + this.playSound(stack.isEmpty() ? WizardrySounds.ENTITY_WIZARD_NO : yes, this.getSoundVolume(), this.getSoundPitch()); } } @@ -256,6 +257,7 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp @Override protected SoundEvent getAmbientSound(){ + if(Wizardry.tisTheSeason) return WizardrySounds.ENTITY_WIZARD_HOHOHO; return this.isTrading() ? WizardrySounds.ENTITY_WIZARD_TRADING : WizardrySounds.ENTITY_WIZARD_AMBIENT; } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java index 9649b84a..c6565669 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java @@ -1,5 +1,6 @@ package electroblob.wizardry.entity.projectile; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.Spell; @@ -44,15 +45,34 @@ public class EntityMagicMissile extends EntityMagicArrow { public void tickInAir(){ if(this.world.isRemote){ - ParticleBuilder.create(Type.SPARKLE, rand, posX, posY, posZ, 0.03, true).clr(1, 1, 0.65f).fade(0.7f, 0, 1) - .time(20 + rand.nextInt(10)).spawn(world); - - if(this.ticksExisted > 1){ // Don't spawn particles behind where it started! - double x = posX - motionX/2; - double y = posY - motionY/2; - double z = posZ - motionZ/2; - ParticleBuilder.create(Type.SPARKLE, rand, x, y, z, 0.03, true).clr(1, 1, 0.65f).fade(0.7f, 0, 1) - .time(20 + rand.nextInt(10)).spawn(world); + + if(Wizardry.tisTheSeason){ + + ParticleBuilder.create(Type.SPARKLE, rand, posX, posY, posZ, 0.03, true).clr(0.8f, 0.15f, 0.15f) + .time(20 + rand.nextInt(10)).spawn(world); + + ParticleBuilder.create(Type.SNOW).pos(posX, posY, posZ).spawn(world); + + if(this.ticksExisted > 1){ // Don't spawn particles behind where it started! + double x = posX - motionX / 2; + double y = posY - motionY / 2; + double z = posZ - motionZ / 2; + ParticleBuilder.create(Type.SPARKLE, rand, x, y, z, 0.03, true).clr(0.15f, 0.7f, 0.15f) + .time(20 + rand.nextInt(10)).spawn(world); + } + + }else{ + + ParticleBuilder.create(Type.SPARKLE, rand, posX, posY, posZ, 0.03, true).clr(1, 1, 0.65f).fade(0.7f, 0, 1) + .time(20 + rand.nextInt(10)).spawn(world); + + if(this.ticksExisted > 1){ // Don't spawn particles behind where it started! + double x = posX - motionX / 2; + double y = posY - motionY / 2; + double z = posZ - motionZ / 2; + ParticleBuilder.create(Type.SPARKLE, rand, x, y, z, 0.03, true).clr(1, 1, 0.65f).fade(0.7f, 0, 1) + .time(20 + rand.nextInt(10)).spawn(world); + } } } } diff --git a/src/main/java/electroblob/wizardry/item/ItemBlankScroll.java b/src/main/java/electroblob/wizardry/item/ItemBlankScroll.java index dc15754e..9ed93134 100644 --- a/src/main/java/electroblob/wizardry/item/ItemBlankScroll.java +++ b/src/main/java/electroblob/wizardry/item/ItemBlankScroll.java @@ -1,5 +1,6 @@ package electroblob.wizardry.item; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.constants.Constants; import electroblob.wizardry.data.WizardData; import electroblob.wizardry.registry.Spells; @@ -11,11 +12,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemBlankScroll extends Item implements IWorkbenchItem { public ItemBlankScroll(){ this.setCreativeTab(WizardryTabs.WIZARDRY); + this.addPropertyOverride(new ResourceLocation("festive"), (s, w, e) -> Wizardry.tisTheSeason ? 1 : 0); } @Override diff --git a/src/main/java/electroblob/wizardry/item/ItemScroll.java b/src/main/java/electroblob/wizardry/item/ItemScroll.java index ee850f17..09c88bb8 100644 --- a/src/main/java/electroblob/wizardry/item/ItemScroll.java +++ b/src/main/java/electroblob/wizardry/item/ItemScroll.java @@ -14,10 +14,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; +import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; @@ -37,6 +34,7 @@ public class ItemScroll extends Item implements ISpellCastingItem { setHasSubtypes(true); setMaxStackSize(16); setCreativeTab(WizardryTabs.SPELLS); + this.addPropertyOverride(new ResourceLocation("festive"), (s, w, e) -> Wizardry.tisTheSeason ? 1 : 0); } @Override diff --git a/src/main/java/electroblob/wizardry/item/ItemSpellBook.java b/src/main/java/electroblob/wizardry/item/ItemSpellBook.java index 167d2c94..003b9bd1 100644 --- a/src/main/java/electroblob/wizardry/item/ItemSpellBook.java +++ b/src/main/java/electroblob/wizardry/item/ItemSpellBook.java @@ -33,6 +33,7 @@ public class ItemSpellBook extends Item { setHasSubtypes(true); setMaxStackSize(16); setCreativeTab(WizardryTabs.SPELLS); + this.addPropertyOverride(new ResourceLocation("festive"), (s, w, e) -> Wizardry.tisTheSeason ? 1 : 0); } @Override diff --git a/src/main/java/electroblob/wizardry/item/ItemWand.java b/src/main/java/electroblob/wizardry/item/ItemWand.java index f77a80b4..a6ec9ab1 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWand.java +++ b/src/main/java/electroblob/wizardry/item/ItemWand.java @@ -27,10 +27,7 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java index 1e7c2708..bb3af0cd 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java +++ b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java @@ -178,9 +178,14 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana String s = "wizard_armour"; - if(this.element != null) s = s + "_" + this.element.getName(); + if(Wizardry.tisTheSeason){ + s = s + "_festive"; + }else{ + if(this.element != null) s = s + "_" + this.element.getName(); + if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) s = "legendary_" + s; + } + if(slot == EntityEquipmentSlot.LEGS) s = s + "_legs"; - if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) s = "legendary_" + s; return "ebwizardry:textures/armour/" + s + ".png"; } diff --git a/src/main/java/electroblob/wizardry/registry/Spells.java b/src/main/java/electroblob/wizardry/registry/Spells.java index 5398da75..8ee1b188 100644 --- a/src/main/java/electroblob/wizardry/registry/Spells.java +++ b/src/main/java/electroblob/wizardry/registry/Spells.java @@ -243,7 +243,12 @@ public final class Spells { IForgeRegistry registry = event.getRegistry(); registry.register(new None()); - registry.register(new SpellArrow<>("magic_missile", EntityMagicMissile::new).addProperties(Spell.DAMAGE).soundValues(1, 1.4f, 0.4f)); + registry.register(new SpellArrow("magic_missile", EntityMagicMissile::new){ + @Override + protected String getTranslationKey(){ + return Wizardry.tisTheSeason ? super.getTranslationKey() + "_festive" : super.getTranslationKey(); + } + }.addProperties(Spell.DAMAGE).soundValues(1, 1.4f, 0.4f)); registry.register(new Ignite()); registry.register(new Freeze()); registry.register(new Snowball()); diff --git a/src/main/java/electroblob/wizardry/registry/WizardrySounds.java b/src/main/java/electroblob/wizardry/registry/WizardrySounds.java index 97f9f25e..8aefe1e9 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardrySounds.java +++ b/src/main/java/electroblob/wizardry/registry/WizardrySounds.java @@ -88,6 +88,7 @@ public final class WizardrySounds { public static final SoundEvent ENTITY_WIZARD_TRADING = createSound("entity.wizard.trading"); public static final SoundEvent ENTITY_WIZARD_HURT = createSound("entity.wizard.hurt"); public static final SoundEvent ENTITY_WIZARD_DEATH = createSound("entity.wizard.death"); + public static final SoundEvent ENTITY_WIZARD_HOHOHO = createSound("entity.wizard.hohoho"); public static final SoundEvent ENTITY_DARKNESS_ORB_HIT = createSound("entity.darkness_orb.hit"); public static final SoundEvent ENTITY_DART_HIT = createSound("entity.dart.hit"); diff --git a/src/main/java/electroblob/wizardry/spell/EmpoweringPresence.java b/src/main/java/electroblob/wizardry/spell/EmpoweringPresence.java index ad42d9c3..5363c8dd 100644 --- a/src/main/java/electroblob/wizardry/spell/EmpoweringPresence.java +++ b/src/main/java/electroblob/wizardry/spell/EmpoweringPresence.java @@ -1,5 +1,6 @@ package electroblob.wizardry.spell; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.constants.Constants; import electroblob.wizardry.event.SpellCastEvent; import electroblob.wizardry.registry.WizardryItems; @@ -66,6 +67,11 @@ public class EmpoweringPresence extends Spell { return true; } + @Override + protected String getTranslationKey(){ + return Wizardry.tisTheSeason ? super.getTranslationKey() + "_festive" : super.getTranslationKey(); + } + @SubscribeEvent(priority = EventPriority.LOW) // Doesn't really matter but there's no point processing it if casting is blocked public static void onSpellCastPreEvent(SpellCastEvent.Pre event){ // Empowerment stacks extra potency on top of the existing potency. @@ -78,4 +84,5 @@ public class EmpoweringPresence extends Spell { event.getModifiers().get(SpellModifiers.POTENCY) * potency, true); } } + } \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java b/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java index c6c473b8..a90b7a44 100644 --- a/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java +++ b/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java @@ -1,5 +1,6 @@ package electroblob.wizardry.spell; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.AllyDesignationSystem; import electroblob.wizardry.util.ParticleBuilder; @@ -62,4 +63,9 @@ public class InvigoratingPresence extends Spell { return true; } + @Override + protected String getTranslationKey(){ + return Wizardry.tisTheSeason ? super.getTranslationKey() + "_festive" : super.getTranslationKey(); + } + } diff --git a/src/main/java/electroblob/wizardry/spell/Spell.java b/src/main/java/electroblob/wizardry/spell/Spell.java index 91406f63..fb4fd3dd 100644 --- a/src/main/java/electroblob/wizardry/spell/Spell.java +++ b/src/main/java/electroblob/wizardry/spell/Spell.java @@ -597,13 +597,23 @@ public abstract class Spell extends IForgeRegistryEntry.Impl implements C * translating it. If, for whatever reason, you need to supply an ITextComponent but don't want it translated * (perhaps a name?), you can use TextComponentString, which will simply keep the raw string it is given. */ + /** Returns the translation key for this spell. */ + protected String getTranslationKey(){ + return "spell." + unlocalisedName; + } + + /** Returns the translation key for this spell's description. */ + protected String getDescriptionTranslationKey(){ + return "spell." + unlocalisedName + ".desc"; + } + /** * Returns the translated display name of the spell, without formatting (i.e. not coloured). Client-side * only! On the server side, use {@link TextComponentTranslation} (see {@link Spell#getNameForTranslation()}). */ @SideOnly(Side.CLIENT) public String getDisplayName(){ - return net.minecraft.client.resources.I18n.format("spell." + unlocalisedName); + return net.minecraft.client.resources.I18n.format(getTranslationKey()); } /** @@ -611,7 +621,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl implements C * formatting (i.e. not coloured). */ public ITextComponent getNameForTranslation(){ - return new TextComponentTranslation("spell." + unlocalisedName); + return new TextComponentTranslation(getTranslationKey()); } /** @@ -620,7 +630,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl implements C */ @SideOnly(Side.CLIENT) public String getDisplayNameWithFormatting(){ - return this.getElement().getFormattingCode() + net.minecraft.client.resources.I18n.format("spell." + unlocalisedName); + return this.getElement().getFormattingCode() + net.minecraft.client.resources.I18n.format(getTranslationKey()); } /** @@ -628,7 +638,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl implements C * formatting (i.e. coloured). */ public ITextComponent getNameForTranslationFormatted(){ - return new TextComponentTranslation("spell." + unlocalisedName).setStyle(this.getElement().getColour()); + return new TextComponentTranslation(getTranslationKey()).setStyle(this.getElement().getColour()); } /** @@ -637,7 +647,7 @@ public abstract class Spell extends IForgeRegistryEntry.Impl implements C */ @SideOnly(Side.CLIENT) public String getDescription(){ - return net.minecraft.client.resources.I18n.format("spell." + unlocalisedName + ".desc"); + return net.minecraft.client.resources.I18n.format(getDescriptionTranslationKey()); } // ============================================ Sound methods ============================================== diff --git a/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java b/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java index 2f77947c..b34f567d 100644 --- a/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java +++ b/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java @@ -1,5 +1,6 @@ package electroblob.wizardry.spell; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.SpellModifiers; @@ -9,7 +10,11 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class SummonSnowGolem extends Spell { @@ -45,4 +50,8 @@ public class SummonSnowGolem extends Spell { return true; } + @Override + protected String getTranslationKey(){ + return Wizardry.tisTheSeason ? super.getTranslationKey() + "_festive" : super.getTranslationKey(); + } } diff --git a/src/main/resources/assets/ebwizardry/lang/en_gb.lang b/src/main/resources/assets/ebwizardry/lang/en_gb.lang index 0e4044fb..271d5662 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_gb.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_gb.lang @@ -1289,4 +1289,9 @@ integration.antiqueatlas.marker.ebwizardry\:wizard_tower=Wizard Tower integration.antiqueatlas.marker.ebwizardry\:obelisk=Obelisk integration.antiqueatlas.marker.ebwizardry\:shrine=Shrine +spell.ebwizardry\:magic_missile_festive=Magic Mistletoe +spell.ebwizardry\:summon_snow_golem_festive=Summon Frosty The Snowman +spell.ebwizardry\:invigorating_presence_festive=Invigorating Presents +spell.ebwizardry\:empowering_presence_festive=Empowering Presents + wizard.debug=%1$s, %2$s, %3$s diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index c9513a61..cd320381 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -1289,4 +1289,9 @@ integration.antiqueatlas.marker.ebwizardry\:wizard_tower=Wizard Tower integration.antiqueatlas.marker.ebwizardry\:obelisk=Obelisk integration.antiqueatlas.marker.ebwizardry\:shrine=Shrine +spell.ebwizardry\:magic_missile_festive=Magic Mistletoe +spell.ebwizardry\:summon_snow_golem_festive=Summon Frosty The Snowman +spell.ebwizardry\:invigorating_presence_festive=Invigorating Presents +spell.ebwizardry\:empowering_presence_festive=Empowering Presents + wizard.debug=%1$s, %2$s, %3$s diff --git a/src/main/resources/assets/ebwizardry/models/item/blank_scroll.json b/src/main/resources/assets/ebwizardry/models/item/blank_scroll.json index 14f38c44..bcbf8838 100644 --- a/src/main/resources/assets/ebwizardry/models/item/blank_scroll.json +++ b/src/main/resources/assets/ebwizardry/models/item/blank_scroll.json @@ -2,5 +2,13 @@ "parent": "item/generated", "textures": { "layer0": "ebwizardry:items/scroll" - } + }, + "overrides": [ + { + "predicate": { + "festive": 1 + }, + "model": "ebwizardry:item/festive_scroll" + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/festive_scroll.json b/src/main/resources/assets/ebwizardry/models/item/festive_scroll.json new file mode 100644 index 00000000..18e8a816 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/festive_scroll.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/scroll_festive" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/item/festive_spell_book.json b/src/main/resources/assets/ebwizardry/models/item/festive_spell_book.json new file mode 100644 index 00000000..98e8e12e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/festive_spell_book.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "ebwizardry:items/spell_book_festive" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/item/festive_wand.json b/src/main/resources/assets/ebwizardry/models/item/festive_wand.json new file mode 100644 index 00000000..b31af7dd --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/festive_wand.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "ebwizardry:items/wand_festive" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/item/scroll.json b/src/main/resources/assets/ebwizardry/models/item/scroll.json index 14f38c44..bcbf8838 100644 --- a/src/main/resources/assets/ebwizardry/models/item/scroll.json +++ b/src/main/resources/assets/ebwizardry/models/item/scroll.json @@ -2,5 +2,13 @@ "parent": "item/generated", "textures": { "layer0": "ebwizardry:items/scroll" - } + }, + "overrides": [ + { + "predicate": { + "festive": 1 + }, + "model": "ebwizardry:item/festive_scroll" + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/item/spell_book.json b/src/main/resources/assets/ebwizardry/models/item/spell_book.json index e47489da..b5941b77 100644 --- a/src/main/resources/assets/ebwizardry/models/item/spell_book.json +++ b/src/main/resources/assets/ebwizardry/models/item/spell_book.json @@ -2,5 +2,13 @@ "parent": "item/generated", "textures": { "layer0": "ebwizardry:items/spell_book" - } + }, + "overrides": [ + { + "predicate": { + "festive": 1 + }, + "model": "ebwizardry:item/festive_spell_book" + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/sounds.json b/src/main/resources/assets/ebwizardry/sounds.json index ce50a30b..75efd3a7 100644 --- a/src/main/resources/assets/ebwizardry/sounds.json +++ b/src/main/resources/assets/ebwizardry/sounds.json @@ -62,7 +62,8 @@ "entity.wizard.no": {"category": "neutral", "sounds": ["mob/villager/no1", "mob/villager/no2", "mob/villager/no3"]}, "entity.wizard.hurt": {"category": "neutral", "sounds": ["mob/villager/hit1", "mob/villager/hit2", "mob/villager/hit3", "mob/villager/hit4"]}, "entity.wizard.death": {"category": "neutral", "sounds": ["mob/villager/death"]}, - + "entity.wizard.hohoho": {"category": "neutral", "sounds": ["ebwizardry:hohoho"]}, + "entity.darkness_orb.hit": {"category": "spells", "sounds": ["mob/wither/hurt1", "mob/wither/hurt2", "mob/wither/hurt3", "mob/wither/hurt4"]}, "entity.dart.hit": {"category": "spells", "sounds": ["damage/hit1", "damage/hit2", "damage/hit3"]}, "entity.dart.hit_block": {"category": "spells", "sounds": ["random/bowhit1", "random/bowhit2", "random/bowhit3"]}, diff --git a/src/main/resources/assets/ebwizardry/sounds/hohoho.ogg b/src/main/resources/assets/ebwizardry/sounds/hohoho.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ee09f4dfece03275fb4c55c00e1bcf94f506758c GIT binary patch literal 22371 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 IUJ?@@0IhOV;Q#;t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_earth_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_earth_legs.png deleted file mode 100644 index e1e6fad04a95c31f7b94097b1c0962e256ddd0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1851 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU{K&-V_;xdG`FsWfq}KHDkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4yyhNl(;x{+`z?V&N7LI?kvP`jpMGPHxL`bz9@zH}5Xd zs!s~PEzu(I{$;b@zvJ&G)*W`;`z$1K%hzjqFM3oJms#5#em7ja>;K2JjD6w$D3|=Rf2?v@5bE~ydGOi z@?Y%=og>DgzMy8o#RBfSo^5k>KMu<&WGrExE&Sc&}SSoPN;y z`P9=dFDvbQUh1*(_p%dARXU=q!rW^_OP(*+ExGnKeXncR)Lw;|oToU9?e4x@eJ+0I z{4S+!uZ40AzBY=!Idz*c@mN}(y&|iVMxM{l2i5PsEcyEP))6s-6YOb6*^ZmaYpGq{ zoj>((aidJU>D`AuN!ytmTDD3a3t(gpUwr7wi%D}@IV`k(NN%v1K1*Ff;aScUraK}o zO(|!qbI%A`ZJPOcvGht-mx4@J2VN$Ql&hyc$gkv*mx|e;mX@cp=1%37OIeSv&Dt_| zahu4>Lzi4!mY%+_C^T|**QzpE+wV;x$M%+b##X;iPPoW;m3cF}%CQ-h(<0T+o29;b zQ>?S&{HpHo=uIVGO?9FTTlSkyPRY94Hu><>JyzAlg+> zw6ni7?tH)5%{+Vd#;PYz=9-pt?^(HEu3tql+p!{51HIXd7A5!Q#CmOgcJ|J*H?KSb zTa6=>?>&*oJ$4|W^pwn(C-3I&eE(_Mj(;NgKcmkq^}W0QV9c#6chA&5d&_+-XHHiT zpQAOG`Lb|M6*G<PUcc%=z3cy-i{=Wd%n6-vFr8g$%vU+P@j~&smHm$y5)N*pK{}OJQx~y|&!=~)(5&YKpW#g>bt)HGw z6bN_C_2XR9)A}Uw;)J77oN`Zh8l=CJ`SB(0ezb39hKFgezlSxmC3oYk>E@xf#;G_m|C==+|d%TRCf8b-2rN|A_3?jqje>8U8zAT`PBBUY^>TOrLvV zK3$CIMbqvY9yl27-L*PIe&q~C{+#uxYpL-;>pg|WsBJ%6^x|rtE1hW*Tr4Zv70MjMEcb-%RkD}_ zBeQUq+~bh;qCE$ts*{&it7c^Krkh3BdHck3JkGVaFt2RytDDij{d+&n`0!d(a<{I= zgRi1fcsUt9u3s~|Ae&*1QC89PxyA|Z-?%0nk7RzwHvjlWk5jxlS=Jg~g_3IL9F?>J8w)kK4`eS0e^^TY4|5|k8qC-djVg?2Vwj^(N7lsoIPZ=2c`MLBM7#KJU zJR*x37`TN&n2}-D90>*n2KEw9Usv|WtZY0c;te@-N*EXz%{*NkLo)8Yoqm?@po2*3 zd6BCf85<5dC7ooh;Ntdw@NiG(TJa52HY6%8^W&CBMPJp1TrZB}9>AT^iK|DDTW&u68(3V9zaKlyUU zR`z78yFb`YSnso+H$_t6^)vGZqXiEn73$x(gv*D&W?=Z>mAk=9SgZC*w96jB^?Mwa zuKj*j^Y=6BBbV(rdkJq#iCVf^&B;vTb>^$Td%_j8n?Cb8R(S5!TYoM6sBGuNxdMgm TE9w~-7#KWV{an^LB{Ts53KwL# diff --git a/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive.png b/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive.png new file mode 100644 index 0000000000000000000000000000000000000000..00fa0cdcbe2bd3bbf9aff9c7152f0f5b6ecd9dd8 GIT binary patch literal 13234 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 S`E?8o3=E#GelF{r5}E+JaDsvW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive_legs.png b/src/main/resources/assets/ebwizardry/textures/armour/wizard_armour_festive_legs.png new file mode 100644 index 0000000000000000000000000000000000000000..9d881faff78338c789e1d8da8f8b321dab496b14 GIT binary patch literal 1862 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU{K&-V_;xdG`FsWfq}KLDkP#LD6w3jpeR2r zGbdG{q_QAYA+;hije()!*4yyNO>fkA{-%pYGC6S^ESeEARW{|P<)ON}}sEzWC{H;d}Sjwtso- zd`Kwy$?L6eX75XmohSX}nakt9RTnBhuQXr$`!Ijon@O>^e8cnI=Bz8-b>DgS_pg84 z=Kelj6=Bn1zc0Pja9YB|V2|0I%JYscHSjyoYd!C!jrXUiO*`j&J@Iwx+e68}4pw~S zzJ0VV_(OGYOGIANr-N?atxjg&mgU}SEBJTDvhVU{wk|cB=H6VD_WRPh=S<#H3$#V^ z#nRahF$RCS8CIZO*R*rq?uY9F3J<;D&fvRa9I%)rTRJuB%E^rRg_n*97T@wTTxKFX zf9t7PQM1^myfKdqIrZN-9&s$EToRsj)a^RF`sn^*dx@Dl zUkmLte4VO2M|&spBZW+W3CwVdiVkpB^w0n3DXAi?v!tyj$_h7hO9G z;}WAc)0$(5`Q989i^yiBYKPjx=XpB1&c(yGcXsJSR;si%HS(ZrxGvGakkk(;~3 zLf78f625Mymu_hG+O^-NNh!B_YWq5`Uc2?4;+E#p3oowK_AMq4+I_vp@!Fx;AT_80S3>8syY zTx5T;&%HPAip<8E7hgK1riIpTQ1DlOG=p*D6wZ#-$_(v(eUWRX6c;^_*?dE&$w??c zxv)UYGReUp-z(|Mfp?vEw(np)SZ5uK53N9 zb~95k6L@ng_-)+ef8QkjX*U0t{QJDeMtMc<$}S$eHHV+JKKP|=p1dPo^vGlpxkq0z z&m5IzytHY8d6eI@3105sVxx8+=l<#4Bky))&r{h+&J2ugtlaXtBoZCfiw)cU`L<9K172YhG}YymRHdM+;Y+F4e1E zn-KaaChS#+R8&r}SV~t|PO7a^;x6wMr)x9?_x7=T>DaII!MZYfg6yGrcT3i{#jLX0 zks~L4?6on|)T6RDvo^5d126XKye_>hZN8(WPNY(0k)gxSI#vBY ziw-EC5B~BoTcY$ccpAw z=C<#1cBB1N@q(=BouAfbOi(;LG4rzUrHQw6i&xrA5s2V5e)52+{mJJv0HzomWmj%N>pWZ%1&YCJk+ANqghGxz*A z=MMVyY^^Z-z2ukf$LCS)P4(7RTv6g|-!u%^xYszADlPpQ{?$`(**)*V%oURFj5lco ztz}PK?4J2EtL2bK$B*Sd)FqZNZJ({EQ^LT&z?S6g?!xeaVFN?!%il?J85kHi3p^r= z85p>QL70(Y)*J~21_t&LPhVH|$2?F% zjNn|_){r31I(?tJcvEf5Bk3=hzu4Brmfc>v{=(7+%K|2F9F6+#A)b23;#JSe%vTeB zJBrOLX0|MUC&QK?(Uu5B%W?uX-#vUg+dj5pPp(SVL4_9+eyzLqukH5>EyI`RC-ZA< zVw}3k-{I*M+0uQCOV2a>J;Us<=NAJk^Ud8TYy-Rb~g|p`DdR_7BP=8{f z0dvl-V%`b6H8WYa>L#1r{mJ$s*=E++UdaWo&zUzEFL)y9@Tp13Gt4k7UYMbwUb6Ae zg%$T}`GjwF=!maKejUGV_m}DA9dkJq>{~AQ%r5!*yi|FYW9<2;cn{`JN^$uHu{xLU hY?yg6YQFgW&@Ho;+OQkPGcYhPc)I$ztaD0e0svcsejNY+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/_index.json b/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/_index.json index a97d369c..c61e8b52 100644 --- a/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/_index.json +++ b/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/_index.json @@ -74,5 +74,9 @@ "planks": { "texture": "ebwizardry:gui/spell_hud/planks", "metadata": "ebwizardry:gui/spell_hud/planks" + }, + "festive": { + "texture": "ebwizardry:gui/spell_hud/festive", + "metadata": "ebwizardry:gui/spell_hud/festive" } } \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.json b/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.json new file mode 100644 index 00000000..8decb029 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.json @@ -0,0 +1,33 @@ +{ + "name": "Festive", + "description": "'Tis the season!", + "width": 126, + "height": 41, + "mirror": { + "x": true, + "y": true + }, + "spell_icon_inset": { + "x": 2, + "y": 2 + }, + "text_inset": { + "x": 40, + "y": 20 + }, + "spell_cascade_offset": { + "x": 0, + "y": 8 + }, + "cooldown_bar": { + "x": 39, + "y": 1, + "length": 86, + "height": 8, + "mirror": { + "x": true, + "y": true + }, + "show_when_full": true + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.png b/src/main/resources/assets/ebwizardry/textures/gui/spell_hud/festive.png new file mode 100644 index 0000000000000000000000000000000000000000..bf786195cbb022fcfb120583671bbbefc7b4936c GIT binary patch literal 26303 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 FngBh6klO$N literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/items/spell_book_festive.png b/src/main/resources/assets/ebwizardry/textures/items/spell_book_festive.png new file mode 100644 index 0000000000000000000000000000000000000000..2efce968c44280bc794d5a8c788a9301e6212db1 GIT binary patch literal 2192 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