From 28fa7115c63c42f507704a2fa6f8afe966ff4f78 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Tue, 3 Mar 2020 18:08:22 -0500 Subject: [PATCH] 1.0.3 Tweak Loot Tables Fix Dispenser Bugs Fix Inward Bugs --- CHANGELOG.md | 5 ++ build.gradle | 38 +++------- gradle.properties | 2 +- .../sorcerycraft/SorceryCraft.java | 24 ++++--- .../sorcerycraft/block/CastingTableBlock.java | 2 +- .../block/CastingTableContainer.java | 6 +- .../client/block/CastingTableScreen.java | 3 +- .../sorcerycraft/command/SpellCommand.java | 70 ++++++------------- .../sorcerycraft/entity/SpellEntity.java | 64 +++++++++-------- .../sorcerycraft/item/SpellItem.java | 26 ++++--- .../sorcerycraft/mixin/MixinPlayerEntity.java | 7 +- .../packet/LearnedNewSpellS2CPacket.java | 23 ------ .../sorcerycraft/spell/DamageSpell.java | 3 +- .../sorcerycraft/spell/DissolveSpell.java | 3 +- .../sorcerycraft/spell/FlameSpell.java | 3 +- .../sorcerycraft/spell/HealSpell.java | 3 +- .../sorcerycraft/spell/InwardSpell.java | 6 +- .../sorcerycraft/spell/LevitateSpell.java | 3 +- .../spell/RandomSpellLootTableFunction.java | 16 +++-- .../sorcerycraft/spell/Spell.java | 7 +- .../sorcerycraft/spell/SpellPlayerEntity.java | 6 +- .../sorcerycraft/spell/SpellRegistry.java | 26 +++---- .../sorcerycraft/spell/SpellTag.java | 22 +++--- .../sorcerycraft/spell/Spells.java | 27 +++++++ .../sorcerycraft/spell/SteadfastSpell.java | 4 +- .../sorcerycraft/spell/TeleportSpell.java | 4 +- .../assets/sorcerycraft/lang/en_us.json | 4 +- 27 files changed, 194 insertions(+), 213 deletions(-) delete mode 100644 src/main/java/com/thebrokenrail/sorcerycraft/packet/LearnedNewSpellS2CPacket.java create mode 100644 src/main/java/com/thebrokenrail/sorcerycraft/spell/Spells.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f585f1..38a4eed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ### Changelog +**1.0.3** +* Tweak Loot Tables +* Fix Dispenser Bugs +* Fix Inward Bugs + **1.0.2** * Add Inward Spell * Tweak Rebound Mechanic diff --git a/build.gradle b/build.gradle index 8c08066..3e95cf1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,15 @@ plugins { id 'fabric-loom' version '0.2.6-SNAPSHOT' - id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +compileJava { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group +version = project.mod_version as Object +group = project.maven_group as Object minecraft { } @@ -22,11 +23,13 @@ dependencies { } processResources { - inputs.property "version", project.version + inputs.property "version", version + inputs.property "modid", archivesBaseName from(sourceSets.main.resources.srcDirs) { include "fabric.mod.json" - expand "version": project.version + expand "version": version + expand "modid": archivesBaseName } from(sourceSets.main.resources.srcDirs) { @@ -52,24 +55,3 @@ task sourcesJar(type: Jar, dependsOn: classes) { jar { from "LICENSE" } - -// configure the maven publication -publishing { - publications { - mavenJava(MavenPublication) { - // add all the jars that should be included when publishing to maven - artifact(remapJar) { - builtBy remapJar - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } - } - } - - // select the repositories you want to publish to - repositories { - // uncomment to publish to the local maven - // mavenLocal() - } -} diff --git a/gradle.properties b/gradle.properties index eca3adb..f0c6239 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs = -Xmx1G loader_version = 0.7.8+build.184 # Mod Properties - mod_version = 1.0.2 + mod_version = 1.0.3 maven_group = com.thebrokenrail archives_base_name = sorcerycraft diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/SorceryCraft.java b/src/main/java/com/thebrokenrail/sorcerycraft/SorceryCraft.java index 8629076..e7b18f0 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/SorceryCraft.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/SorceryCraft.java @@ -7,11 +7,10 @@ import com.thebrokenrail.sorcerycraft.client.entity.SpellEntityRenderer; import com.thebrokenrail.sorcerycraft.command.SpellCommand; import com.thebrokenrail.sorcerycraft.entity.SpellEntity; import com.thebrokenrail.sorcerycraft.item.SpellItem; -import com.thebrokenrail.sorcerycraft.packet.LearnedNewSpellS2CPacket; import com.thebrokenrail.sorcerycraft.packet.SelectSpellC2SPacket; import com.thebrokenrail.sorcerycraft.packet.UpdateKnownSpellsS2CPacket; import com.thebrokenrail.sorcerycraft.spell.RandomSpellLootTableFunction; -import com.thebrokenrail.sorcerycraft.spell.SpellRegistry; +import com.thebrokenrail.sorcerycraft.spell.Spells; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; @@ -39,6 +38,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.loot.BinomialLootTableRange; import net.minecraft.loot.LootTables; import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.TranslatableText; @@ -69,7 +69,7 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { LootTables.STRONGHOLD_LIBRARY_CHEST }; - public static final double SPELL_FAILURE_CHANCE = 0.3; + public static final double SPELL_FAILURE_CHANCE = 0.3d; private boolean isSelectedLootTable(Identifier lootTable) { for (Identifier id : LOOT_TABLES) { @@ -82,6 +82,8 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { @Override public void onInitialize() { + new Spells(); + ITEM_GROUP = FabricItemGroupBuilder.create( new Identifier(NAMESPACE, "spells")) .icon(() -> new ItemStack(SPELL_ITEM)) @@ -98,8 +100,6 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { Registry.register(Registry.ITEM, new Identifier(NAMESPACE, "casting_table"), CASTING_TABLE_BLOCK_ITEM); Registry.register(Registry.ENTITY_TYPE, new Identifier(NAMESPACE, "spell"), SPELL_ENTITY); - SpellRegistry.init(); - ContainerProviderRegistry.INSTANCE.registerFactory(new Identifier(NAMESPACE, "casting_table"), (syncId, identifier, player, buf) -> { final World world = player.world; final BlockPos pos = buf.readBlockPos(); @@ -110,7 +110,6 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { ServerSidePacketRegistryImpl.INSTANCE.register(new Identifier(NAMESPACE, "select_spell"), SelectSpellC2SPacket::handle); ClientSidePacketRegistryImpl.INSTANCE.register(new Identifier(NAMESPACE, "update_known_spells"), UpdateKnownSpellsS2CPacket::handle); - ClientSidePacketRegistryImpl.INSTANCE.register(new Identifier(NAMESPACE, "learned_new_spell"), LearnedNewSpellS2CPacket::handle); LootTableLoadingCallback.EVENT.register((resourceManager, lootManager, id, supplier, setter) -> { if (isSelectedLootTable(id)) { @@ -130,13 +129,22 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { entity.setItem(itemStack); return entity; } + + @Override + protected void playSound(BlockPointer pointer) { + playSpellSound(pointer); + } }); } private static final SoundEvent SPELL_SOUND_EFFECT = SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE; + public static void playSpellSound(BlockPointer block) { + block.getWorld().playSound(null, block.getBlockPos(), SPELL_SOUND_EFFECT, SoundCategory.BLOCKS, 1.0f, 1.0f); + } + public static void playSpellSound(PlayerEntity player) { - player.playSound(SPELL_SOUND_EFFECT, 1.0f, 1.0f); + player.playSound(SPELL_SOUND_EFFECT, SoundCategory.PLAYERS, 1.0f, 1.0f); } @Override @@ -144,7 +152,7 @@ public class SorceryCraft implements ModInitializer, ClientModInitializer { EntityRendererRegistry.INSTANCE.register(SPELL_ENTITY, (entityRenderDispatcher, context) -> new SpellEntityRenderer(entityRenderDispatcher)); ScreenProviderRegistry.INSTANCE.registerFactory(new Identifier(NAMESPACE, "casting_table"), (container) -> { assert MinecraftClient.getInstance().player != null; - return new CastingTableScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText("block.sorcerycraft.casting_table")); + return new CastingTableScreen(container, MinecraftClient.getInstance().player.inventory, new TranslatableText("block." + SorceryCraft.NAMESPACE + ".casting_table")); }); } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableBlock.java b/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableBlock.java index 4ce8d69..3543de7 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableBlock.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableBlock.java @@ -34,6 +34,6 @@ public class CastingTableBlock extends Block { @Override public NameableContainerFactory createContainerFactory(BlockState state, World world, BlockPos pos) { - return new SimpleNamedContainerFactory((i, playerInventory, playerEntity) -> new CastingTableContainer(i, playerInventory, BlockContext.create(world, pos)), new TranslatableText("container.sorcerycraft.casting_table")); + return new SimpleNamedContainerFactory((i, playerInventory, playerEntity) -> new CastingTableContainer(i, playerInventory, BlockContext.create(world, pos)), new TranslatableText("container." + SorceryCraft.NAMESPACE + ".casting_table")); } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableContainer.java b/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableContainer.java index ce51562..67de7b7 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableContainer.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/block/CastingTableContainer.java @@ -15,7 +15,7 @@ import net.minecraft.inventory.BasicInventory; import net.minecraft.inventory.CraftingResultInventory; import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; -import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -44,7 +44,7 @@ public class CastingTableContainer extends Container { spells = SpellRegistry.getSpells(); } else { SpellPlayerEntity spellPlayer = (SpellPlayerEntity) playerInventory.player; - Map spellsMap = spellPlayer.getSpells(); + Map spellsMap = spellPlayer.getSpells(); List spellsArray = new ArrayList<>(); Spell[] allSpells = SpellRegistry.getSpells(); @@ -149,7 +149,7 @@ public class CastingTableContainer extends Container { cost.getItem() == spells[index].getItemCost().getItem() && cost.getCount() >= spells[index].getItemCost().getCount()) { ItemStack resultItem = item.copy(); - Map resultSpells = SpellTag.getSpells(resultItem); + Map resultSpells = SpellTag.getSpells(resultItem); if (!resultSpells.containsKey(spells[index].getID()) || resultSpells.get(spells[index].getID()) <= spells[index].getLevel()) { resultSpells.put(spells[index].getID(), spells[index].getLevel()); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/client/block/CastingTableScreen.java b/src/main/java/com/thebrokenrail/sorcerycraft/client/block/CastingTableScreen.java index fa7a455..b3ebbf7 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/client/block/CastingTableScreen.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/client/block/CastingTableScreen.java @@ -1,6 +1,7 @@ package com.thebrokenrail.sorcerycraft.client.block; import com.mojang.blaze3d.systems.RenderSystem; +import com.thebrokenrail.sorcerycraft.SorceryCraft; import com.thebrokenrail.sorcerycraft.block.CastingTableContainer; import com.thebrokenrail.sorcerycraft.packet.SelectSpellC2SPacket; import com.thebrokenrail.sorcerycraft.spell.Spell; @@ -34,7 +35,7 @@ public class CastingTableScreen extends ContainerScreen { int j = containerHeight - 94; font.draw(title.asFormattedString(), (float) (49 + this.containerWidth / 2 - font.getStringWidth(title.asFormattedString()) / 2), 6.0F, 4210752); font.draw(playerInventory.getDisplayName().asFormattedString(), 107.0F, (float) j, 4210752); - String spells = new TranslatableText("container.sorcerycraft.spells").getString(); + String spells = new TranslatableText("container." + SorceryCraft.NAMESPACE + ".spells").getString(); font.draw(spells, (float) (5 - font.getStringWidth(spells) / 2 + 48), 6.0F, 4210752); renderXPCost(); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/command/SpellCommand.java b/src/main/java/com/thebrokenrail/sorcerycraft/command/SpellCommand.java index 8de8e6d..0028cac 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/command/SpellCommand.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/command/SpellCommand.java @@ -1,10 +1,7 @@ package com.thebrokenrail.sorcerycraft.command; import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.suggestion.SuggestionProvider; -import com.mojang.brigadier.suggestion.Suggestions; -import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import com.thebrokenrail.sorcerycraft.SorceryCraft; import com.thebrokenrail.sorcerycraft.spell.SpellPlayerEntity; import com.thebrokenrail.sorcerycraft.spell.SpellTag; import net.minecraft.command.arguments.EntityArgumentType; @@ -13,62 +10,37 @@ import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; import java.util.HashMap; -import java.util.Locale; import java.util.Map; -import java.util.concurrent.CompletableFuture; public class SpellCommand { - public static SuggestionProvider getOptions() { - return (ctx, builder) -> getSuggestionsBuilder(builder, new String[]{"clear", "list"}); - } - - private static CompletableFuture getSuggestionsBuilder(SuggestionsBuilder builder, String[] list) { - String remaining = builder.getRemaining().toLowerCase(Locale.ROOT); - - if (list.length < 1) { - return Suggestions.empty(); - } - - for (String str : list) { - if (str.toLowerCase(Locale.ROOT).startsWith(remaining)) { - builder.suggest(str); - } - } - return builder.buildFuture(); - } - public static void register(CommandDispatcher dispatcher) { dispatcher.register(CommandManager.literal("spell") .requires(source -> source.hasPermissionLevel(4)) - .then(CommandManager.argument("action", StringArgumentType.word()) - .suggests(getOptions()) + .then(CommandManager.literal("list") + .then(CommandManager.argument("player", EntityArgumentType.player()) + .executes(ctx -> { + PlayerEntity player = EntityArgumentType.getPlayer(ctx, "player"); + ctx.getSource().sendFeedback(new TranslatableText("command." + SorceryCraft.NAMESPACE + ".spell.listing_spells", player.getDisplayName()), false); + SpellPlayerEntity spellPlayer = (SpellPlayerEntity) player; + Map spells = spellPlayer.getSpells(); + for (Map.Entry entry : spells.entrySet()) { + ctx.getSource().sendFeedback(SpellTag.getTranslatedSpell(entry.getKey(), entry.getValue()).formatted(Formatting.YELLOW), false); + } + return 0; + }) + ) + ) + .then(CommandManager.literal("clear") .then(CommandManager.argument("player", EntityArgumentType.player()) .executes(ctx -> { - String action = StringArgumentType.getString(ctx, "action"); PlayerEntity player = EntityArgumentType.getPlayer(ctx, "player"); - switch (action) { - case "clear": { - SpellPlayerEntity spellPlayer = (SpellPlayerEntity) player; - spellPlayer.setSpells(new HashMap<>()); - ctx.getSource().sendFeedback(new TranslatableText("command.sorcerycraft.spell.cleared_spells", player.getDisplayName()), true); - return 1; - } - case "list": { - ctx.getSource().sendFeedback(new TranslatableText("command.sorcerycraft.spell.listing_spells", player.getDisplayName()), false); - SpellPlayerEntity spellPlayer = (SpellPlayerEntity) player; - Map spells = spellPlayer.getSpells(); - for (Map.Entry entry : spells.entrySet()) { - ctx.getSource().sendFeedback(SpellTag.getTranslatedSpell(entry.getKey(), entry.getValue()).formatted(Formatting.YELLOW), false); - } - return 0; - } - default: { - ctx.getSource().sendFeedback(new TranslatableText("command.sorcerycraft.spell.invalid_action", action).formatted(Formatting.RED), true); - return -1; - } - } + SpellPlayerEntity spellPlayer = (SpellPlayerEntity) player; + spellPlayer.setSpells(new HashMap<>()); + ctx.getSource().sendFeedback(new TranslatableText("command." + SorceryCraft.NAMESPACE + ".spell.cleared_spells", player.getDisplayName()), true); + return 1; }) ) ) diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/entity/SpellEntity.java b/src/main/java/com/thebrokenrail/sorcerycraft/entity/SpellEntity.java index 89c5fac..470be28 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/entity/SpellEntity.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/entity/SpellEntity.java @@ -4,6 +4,7 @@ import com.thebrokenrail.sorcerycraft.SorceryCraft; import com.thebrokenrail.sorcerycraft.spell.Spell; import com.thebrokenrail.sorcerycraft.spell.SpellRegistry; import com.thebrokenrail.sorcerycraft.spell.SpellTag; +import com.thebrokenrail.sorcerycraft.spell.Spells; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.entity.Entity; @@ -15,6 +16,7 @@ import net.minecraft.network.Packet; import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.particle.ParticleTypes; import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Identifier; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.world.World; @@ -30,43 +32,40 @@ public class SpellEntity extends ThrownItemEntity { super(SorceryCraft.SPELL_ENTITY, owner, world); } - private boolean firstTick = false; + private boolean firstTick = true; public SpellEntity(World world, double x, double y, double z) { super(SorceryCraft.SPELL_ENTITY, x, y, z, world); } - private boolean didSpellSucceed(Map spells) { - return Math.random() > SorceryCraft.SPELL_FAILURE_CHANCE || spells.containsKey("steadfast_spell"); + private boolean didSpellSucceed(Map spells) { + return Math.random() > SorceryCraft.SPELL_FAILURE_CHANCE || spells.containsKey(Spells.STEADFAST_SPELL); } @Override protected void onCollision(HitResult hitResult) { - boolean remove = false; - if (hitResult.getType() == HitResult.Type.BLOCK) { - remove = true; - } else if (hitResult.getType() == HitResult.Type.ENTITY) { - Entity entity = ((EntityHitResult) hitResult).getEntity(); + Map spells = SpellTag.getSpells(getItem()); + if (!spells.containsKey(Spells.INWARD_SPELL)) { + if (hitResult.getType() == HitResult.Type.BLOCK) { + remove(); + } else if (hitResult.getType() == HitResult.Type.ENTITY) { + Entity entity = ((EntityHitResult) hitResult).getEntity(); - Map spells = SpellTag.getSpells(getItem()); - - boolean success = didSpellSucceed(spells); - for (Map.Entry entry : spells.entrySet()) { - Spell spell = SpellRegistry.getSpell(entry.getKey(), entry.getValue()); - if (spell != null) { - if (success) { - spell.execute(entity, this, getOwner()); - } else if (getOwner() != null) { - getOwner().playSound(SoundEvents.ENCHANT_THORNS_HIT, 1.0f, 1.0f); - spell.execute(getOwner(), this, getOwner()); + boolean success = didSpellSucceed(spells); + for (Map.Entry entry : spells.entrySet()) { + Spell spell = SpellRegistry.getSpell(entry.getKey(), entry.getValue()); + if (spell != null) { + if (success) { + spell.execute(entity, this, getOwner()); + } else if (getOwner() != null) { + getOwner().playSound(SoundEvents.ENCHANT_THORNS_HIT, 1.0f, 1.0f); + spell.execute(getOwner(), this, getOwner()); + } } } - } - remove = true; - } - if (remove && !getEntityWorld().isClient()) { - remove(); + remove(); + } } } @@ -85,15 +84,18 @@ public class SpellEntity extends ThrownItemEntity { super.tick(); if (firstTick) { firstTick = false; - Map spells = SpellTag.getSpells(getItem()); - if (spells.containsKey("inward_spell")) { - boolean success = didSpellSucceed(spells); - for (Map.Entry entry : spells.entrySet()) { - Spell spell = SpellRegistry.getSpell(entry.getKey(), entry.getValue()); - if (spell != null && success) { - spell.execute(getOwner(), this, getOwner()); + Map spells = SpellTag.getSpells(getItem()); + if (spells.containsKey(Spells.INWARD_SPELL)) { + if (getOwner() != null) { + boolean success = didSpellSucceed(spells); + for (Map.Entry entry : spells.entrySet()) { + Spell spell = SpellRegistry.getSpell(entry.getKey(), entry.getValue()); + if (spell != null && success) { + spell.execute(getOwner(), this, getOwner()); + } } } + remove(); return; } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/item/SpellItem.java b/src/main/java/com/thebrokenrail/sorcerycraft/item/SpellItem.java index af88084..d23ff68 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/item/SpellItem.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/item/SpellItem.java @@ -2,20 +2,16 @@ package com.thebrokenrail.sorcerycraft.item; import com.thebrokenrail.sorcerycraft.SorceryCraft; import com.thebrokenrail.sorcerycraft.entity.SpellEntity; -import com.thebrokenrail.sorcerycraft.packet.LearnedNewSpellS2CPacket; import com.thebrokenrail.sorcerycraft.spell.Spell; import com.thebrokenrail.sorcerycraft.spell.SpellPlayerEntity; import com.thebrokenrail.sorcerycraft.spell.SpellRegistry; import com.thebrokenrail.sorcerycraft.spell.SpellTag; -import net.minecraft.block.dispenser.ProjectileDispenserBehavior; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.sound.SoundEvents; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; @@ -23,6 +19,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.DefaultedList; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; @@ -40,7 +37,7 @@ public class SpellItem extends Item { public TypedActionResult use(World world, PlayerEntity playerEntity, Hand hand) { ItemStack itemStack = playerEntity.getStackInHand(hand); - Map spells = SpellTag.getSpells(itemStack); + Map spells = SpellTag.getSpells(itemStack); if (spells.size() > 0) { SorceryCraft.playSpellSound(playerEntity); @@ -64,14 +61,14 @@ public class SpellItem extends Item { @Override public boolean hasEnchantmentGlint(ItemStack stack) { - Map spells = SpellTag.getSpells(stack); + Map spells = SpellTag.getSpells(stack); return spells.size() > 0; } @Override public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { - Map spells = SpellTag.getSpells(itemStack); - for (Map.Entry entry : spells.entrySet()) { + Map spells = SpellTag.getSpells(itemStack); + for (Map.Entry entry : spells.entrySet()) { tooltip.add(SpellTag.getTranslatedSpell(entry.getKey(), entry.getValue())); } } @@ -83,7 +80,7 @@ public class SpellItem extends Item { Spell[] spells = SpellRegistry.getSpells(); for (Spell value : spells) { ItemStack item = new ItemStack(this); - Map spell = new HashMap<>(); + Map spell = new HashMap<>(); spell.put(value.getID(), value.getLevel()); SpellTag.setSpells(item, spell); stacks.add(item); @@ -103,12 +100,12 @@ public class SpellItem extends Item { PlayerEntity player = (PlayerEntity) entity; SpellPlayerEntity spellPlayer = (SpellPlayerEntity) player; - Map playerSpells = spellPlayer.getSpells(); - Map itemSpells = SpellTag.getSpells(player.inventory.getInvStack(slot)); + Map playerSpells = spellPlayer.getSpells(); + Map itemSpells = SpellTag.getSpells(player.inventory.getInvStack(slot)); boolean changed = false; - for (Map.Entry entry : itemSpells.entrySet()) { + for (Map.Entry entry : itemSpells.entrySet()) { Spell spell = SpellRegistry.getSpell(entry.getKey(), entry.getValue()); if (spell != null) { if (spell.getLevel() >= spell.getMaxLevel()) { @@ -121,13 +118,14 @@ public class SpellItem extends Item { playerSpells.put(spell.getID(), spell.getLevel()); assert world.getServer() != null; Text text = new LiteralText("[").append(SpellTag.getTranslatedSpell(spell.getID(), spell.getLevel()).getString()).append("]").formatted(Formatting.GREEN); - world.getServer().getPlayerManager().sendToAll(new TranslatableText("chat.sorcerycraft.new_spell", player.getDisplayName(), text)); + world.getServer().getPlayerManager().sendToAll(new TranslatableText("chat." + SorceryCraft.NAMESPACE + ".new_spell", player.getDisplayName(), text)); } } } if (changed) { - LearnedNewSpellS2CPacket.send((ServerPlayerEntity) player); + //LearnedNewSpellS2CPacket.send((ServerPlayerEntity) player); + SorceryCraft.playSpellSound(player); spellPlayer.setSpells(playerSpells); } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/mixin/MixinPlayerEntity.java b/src/main/java/com/thebrokenrail/sorcerycraft/mixin/MixinPlayerEntity.java index 85c0a82..b5e03b4 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/mixin/MixinPlayerEntity.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/mixin/MixinPlayerEntity.java @@ -4,6 +4,7 @@ import com.thebrokenrail.sorcerycraft.spell.SpellPlayerEntity; import com.thebrokenrail.sorcerycraft.spell.SpellTag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,7 +16,7 @@ import java.util.Map; @SuppressWarnings("unused") @Mixin(PlayerEntity.class) public class MixinPlayerEntity implements SpellPlayerEntity { - private Map spells = new HashMap<>(); + private Map spells = new HashMap<>(); @Inject(at = @At("HEAD"), method = "readCustomDataFromTag") public void readCustomDataFromTag(CompoundTag tag, CallbackInfo info) { @@ -28,12 +29,12 @@ public class MixinPlayerEntity implements SpellPlayerEntity { } @Override - public void setSpells(Map spells) { + public void setSpells(Map spells) { this.spells = spells; } @Override - public Map getSpells() { + public Map getSpells() { return spells; } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/packet/LearnedNewSpellS2CPacket.java b/src/main/java/com/thebrokenrail/sorcerycraft/packet/LearnedNewSpellS2CPacket.java deleted file mode 100644 index 33d8941..0000000 --- a/src/main/java/com/thebrokenrail/sorcerycraft/packet/LearnedNewSpellS2CPacket.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.thebrokenrail.sorcerycraft.packet; - -import com.thebrokenrail.sorcerycraft.SorceryCraft; -import io.netty.buffer.Unpooled; -import net.fabricmc.fabric.api.network.PacketContext; -import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.Identifier; -import net.minecraft.util.PacketByteBuf; - -public class LearnedNewSpellS2CPacket { - @SuppressWarnings("unused") - public static void handle(PacketContext context, PacketByteBuf bytes) { - if (context.getPlayer() != null) { - SorceryCraft.playSpellSound(context.getPlayer()); - } - } - - public static void send(ServerPlayerEntity player) { - PacketByteBuf bytes = new PacketByteBuf(Unpooled.buffer()); - player.networkHandler.sendPacket(new CustomPayloadS2CPacket(new Identifier(SorceryCraft.NAMESPACE, "learned_new_spell"), bytes)); - } -} diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/DamageSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/DamageSpell.java index 9fb71bf..98adafe 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/DamageSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/DamageSpell.java @@ -5,9 +5,10 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class DamageSpell extends Spell { - public DamageSpell(String id, int level) { + public DamageSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/DissolveSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/DissolveSpell.java index ba0facf..3328143 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/DissolveSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/DissolveSpell.java @@ -4,9 +4,10 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class DissolveSpell extends Spell { - public DissolveSpell(String id, int level) { + public DissolveSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/FlameSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/FlameSpell.java index cb534ae..9c645c7 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/FlameSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/FlameSpell.java @@ -3,9 +3,10 @@ package com.thebrokenrail.sorcerycraft.spell; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class FlameSpell extends Spell { - public FlameSpell(String id, int level) { + public FlameSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/HealSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/HealSpell.java index 0f0122f..1eda67f 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/HealSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/HealSpell.java @@ -5,9 +5,10 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class HealSpell extends Spell { - public HealSpell(String id, int level) { + public HealSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/InwardSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/InwardSpell.java index c3f819f..2b02314 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/InwardSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/InwardSpell.java @@ -3,14 +3,16 @@ package com.thebrokenrail.sorcerycraft.spell; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class InwardSpell extends Spell { - public InwardSpell(String id, int level) { + public InwardSpell(Identifier id, int level) { super(id, level); } @Override public void execute(Entity target, Entity source, Entity attacker) { + // NOOP } @Override @@ -20,7 +22,7 @@ public class InwardSpell extends Spell { @Override public ItemStack getItemCost() { - return new ItemStack(Items.BLAZE_ROD); + return new ItemStack(Items.ENDER_EYE); } @Override diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/LevitateSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/LevitateSpell.java index 5b6ea36..ee76d98 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/LevitateSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/LevitateSpell.java @@ -6,9 +6,10 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class LevitateSpell extends Spell { - public LevitateSpell(String id, int level) { + public LevitateSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/RandomSpellLootTableFunction.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/RandomSpellLootTableFunction.java index 4fec1bb..13cdbd4 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/RandomSpellLootTableFunction.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/RandomSpellLootTableFunction.java @@ -5,8 +5,8 @@ import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.context.LootContext; import net.minecraft.loot.function.ConditionalLootFunction; import net.minecraft.loot.function.LootFunction; +import net.minecraft.util.Identifier; -import java.util.HashMap; import java.util.Map; public class RandomSpellLootTableFunction extends ConditionalLootFunction { @@ -15,11 +15,15 @@ public class RandomSpellLootTableFunction extends ConditionalLootFunction { } public ItemStack process(ItemStack stack, LootContext context) { - Spell[] spells = SpellRegistry.getSpells(); - int index = context.getRandom().nextInt(spells.length); - Map spell = new HashMap<>(); - spell.put(spells[index].getID(), spells[index].getLevel()); - SpellTag.setSpells(stack, spell); + double chance = 1.0d; + while (!(context.getRandom().nextDouble() > chance)) { + Spell[] spells = SpellRegistry.getSpells(); + int index = context.getRandom().nextInt(spells.length); + Map spell = SpellTag.getSpells(stack); + spell.put(spells[index].getID(), spells[index].getLevel()); + SpellTag.setSpells(stack, spell); + chance = chance * 0.25d; + } return stack; } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spell.java index d8b33e9..fa7b3ce 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spell.java @@ -2,17 +2,18 @@ package com.thebrokenrail.sorcerycraft.spell; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; public abstract class Spell { - private final String id; + private final Identifier id; private final int level; - public Spell(String id, int level) { + public Spell(Identifier id, int level) { this.id = id; this.level = level; } - public String getID() { + public Identifier getID() { return id; } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellPlayerEntity.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellPlayerEntity.java index 3d29ade..00e6d61 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellPlayerEntity.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellPlayerEntity.java @@ -1,9 +1,11 @@ package com.thebrokenrail.sorcerycraft.spell; +import net.minecraft.util.Identifier; + import java.util.Map; public interface SpellPlayerEntity { - void setSpells(Map spells); + void setSpells(Map spells); - Map getSpells(); + Map getSpells(); } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellRegistry.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellRegistry.java index 3a8bfc0..216edfe 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellRegistry.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellRegistry.java @@ -1,5 +1,7 @@ package com.thebrokenrail.sorcerycraft.spell; +import net.minecraft.util.Identifier; + import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; @@ -7,21 +9,21 @@ import java.util.List; import java.util.Map; public class SpellRegistry { - private static final Map> spells = new HashMap<>(); + private static final Map> spells = new HashMap<>(); - public static Spell getSpell(String id, int level) { + public static Spell getSpell(Identifier id, int level) { if (!spells.containsKey(id)) { return null; } try { - return (Spell) spells.get(id).getConstructor(String.class, int.class).newInstance(id, level); + return (Spell) spells.get(id).getConstructor(Identifier.class, int.class).newInstance(id, level); } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); return null; } } - public static int getMaxLevel(String id) { + public static int getMaxLevel(Identifier id) { Spell tempSpell = getSpell(id, 0); if (tempSpell == null) { return -1; @@ -31,7 +33,7 @@ public class SpellRegistry { public static Spell[] getSpells() { List out = new ArrayList<>(); - for (Map.Entry> entry : spells.entrySet()) { + for (Map.Entry> entry : spells.entrySet()) { int maxLevel = getMaxLevel(entry.getKey()); if (maxLevel == -1) { continue; @@ -46,18 +48,8 @@ public class SpellRegistry { return out.toArray(new Spell[0]); } - private static void registerSpell(String id, Class spell) { + public static Identifier registerSpell(Identifier id, Class spell) { spells.put(id, spell); - } - - public static void init() { - SpellRegistry.registerSpell("heal_spell", HealSpell.class); - SpellRegistry.registerSpell("damage_spell", DamageSpell.class); - SpellRegistry.registerSpell("dissolve_spell", DissolveSpell.class); - SpellRegistry.registerSpell("steadfast_spell", SteadfastSpell.class); - SpellRegistry.registerSpell("flame_spell", FlameSpell.class); - SpellRegistry.registerSpell("levitate_spell", LevitateSpell.class); - SpellRegistry.registerSpell("teleport_spell", TeleportSpell.class); - SpellRegistry.registerSpell("inward_spell", InwardSpell.class); + return id; } } diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellTag.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellTag.java index 82ac865..230ba59 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellTag.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SpellTag.java @@ -1,6 +1,5 @@ package com.thebrokenrail.sorcerycraft.spell; -import com.thebrokenrail.sorcerycraft.SorceryCraft; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -8,6 +7,7 @@ import net.minecraft.nbt.Tag; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; import java.util.HashMap; import java.util.Map; @@ -15,7 +15,7 @@ import java.util.Map; public class SpellTag { public static final String SPELL_TAG = "Spells"; - public static void setSpells(ItemStack itemStack, Map map) { + public static void setSpells(ItemStack itemStack, Map map) { CompoundTag tag; if (itemStack.hasTag()) { tag = itemStack.getTag(); @@ -30,12 +30,12 @@ public class SpellTag { itemStack.setTag(tag); } - public static ListTag createSpellsTag(Map map) { + public static ListTag createSpellsTag(Map map) { ListTag spells = new ListTag(); - for (Map.Entry entry : map.entrySet()) { + for (Map.Entry entry : map.entrySet()) { CompoundTag spell = new CompoundTag(); - spell.putString("id", entry.getKey()); + spell.putString("id", entry.getKey().toString()); spell.putInt("level", entry.getValue()); spells.add(spell); } @@ -43,11 +43,11 @@ public class SpellTag { return spells; } - public static Map getSpells(ItemStack itemStack) { + public static Map getSpells(ItemStack itemStack) { return getSpells(itemStack.getTag()); } - public static Map getSpells(CompoundTag tag) { + public static Map getSpells(CompoundTag tag) { if (tag == null) { tag = new CompoundTag(); tag.put(SPELL_TAG, new ListTag()); @@ -60,11 +60,11 @@ public class SpellTag { spells = new ListTag(); } - Map map = new HashMap<>(); + Map map = new HashMap<>(); for (int i = 0; i < spells.size(); i++) { CompoundTag spell = spells.getCompound(i); - String id = spell.getString("id"); + Identifier id = new Identifier(spell.getString("id")); int level = spell.getInt("level"); if (map.get(id) == null || map.get(id) < level) { map.put(id, level); @@ -74,8 +74,8 @@ public class SpellTag { return map; } - public static Text getTranslatedSpell(String id, int level) { - Text text = new TranslatableText("spell." + SorceryCraft.NAMESPACE + '.' + id); + public static Text getTranslatedSpell(Identifier id, int level) { + Text text = new TranslatableText("spell." + id.getNamespace() + '.' + id.getPath()); text.formatted(Formatting.GRAY); if (level != 0 || SpellRegistry.getMaxLevel(id) != 1) { text.append(" ").append(new TranslatableText("enchantment.level." + (level + 1))); diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spells.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spells.java new file mode 100644 index 0000000..adacc54 --- /dev/null +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/Spells.java @@ -0,0 +1,27 @@ +package com.thebrokenrail.sorcerycraft.spell; + +import com.thebrokenrail.sorcerycraft.SorceryCraft; +import net.minecraft.util.Identifier; + +@SuppressWarnings("unused") +public class Spells { + public static final Identifier HEAL_SPELL; + public static final Identifier DAMAGE_SPELL; + public static final Identifier DISSOLVE_SPELL; + public static final Identifier STEADFAST_SPELL; + public static final Identifier FLAME_SPELL; + public static final Identifier LEVITATE_SPELL; + public static final Identifier TELEPORT_SPELL; + public static final Identifier INWARD_SPELL; + + static { + HEAL_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "heal_spell"), HealSpell.class); + DAMAGE_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "damage_spell"), DamageSpell.class); + DISSOLVE_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "dissolve_spell"), DissolveSpell.class); + STEADFAST_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "steadfast_spell"), SteadfastSpell.class); + FLAME_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "flame_spell"), FlameSpell.class); + LEVITATE_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "levitate_spell"), LevitateSpell.class); + TELEPORT_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "teleport_spell"), TeleportSpell.class); + INWARD_SPELL = SpellRegistry.registerSpell(new Identifier(SorceryCraft.NAMESPACE, "inward_spell"), InwardSpell.class); + } +} diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SteadfastSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SteadfastSpell.java index 3adb05b..2e9c755 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/SteadfastSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/SteadfastSpell.java @@ -3,14 +3,16 @@ package com.thebrokenrail.sorcerycraft.spell; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class SteadfastSpell extends Spell { - public SteadfastSpell(String id, int level) { + public SteadfastSpell(Identifier id, int level) { super(id, level); } @Override public void execute(Entity target, Entity source, Entity attacker) { + // NOOP } @Override diff --git a/src/main/java/com/thebrokenrail/sorcerycraft/spell/TeleportSpell.java b/src/main/java/com/thebrokenrail/sorcerycraft/spell/TeleportSpell.java index d6cda71..bb67c7f 100644 --- a/src/main/java/com/thebrokenrail/sorcerycraft/spell/TeleportSpell.java +++ b/src/main/java/com/thebrokenrail/sorcerycraft/spell/TeleportSpell.java @@ -2,16 +2,16 @@ package com.thebrokenrail.sorcerycraft.spell; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; public class TeleportSpell extends Spell { - public TeleportSpell(String id, int level) { + public TeleportSpell(Identifier id, int level) { super(id, level); } diff --git a/src/main/resources/assets/sorcerycraft/lang/en_us.json b/src/main/resources/assets/sorcerycraft/lang/en_us.json index 19ea7e5..9885440 100644 --- a/src/main/resources/assets/sorcerycraft/lang/en_us.json +++ b/src/main/resources/assets/sorcerycraft/lang/en_us.json @@ -6,7 +6,6 @@ "container.sorcerycraft.spells": "Spells", "chat.sorcerycraft.new_spell": "%s has learned the spell %s", "entity.sorcerycraft.spell": "Spell", - "command.sorcerycraft.spell.invalid_action": "Invalid sub-command \"%s\"", "command.sorcerycraft.spell.cleared_spells": "All spells cleared from %s", "command.sorcerycraft.spell.listing_spells": "%s knows the following spells:", "spell.sorcerycraft.damage_spell": "Damage", @@ -15,5 +14,6 @@ "spell.sorcerycraft.steadfast_spell": "Steadfast", "spell.sorcerycraft.flame_spell": "Flame", "spell.sorcerycraft.levitate_spell": "Levitate", - "spell.sorcerycraft.teleport_spell": "Teleport" + "spell.sorcerycraft.teleport_spell": "Teleport", + "spell.sorcerycraft.inward_spell": "Inward" } \ No newline at end of file