Compare commits

...

1 Commits

Author SHA1 Message Date
b8475b34ba 1.15.2 Port
All checks were successful
SorceryCraft/pipeline/head This commit looks good
2020-03-24 15:33:10 -04:00
19 changed files with 101 additions and 91 deletions

2
API.md
View File

@ -8,7 +8,7 @@
}
dependencies {
modImplementation 'com.thebrokenrail:sorcerycraft:VERSION'
// VERSION = "<Mod Version>+<MC Version>", for example "1.2.4+20w12a"
// VERSION = "<Mod Version>+<MC Version>", for example "1.2.4+1.15.2"
}
```
2. Add Dependency to ```fabric.mod.json```

View File

@ -1,5 +1,8 @@
# Changelog
**1.15.2 Port**
* Tweak Steadfast Spell
**1.2.6**
* Fix Potential Client-Server De-sync Bug

View File

@ -1,4 +1,6 @@
# SorceryCraft
**1.15.2 Port**
Cast Spells in Minecraft!
This mod currently supports the Minecraft 1.16 snapshots.

View File

@ -84,7 +84,7 @@ if (project.hasProperty('curseforge.api_key')) {
apiKey = project.getProperty('curseforge.api_key')
project {
id = project.curseforge_id
changelog = 'A changelog can be found at https://gitea.thebrokenrail.com/TheBrokenRail/SorceryCraft/src/branch/master/CHANGELOG.md'
changelog = 'A changelog can be found at https://gitea.thebrokenrail.com/TheBrokenRail/SorceryCraft/src/branch/1.15/CHANGELOG.md'
releaseType = 'release'
addGameVersion project.simple_minecraft_version
addGameVersion 'Fabric'

View File

@ -3,10 +3,10 @@ org.gradle.jvmargs = -Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version = 20w12a
minecraft_version = 1.15.2
curseforge_id = 365308
simple_minecraft_version = 1.16-Snapshot
yarn_build = 18
simple_minecraft_version = 1.15.2
yarn_build = 14
fabric_loader_version = 0.7.8+build.189
# Mod Properties
@ -16,7 +16,7 @@ org.gradle.jvmargs = -Xmx1G
# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_api_version = 0.5.5+build.311-1.16
cloth_config_version = 3.1.0-unstable
fabric_api_version = 0.5.1+build.294-1.15
cloth_config_version = 2.9.3
auto_config_version = 1.2.4
mod_menu_version = 1.11.0+build.2
mod_menu_version = 1.10.2+build.32

View File

@ -26,7 +26,7 @@ import net.minecraft.entity.EntityCategory;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.projectile.ProjectileEntity;
import net.minecraft.entity.projectile.Projectile;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
@ -119,7 +119,7 @@ public class SorceryCraft implements ModInitializer {
ContainerProviderRegistry.INSTANCE.registerFactory(new Identifier(NAMESPACE, "casting_table"), (syncId, identifier, player, buf) -> {
final World world = player.world;
final BlockPos pos = buf.readBlockPos();
return Objects.requireNonNull(world.getBlockState(pos).createScreenHandlerFactory(player.world, pos)).createMenu(syncId, player.inventory, player);
return Objects.requireNonNull(world.getBlockState(pos).createContainerFactory(player.world, pos)).createMenu(syncId, player.inventory, player);
});
CommandRegistry.INSTANCE.register(false, SpellCommand::register);
@ -139,7 +139,7 @@ public class SorceryCraft implements ModInitializer {
DispenserBlock.registerBehavior(SorceryCraft.SPELL_ITEM, new ProjectileDispenserBehavior() {
@Override
protected ProjectileEntity createProjectile(World position, Position stack, ItemStack itemStack) {
protected Projectile createProjectile(World position, Position stack, ItemStack itemStack) {
SpellEntity entity = new SpellEntity(position, stack.getX(), stack.getY(), stack.getZ());
entity.setItem(itemStack);
return entity;

View File

@ -8,10 +8,10 @@ import net.fabricmc.fabric.api.container.ContainerProviderRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;
import net.minecraft.container.BlockContext;
import net.minecraft.container.NameableContainerFactory;
import net.minecraft.container.SimpleNamedContainerFactory;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.screen.NamedScreenHandlerFactory;
import net.minecraft.screen.ScreenHandlerContext;
import net.minecraft.screen.SimpleNamedScreenHandlerFactory;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
@ -36,12 +36,12 @@ public class CastingTableBlock extends Block {
}
@Override
public NamedScreenHandlerFactory createScreenHandlerFactory(BlockState state, World world, BlockPos pos) {
return new SimpleNamedScreenHandlerFactory((i, playerInventory, playerEntity) -> {
public NameableContainerFactory createContainerFactory(BlockState state, World world, BlockPos pos) {
return new SimpleNamedContainerFactory((i, playerInventory, playerEntity) -> {
if (!playerEntity.getEntityWorld().isClient()) {
((SpellServerPlayerEntity) playerEntity).sync();
}
return new CastingTableScreenHandler(i, playerInventory, ScreenHandlerContext.create(world, pos));
return new CastingTableScreenHandler(i, playerInventory, BlockContext.create(world, pos));
}, new TranslatableText("container." + SorceryCraft.NAMESPACE + ".casting_table"));
}
}

View File

@ -9,7 +9,7 @@ import com.thebrokenrail.sorcerycraft.spell.util.SpellHelper;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.client.gui.screen.ingame.ContainerScreen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
@ -19,7 +19,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
@Environment(EnvType.CLIENT)
public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler> {
public class CastingTableScreen extends ContainerScreen<CastingTableScreenHandler> {
private static final Identifier TEXTURE = new Identifier("textures/gui/container/villager2.png");
private int selectedIndex = 0;
private int indexStartOffset = 0;
@ -27,16 +27,16 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
public CastingTableScreen(CastingTableScreenHandler container, PlayerInventory inventory, Text title) {
super(container, inventory, title);
backgroundWidth = 276;
containerWidth = 276;
}
@Override
protected void drawForeground(int mouseX, int mouseY) {
int titleY = backgroundHeight - 94;
textRenderer.draw(title.asFormattedString(), (float) (49 + this.backgroundWidth / 2 - textRenderer.getStringWidth(title.asFormattedString()) / 2), 6.0F, 4210752);
textRenderer.draw(playerInventory.getDisplayName().asFormattedString(), 107.0F, (float) titleY, 4210752);
int titleY = 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) titleY, 4210752);
String spells = new TranslatableText("container." + SorceryCraft.NAMESPACE + ".spells").getString();
textRenderer.draw(spells, (float) (5 - textRenderer.getStringWidth(spells) / 2 + 48), 6.0F, 4210752);
font.draw(spells, (float) (5 - font.getStringWidth(spells) / 2 + 48), 6.0F, 4210752);
renderXPCost();
}
@ -48,11 +48,11 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
@Override
protected void drawBackground(float delta, int mouseX, int mouseY) {
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
assert client != null;
client.getTextureManager().bindTexture(TEXTURE);
int i = (width - backgroundWidth) / 2;
int j = (height - backgroundHeight) / 2;
drawTexture(i, j, getZOffset(), 0.0F, 0.0F, backgroundWidth, backgroundHeight, 256, 512);
assert minecraft != null;
minecraft.getTextureManager().bindTexture(TEXTURE);
int i = (width - containerWidth) / 2;
int j = (height - containerHeight) / 2;
blit(i, j, getBlitOffset(), 0.0F, 0.0F, containerWidth, containerHeight, 256, 512);
}
@Override
@ -68,36 +68,36 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
if (button.isHovered()) {
button.renderToolTip(mouseX, mouseY);
}
button.visible = button.index < handler.getRecipes().length;
button.visible = button.index < container.getRecipes().length;
if (button.visible) {
Spell spell = handler.getRecipes()[button.getIndex() + indexStartOffset];
Spell spell = container.getRecipes()[button.getIndex() + indexStartOffset];
button.setMessage(SpellHelper.getTranslatedSpell(spell.getID(), spell.getLevel()).getString());
}
}
}
private void renderScrollbar() {
Spell[] spells = handler.getRecipes();
assert client != null;
client.getTextureManager().bindTexture(TEXTURE);
int i = (width - backgroundWidth) / 2;
int j = (height - backgroundHeight) / 2;
Spell[] spells = container.getRecipes();
assert minecraft != null;
minecraft.getTextureManager().bindTexture(TEXTURE);
int i = (width - containerWidth) / 2;
int j = (height - containerHeight) / 2;
int k = spells.length - 7;
if (k > 0) {
int modifier = (int) (((float) indexStartOffset / k) * (1 + 139 - 27));
drawTexture(i + 94, j + 18 + modifier, getZOffset(), 0.0F, 199.0F, 6, 27, 256, 512);
blit(i + 94, j + 18 + modifier, getBlitOffset(), 0.0F, 199.0F, 6, 27, 256, 512);
} else {
drawTexture(i + 94, j + 18, getZOffset(), 6.0F, 199.0F, 6, 27, 256, 512);
blit(i + 94, j + 18, getBlitOffset(), 6.0F, 199.0F, 6, 27, 256, 512);
}
}
private void renderItems() {
int i = (width - backgroundWidth) / 2;
int j = (height - backgroundHeight) / 2;
int i = (width - containerWidth) / 2;
int j = (height - containerHeight) / 2;
int k = j + 16 + 1;
Spell[] spells = handler.getRecipes();
Spell[] spells = container.getRecipes();
for (int x = 0; x < spells.length; x++) {
if (!canScroll(spells.length) || (x >= indexStartOffset && x < 7 + indexStartOffset)) {
ItemStack itemStack = spells[x].getItemCost();
@ -105,7 +105,7 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
int y = k + 2;
itemRenderer.renderGuiItem(itemStack, i + 5 + 68, y);
itemRenderer.renderGuiItemOverlay(textRenderer, itemStack, i + 5 + 68, y);
itemRenderer.renderGuiItemOverlay(font, itemStack, i + 5 + 68, y);
itemRenderer.zOffset = 0.0F;
k += 20;
}
@ -113,20 +113,20 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
}
private void renderXPCost() {
if (handler.getRecipes().length > 0) {
int cost = handler.getRecipes()[selectedIndex].getXPCost();
if (container.getRecipes().length > 0) {
int cost = container.getRecipes()[selectedIndex].getXPCost();
int color = 8453920;
assert client != null;
assert client.player != null;
assert minecraft != null;
assert minecraft.player != null;
String string = new TranslatableText("container.repair.cost", cost).getString();
if (!handler.canTakeResult(playerInventory.player)) {
if (!container.canTakeResult(playerInventory.player)) {
color = 16736352;
}
int x2 = backgroundWidth - 8;
int x1 = x2 - textRenderer.getStringWidth(string);
int x2 = containerWidth - 8;
int x1 = x2 - font.getStringWidth(string);
fill(x1, 65, x2, 77, 1325400064);
textRenderer.drawWithShadow(string, (float) x1, 67.0F, color);
font.drawWithShadow(string, (float) x1, 67.0F, color);
}
}
@ -136,7 +136,7 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
@Override
public boolean mouseScrolled(double d, double e, double amount) {
int i = handler.getRecipes().length;
int i = container.getRecipes().length;
if (canScroll(i)) {
int j = i - 7;
indexStartOffset = (int) ((double) indexStartOffset - amount);
@ -148,7 +148,7 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
@Override
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
int i = handler.getRecipes().length;
int i = container.getRecipes().length;
if (scrolling) {
int j = y + 18;
int k = j + 139;
@ -165,9 +165,9 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
scrolling = false;
int i = (width - backgroundWidth) / 2;
int j = (height - backgroundHeight) / 2;
if (canScroll(handler.getRecipes().length) && mouseX > (double) (i + 94) && mouseX < (double) (i + 94 + 6) && mouseY > (double) (j + 18) && mouseY <= (double) (j + 18 + 139 + 1)) {
int i = (width - containerWidth) / 2;
int j = (height - containerHeight) / 2;
if (canScroll(container.getRecipes().length) && mouseX > (double) (i + 94) && mouseX < (double) (i + 94 + 6) && mouseY > (double) (j + 18) && mouseY <= (double) (j + 18 + 139 + 1)) {
scrolling = true;
}
@ -175,9 +175,9 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
}
private void syncRecipeIndex() {
handler.setIndex(selectedIndex);
assert client != null;
SelectSpellC2SPacket.send(client, selectedIndex);
container.setIndex(selectedIndex);
assert minecraft != null;
SelectSpellC2SPacket.send(minecraft, selectedIndex);
}
private final WidgetButtonPage[] buttons = new WidgetButtonPage[7];
@ -185,8 +185,8 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
@Override
protected void init() {
super.init();
int i = (width - backgroundWidth) / 2;
int j = (height - backgroundHeight) / 2;
int i = (width - containerWidth) / 2;
int j = (height - containerHeight) / 2;
int k = j + 16 + 2;
for (int l = 0; l < 7; ++l) {
@ -219,8 +219,8 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
}
public void renderToolTip(int mouseX, int mouseY) {
if (hovered && handler.getRecipes().length > index + indexStartOffset && mouseX > this.x + 65) {
ItemStack itemStack = handler.getRecipes()[index + indexStartOffset].getItemCost();
if (isHovered && container.getRecipes().length > index + indexStartOffset && mouseX > this.x + 65) {
ItemStack itemStack = container.getRecipes()[index + indexStartOffset].getItemCost();
if (!itemStack.isEmpty()) {
renderTooltip(itemStack, mouseX, mouseY);
}
@ -228,8 +228,8 @@ public class CastingTableScreen extends HandledScreen<CastingTableScreenHandler>
}
@Override
public void drawCenteredString(TextRenderer textRenderer, String str, int centerX, int y, int color) {
drawString(textRenderer, str, x + 5, y, color);
public void drawCenteredString(TextRenderer font, String str, int centerX, int y, int color) {
drawString(font, str, x + 5, y, color);
}
}
}

View File

@ -9,7 +9,7 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.projectile.thrown.ThrownItemEntity;
import net.minecraft.entity.thrown.ThrownItemEntity;
import net.minecraft.item.Item;
import net.minecraft.network.Packet;
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
@ -52,7 +52,6 @@ public class SpellEntity extends ThrownItemEntity {
@Override
protected void onCollision(HitResult hitResult) {
super.onCollision(hitResult);
if (!getEntityWorld().isClient()) {
Map<Identifier, Integer> spells = SpellHelper.getSpells(getItem());
if (!spells.containsKey(Spells.INWARD_SPELL)) {

View File

@ -5,16 +5,16 @@ import com.thebrokenrail.sorcerycraft.spell.api.Spell;
import com.thebrokenrail.sorcerycraft.spell.util.SpellPlayerEntity;
import com.thebrokenrail.sorcerycraft.spell.api.registry.SpellRegistry;
import com.thebrokenrail.sorcerycraft.spell.util.SpellHelper;
import net.minecraft.container.BlockContext;
import net.minecraft.container.Container;
import net.minecraft.container.ContainerType;
import net.minecraft.container.Slot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.BasicInventory;
import net.minecraft.inventory.CraftingResultInventory;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.screen.ScreenHandlerContext;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.screen.slot.Slot;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
@ -25,15 +25,15 @@ import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
public class CastingTableScreenHandler extends ScreenHandler {
public class CastingTableScreenHandler extends Container {
private final Inventory inventory;
private final Inventory result;
private Spell[] spells = new Spell[0];
private final ScreenHandlerContext context;
private final BlockContext context;
private int index = 0;
public CastingTableScreenHandler(int syncId, PlayerInventory playerInventory, ScreenHandlerContext blockContext) {
super(ScreenHandlerType.STONECUTTER, syncId);
public CastingTableScreenHandler(int syncId, PlayerInventory playerInventory, BlockContext blockContext) {
super(ContainerType.STONECUTTER, syncId);
inventory = new BasicInventory(2) {
public void markDirty() {

View File

@ -14,11 +14,11 @@ import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.ActionResult;
import net.minecraft.util.DefaultedList;
import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import net.minecraft.util.TypedActionResult;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.world.World;
import java.util.HashMap;

View File

@ -3,9 +3,9 @@ package com.thebrokenrail.sorcerycraft.mixin;
import com.thebrokenrail.sorcerycraft.gui.CastingTableScreenHandler;
import com.thebrokenrail.sorcerycraft.spell.util.SpellHelper;
import com.thebrokenrail.sorcerycraft.spell.util.SpellPlayerEntity;
import net.minecraft.container.Container;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@ -19,7 +19,7 @@ import java.util.Map;
@SuppressWarnings("unused")
@Mixin(PlayerEntity.class)
public class MixinPlayerEntity implements SpellPlayerEntity {
@Shadow public ScreenHandler currentScreenHandler;
@Shadow public Container container;
// Namespace Fields
private Map<Identifier, Integer> sorceryCraftDiscoveredSpells = new HashMap<>();
@ -36,9 +36,9 @@ public class MixinPlayerEntity implements SpellPlayerEntity {
@Override
public void setDiscoveredSpells(Map<Identifier, Integer> spells) {
this.sorceryCraftDiscoveredSpells = spells;
if (currentScreenHandler instanceof CastingTableScreenHandler) {
if (container instanceof CastingTableScreenHandler) {
//noinspection ConstantConditions
((CastingTableScreenHandler) currentScreenHandler).setSpells((PlayerEntity) (Object) this);
((CastingTableScreenHandler) container).setSpells((PlayerEntity) (Object) this);
}
}

View File

@ -32,7 +32,7 @@ public abstract class MixinServerPlayerEntity extends MixinPlayerEntity implemen
@Override
public void setDiscoveredSpells(Map<Identifier, Integer> spells) {
super.setDiscoveredSpells(spells);
if (currentScreenHandler instanceof CastingTableScreenHandler) {
if (container instanceof CastingTableScreenHandler) {
sync();
}
}

View File

@ -7,15 +7,15 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.network.PacketContext;
import net.minecraft.client.MinecraftClient;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.container.Container;
import net.minecraft.network.packet.c2s.play.CustomPayloadC2SPacket;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.util.Identifier;
import net.minecraft.util.PacketByteBuf;
public class SelectSpellC2SPacket {
public static void handle(PacketContext context, PacketByteBuf bytes) {
int index = bytes.readInt();
ScreenHandler handler = context.getPlayer().currentScreenHandler;
Container handler = context.getPlayer().container;
if (handler instanceof CastingTableScreenHandler) {
CastingTableScreenHandler merchantContainer = (CastingTableScreenHandler) handler;
merchantContainer.setIndex(index);

View File

@ -1,6 +1,7 @@
package com.thebrokenrail.sorcerycraft.packet;
import com.thebrokenrail.sorcerycraft.SorceryCraft;
import com.thebrokenrail.sorcerycraft.gui.CastingTableScreenHandler;
import com.thebrokenrail.sorcerycraft.spell.util.SpellPlayerEntity;
import com.thebrokenrail.sorcerycraft.spell.util.SpellHelper;
import io.netty.buffer.Unpooled;
@ -8,10 +9,10 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.network.PacketContext;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.PacketByteBuf;
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 UpdateKnownSpellsS2CPacket {
@Environment(EnvType.CLIENT)
@ -20,6 +21,9 @@ public class UpdateKnownSpellsS2CPacket {
if (context.getPlayer() != null) {
SpellPlayerEntity spellPlayer = (SpellPlayerEntity) context.getPlayer();
spellPlayer.setDiscoveredSpells(SpellHelper.getSpells(tag));
if (context.getPlayer().container instanceof CastingTableScreenHandler) {
((CastingTableScreenHandler) context.getPlayer().container).setSpells(context.getPlayer());
}
}
}

View File

@ -1,11 +1,12 @@
package com.thebrokenrail.sorcerycraft.spell;
import com.thebrokenrail.sorcerycraft.spell.api.Spell;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.state.property.Properties;
import net.minecraft.tag.BlockTags;
import net.minecraft.state.property.Properties;
import net.minecraft.util.Identifier;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
@ -24,7 +25,7 @@ public class CoolingSpell extends Spell {
@Override
public void execute(World world, Entity source, Entity attacker, BlockHitResult hitResult) {
BlockPos blockPos = hitResult.getBlockPos();
if (world.getBlockState(blockPos).isIn(BlockTags.FIRE)) {
if (world.getBlockState(blockPos).getBlock() == Blocks.FIRE) {
world.removeBlock(blockPos, false);
}
if (world.getBlockState(blockPos).get(Properties.LIT)) {
@ -32,7 +33,7 @@ public class CoolingSpell extends Spell {
}
BlockPos sideBlockPos = blockPos.offset(hitResult.getSide());
if (world.getBlockState(sideBlockPos).isIn(BlockTags.FIRE)) {
if (world.getBlockState(sideBlockPos).getBlock() == Blocks.FIRE) {
world.removeBlock(sideBlockPos, false);
}
}

View File

@ -1,8 +1,9 @@
package com.thebrokenrail.sorcerycraft.spell;
import com.thebrokenrail.sorcerycraft.spell.api.Spell;
import net.minecraft.block.AbstractFireBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.FireBlock;
import net.minecraft.block.TntBlock;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
@ -40,7 +41,7 @@ public class FlameSpell extends Spell {
TntBlock.primeTnt(world, blockPos);
world.removeBlock(blockPos, false);
} else if (FlintAndSteelItem.canIgnite(sideBlockState, world, sideBlockPos)) {
world.setBlockState(sideBlockPos, AbstractFireBlock.getState(world, sideBlockPos));
world.setBlockState(sideBlockPos, ((FireBlock) Blocks.FIRE).getStateForPosition(world, sideBlockPos));
} else if (FlintAndSteelItem.isIgnitable(blockState)) {
world.setBlockState(blockPos, blockState.with(Properties.LIT, true));
}

View File

@ -17,7 +17,7 @@ public class SteadfastSpell extends Spell {
@Override
public ItemStack getItemCost() {
return new ItemStack(Items.NETHERITE_INGOT);
return new ItemStack(Items.DIAMOND);
}
@Override

View File

@ -32,6 +32,6 @@
"depends": {
"fabricloader": ">=0.7.4",
"fabric": "*",
"minecraft": "1.16.x"
"minecraft": "1.15.x"
}
}