refactor: Flattened the runestone blocks

This commit is contained in:
WinDanesz
2022-09-09 23:51:30 +02:00
parent b1e70c01f0
commit 5d337b93a6
54 changed files with 399 additions and 333 deletions
@@ -1,5 +1,6 @@
package electroblob.wizardry.block; package electroblob.wizardry.block;
import electroblob.wizardry.api.IElemental;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@@ -11,7 +12,7 @@ import net.minecraft.world.IBlockAccess;
import java.util.EnumMap; import java.util.EnumMap;
public class BlockCrystal extends Block { public class BlockCrystal extends Block implements IElemental {
private static final EnumMap<Element, MapColor> map_colours = new EnumMap<>(Element.class); private static final EnumMap<Element, MapColor> map_colours = new EnumMap<>(Element.class);
@@ -26,6 +27,9 @@ public class BlockCrystal extends Block {
map_colours.put(Element.HEALING, MapColor.YELLOW); map_colours.put(Element.HEALING, MapColor.YELLOW);
} }
@Override
public Element getElement() { return element; }
private final Element element; private final Element element;
public BlockCrystal(Element element) { public BlockCrystal(Element element) {
@@ -5,24 +5,15 @@ import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor; import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import java.util.Arrays;
import java.util.EnumMap; import java.util.EnumMap;
public class BlockRunestone extends Block { public class BlockRunestone extends Block {
public static final PropertyEnum<Element> ELEMENT = PropertyEnum.create("element", Element.class,
Arrays.copyOfRange(Element.values(), 1, Element.values().length)); // Everything except MAGIC
private static final EnumMap<Element, MapColor> map_colours = new EnumMap<>(Element.class); private static final EnumMap<Element, MapColor> map_colours = new EnumMap<>(Element.class);
static { static {
@@ -34,54 +25,24 @@ public class BlockRunestone extends Block {
map_colours.put(Element.SORCERY, MapColor.GRAY); map_colours.put(Element.SORCERY, MapColor.GRAY);
map_colours.put(Element.HEALING, MapColor.YELLOW_STAINED_HARDENED_CLAY); map_colours.put(Element.HEALING, MapColor.YELLOW_STAINED_HARDENED_CLAY);
} }
public BlockRunestone(Material material){ private final Element element;
public BlockRunestone(Material material, Element element) {
super(material); super(material);
this.setDefaultState(this.blockState.getBaseState().withProperty(ELEMENT, Element.FIRE)); this.setCreativeTab(WizardryTabs.WIZARDRY);
this.setCreativeTab(WizardryTabs.WIZARDRY);
this.setHardness(1.5F); this.setHardness(1.5F);
this.setResistance(10.0F); this.setResistance(10.0F);
} this.element = element;
@Override
public int damageDropped(IBlockState state){
return state.getValue(ELEMENT).ordinal();
}
@Override
public MapColor getMapColor(IBlockState state, IBlockAccess world, BlockPos pos){
return map_colours.get(state.getProperties().get(ELEMENT));
}
@Override
public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> items){
if(this.getCreativeTab() == tab){
for(Element element : Arrays.copyOfRange(Element.values(), 1, Element.values().length)){
items.add(new ItemStack(this, 1, element.ordinal()));
}
}
} }
public Element getElement() { return element; }
@Override @Override
public BlockRenderLayer getRenderLayer(){ public MapColor getMapColor(IBlockState state, IBlockAccess world, BlockPos pos) { return map_colours.get(element); }
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT; // Required to shade parts of the block faces differently to others return BlockRenderLayer.CUTOUT; // Required to shade parts of the block faces differently to others
} }
@Override
public IBlockState getStateFromMeta(int metadata){
Element element = Element.values()[metadata];
if(!ELEMENT.getAllowedValues().contains(element)) return this.getDefaultState();
return this.getDefaultState().withProperty(ELEMENT, element);
}
@Override
public int getMetaFromState(IBlockState state){
return state.getValue(ELEMENT).ordinal();
}
@Override
protected BlockStateContainer createBlockState(){
return new BlockStateContainer(this, ELEMENT);
}
} }
@@ -1,5 +1,6 @@
package electroblob.wizardry.block; package electroblob.wizardry.block;
import electroblob.wizardry.api.IElemental;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.tileentity.TileEntityShrineCore; import electroblob.wizardry.tileentity.TileEntityShrineCore;
@@ -8,28 +9,20 @@ import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.MapColor; import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Explosion; import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.EnumMap; import java.util.EnumMap;
public class BlockPedestal extends Block implements ITileEntityProvider { public class BlockRunestonePedestal extends Block implements ITileEntityProvider, IElemental {
public static final PropertyEnum<Element> ELEMENT = PropertyEnum.create("element", Element.class,
Arrays.copyOfRange(Element.values(), 1, Element.values().length)); // Everything except MAGIC
// A 'natural' pedestal is one that was generated as part of a structure, is unbreakable and has a tileentity // A 'natural' pedestal is one that was generated as part of a structure, is unbreakable and has a tileentity
public static final PropertyBool NATURAL = PropertyBool.create("natural"); public static final PropertyBool NATURAL = PropertyBool.create("natural");
@@ -46,80 +39,66 @@ public class BlockPedestal extends Block implements ITileEntityProvider {
map_colours.put(Element.HEALING, MapColor.YELLOW_STAINED_HARDENED_CLAY); map_colours.put(Element.HEALING, MapColor.YELLOW_STAINED_HARDENED_CLAY);
} }
public BlockPedestal(Material material){ private final Element element;
public BlockRunestonePedestal(Material material, Element element) {
super(material); super(material);
this.setDefaultState(this.blockState.getBaseState().withProperty(ELEMENT, Element.FIRE).withProperty(NATURAL, false)); this.setDefaultState(this.blockState.getBaseState().withProperty(NATURAL, false));
this.setCreativeTab(WizardryTabs.WIZARDRY); this.setCreativeTab(WizardryTabs.WIZARDRY);
this.setHardness(1.5F); this.setHardness(1.5F);
this.setResistance(10.0F); this.setResistance(10.0F);
this.element = element;
} }
@Override @Override
public int damageDropped(IBlockState state){ public Element getElement() {
return state.getValue(ELEMENT).ordinal(); // Ignore the NATURAL state here, it's unobtainable return element;
} }
@Override @Override
public MapColor getMapColor(IBlockState state, IBlockAccess world, BlockPos pos){ public MapColor getMapColor(IBlockState state, IBlockAccess world, BlockPos pos) {
return map_colours.get(state.getProperties().get(ELEMENT)); return map_colours.get(element);
} }
@Override @Override
public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> items){ public BlockRenderLayer getRenderLayer() {
// Ignore the NATURAL state here, it's unobtainable
if(this.getCreativeTab() == tab){
for(Element element : Arrays.copyOfRange(Element.values(), 1, Element.values().length)){
items.add(new ItemStack(this, 1, element.ordinal()));
}
}
}
@Override
public BlockRenderLayer getRenderLayer(){
return BlockRenderLayer.CUTOUT; // Required to shade parts of the block faces differently to others return BlockRenderLayer.CUTOUT; // Required to shade parts of the block faces differently to others
} }
@Override @Override
public float getBlockHardness(IBlockState state, World world, BlockPos pos){ public float getBlockHardness(IBlockState state, World world, BlockPos pos) {
return state.getValue(NATURAL) ? -1 : super.getBlockHardness(state, world, pos); return state.getValue(NATURAL) ? -1 : super.getBlockHardness(state, world, pos);
} }
@Override @Override
public float getExplosionResistance(World world, BlockPos pos, @Nullable Entity exploder, Explosion explosion){ public float getExplosionResistance(World world, BlockPos pos, @Nullable Entity exploder, Explosion explosion) {
return world.getBlockState(pos).getValue(NATURAL) ? 6000000.0F : super.getExplosionResistance(world, pos, exploder, explosion); return world.getBlockState(pos).getValue(NATURAL) ? 6000000.0F : super.getExplosionResistance(world, pos, exploder, explosion);
} }
@Override @Override
public boolean hasTileEntity(IBlockState state){ public boolean hasTileEntity(IBlockState state) {
return state.getValue(NATURAL); // Only naturally-generated pedestals have a (shrine core) tile entity return state.getValue(NATURAL); // Only naturally-generated pedestals have a (shrine core) tile entity
} }
@Nullable @Nullable
@Override @Override
public TileEntity createNewTileEntity(World world, int meta){ public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityShrineCore(); return new TileEntityShrineCore();
} }
@Override @Override
public IBlockState getStateFromMeta(int metadata){ public IBlockState getStateFromMeta(int meta) {
boolean natural = false; return this.getDefaultState().withProperty(NATURAL, meta == 1);
if(metadata > ELEMENT.getAllowedValues().size()){
natural = true;
metadata -= ELEMENT.getAllowedValues().size();
}
Element element = Element.values()[metadata];
if(!ELEMENT.getAllowedValues().contains(element)) return this.getDefaultState().withProperty(NATURAL, natural);
return this.getDefaultState().withProperty(ELEMENT, element).withProperty(NATURAL, natural);
} }
@Override @Override
public int getMetaFromState(IBlockState state){ public int getMetaFromState(IBlockState state) {
return state.getValue(ELEMENT).ordinal() + (state.getValue(NATURAL) ? ELEMENT.getAllowedValues().size() : 0); return state.getValue(NATURAL) ? 1 : 0;
} }
@Override @Override
protected BlockStateContainer createBlockState(){ protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, ELEMENT, NATURAL); return new BlockStateContainer(this, NATURAL);
} }
} }
@@ -1,13 +1,9 @@
package electroblob.wizardry.client.model; package electroblob.wizardry.client.model;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.block.BlockCrystal; import electroblob.wizardry.block.BlockRunestonePedestal;
import electroblob.wizardry.block.BlockPedestal;
import electroblob.wizardry.block.BlockRunestone;
import electroblob.wizardry.item.IMultiTexturedItem; import electroblob.wizardry.item.IMultiTexturedItem;
import electroblob.wizardry.item.ItemBlockMultiTextured; import electroblob.wizardry.item.ItemBlockMultiTextured;
import electroblob.wizardry.item.ItemCrystal;
import electroblob.wizardry.item.ItemSpectralDust;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryItems;
import net.minecraft.block.BlockPlanks; import net.minecraft.block.BlockPlanks;
@@ -50,17 +46,6 @@ public final class WizardryModels {
@SubscribeEvent @SubscribeEvent
public static void register(ModelRegistryEvent event){ public static void register(ModelRegistryEvent event){
// ItemBlocks
ModelLoader.setCustomStateMapper(WizardryBlocks.runestone, new StateMap.Builder()
.withName(BlockRunestone.ELEMENT).withSuffix("_runestone").build());
ItemBlockMultiTextured runestoneItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.runestone);
registerMultiTexturedModel(runestoneItem);
ModelLoader.setCustomStateMapper(WizardryBlocks.runestone_pedestal, new StateMap.Builder()
.withName(BlockPedestal.ELEMENT).ignore(BlockPedestal.NATURAL).withSuffix("_runestone_pedestal").build()); // Don't care about NATURAL property
ItemBlockMultiTextured pedestalItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.runestone_pedestal);
registerMultiTexturedModel(pedestalItem);
ModelLoader.setCustomStateMapper(WizardryBlocks.gilded_wood, new StateMap.Builder() ModelLoader.setCustomStateMapper(WizardryBlocks.gilded_wood, new StateMap.Builder()
.withName(BlockPlanks.VARIANT).withSuffix("_gilded_wood").build()); .withName(BlockPlanks.VARIANT).withSuffix("_gilded_wood").build());
ItemBlockMultiTextured gildedWoodItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.gilded_wood); ItemBlockMultiTextured gildedWoodItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.gilded_wood);
@@ -1,16 +1,21 @@
package electroblob.wizardry.item; package electroblob.wizardry.item;
import electroblob.wizardry.api.IElemental;
import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryTabs; import electroblob.wizardry.registry.WizardryTabs;
import net.minecraft.item.Item; import net.minecraft.item.Item;
/** Note that in 1.13, <i>the flattening</i> will make this class redundant, much like ItemCoal, which is probably its public class ItemCrystal extends Item implements IElemental {
* closest analog in vanilla. */
public class ItemCrystal extends Item {
public ItemCrystal(){ private final Element element;
public ItemCrystal(Element element) {
super(); super();
this.setMaxDamage(0); this.setMaxDamage(0);
this.setCreativeTab(WizardryTabs.WIZARDRY); this.setCreativeTab(WizardryTabs.WIZARDRY);
} this.element = element;
}
@Override
public Element getElement() { return element; }
} }
@@ -68,7 +68,21 @@ public final class WizardryBlocks {
public static final Block permafrost = placeholder(); public static final Block permafrost = placeholder();
public static final Block runestone = placeholder(); public static final Block runestone = placeholder();
public static final Block runestone_pedestal = placeholder(); public static final Block fire_runestone = placeholder();
public static final Block ice_runestone = placeholder();
public static final Block lightning_runestone = placeholder();
public static final Block necromancy_runestone = placeholder();
public static final Block earth_runestone = placeholder();
public static final Block sorcery_runestone = placeholder();
public static final Block healing_runestone = placeholder();
public static final Block fire_runestone_pedestal = placeholder();
public static final Block ice_runestone_pedestal = placeholder();
public static final Block lightning_runestone_pedestal = placeholder();
public static final Block necromancy_runestone_pedestal = placeholder();
public static final Block earth_runestone_pedestal = placeholder();
public static final Block healing_runestone_pedestal = placeholder();
public static final Block sorcery_runestone_pedestal = placeholder();
public static final Block gilded_wood = placeholder(); public static final Block gilded_wood = placeholder();
@@ -140,8 +154,21 @@ public final class WizardryBlocks {
registerBlock(registry, "crystal_flower_pot", new BlockCrystalFlowerPot()); registerBlock(registry, "crystal_flower_pot", new BlockCrystalFlowerPot());
registerBlock(registry, "permafrost", new BlockPermafrost()); registerBlock(registry, "permafrost", new BlockPermafrost());
registerBlock(registry, "runestone", new BlockRunestone(Material.ROCK)); registerBlock(registry, "fire_runestone", new BlockRunestone(Material.ROCK, Element.FIRE));
registerBlock(registry, "runestone_pedestal", new BlockPedestal(Material.ROCK)); registerBlock(registry, "ice_runestone", new BlockRunestone(Material.ROCK, Element.ICE));
registerBlock(registry, "lightning_runestone", new BlockRunestone(Material.ROCK, Element.LIGHTNING));
registerBlock(registry, "necromancy_runestone", new BlockRunestone(Material.ROCK, Element.NECROMANCY));
registerBlock(registry, "earth_runestone", new BlockRunestone(Material.ROCK, Element.EARTH));
registerBlock(registry, "sorcery_runestone", new BlockRunestone(Material.ROCK, Element.SORCERY));
registerBlock(registry, "healing_runestone", new BlockRunestone(Material.ROCK, Element.HEALING));
registerBlock(registry, "fire_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.FIRE));
registerBlock(registry, "ice_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.ICE));
registerBlock(registry, "lightning_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.LIGHTNING));
registerBlock(registry, "necromancy_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.NECROMANCY));
registerBlock(registry, "earth_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.EARTH));
registerBlock(registry, "healing_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.HEALING));
registerBlock(registry, "sorcery_runestone_pedestal", new BlockRunestonePedestal(Material.ROCK, Element.SORCERY));
registerBlock(registry, "gilded_wood", new BlockGildedWood()); registerBlock(registry, "gilded_wood", new BlockGildedWood());
@@ -569,8 +569,14 @@ public final class WizardryItems {
registerItemBlock(registry, WizardryBlocks.sorcery_crystal_block); registerItemBlock(registry, WizardryBlocks.sorcery_crystal_block);
registerItemBlock(registry, WizardryBlocks.healing_crystal_block); registerItemBlock(registry, WizardryBlocks.healing_crystal_block);
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone, false, elements); registerItemBlock(registry, WizardryBlocks.fire_runestone);
registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone_pedestal, false, elements); registerItemBlock(registry, WizardryBlocks.ice_runestone);
registerItemBlock(registry, WizardryBlocks.lightning_runestone);
registerItemBlock(registry, WizardryBlocks.necromancy_runestone);
registerItemBlock(registry, WizardryBlocks.earth_runestone);
registerItemBlock(registry, WizardryBlocks.sorcery_runestone);
registerItemBlock(registry, WizardryBlocks.healing_runestone);
registerMultiTexturedItemBlock(registry, WizardryBlocks.gilded_wood, true, woodTypes); registerMultiTexturedItemBlock(registry, WizardryBlocks.gilded_wood, true, woodTypes);
registerItemBlock(registry, WizardryBlocks.oak_bookshelf); registerItemBlock(registry, WizardryBlocks.oak_bookshelf);
@@ -592,14 +598,14 @@ public final class WizardryItems {
// Items // Items
registerItem(registry, "magic_crystal", new ItemCrystal()); registerItem(registry, "magic_crystal", new ItemCrystal(Element.MAGIC));
registerItem(registry, "earth_crystal", new ItemCrystal()); registerItem(registry, "earth_crystal", new ItemCrystal(Element.EARTH));
registerItem(registry, "fire_crystal", new ItemCrystal()); registerItem(registry, "fire_crystal", new ItemCrystal(Element.FIRE));
registerItem(registry, "healing_crystal", new ItemCrystal()); registerItem(registry, "healing_crystal", new ItemCrystal(Element.HEALING));
registerItem(registry, "ice_crystal", new ItemCrystal()); registerItem(registry, "ice_crystal", new ItemCrystal(Element.ICE));
registerItem(registry, "lightning_crystal", new ItemCrystal()); registerItem(registry, "lightning_crystal", new ItemCrystal(Element.LIGHTNING));
registerItem(registry, "necromancy_crystal", new ItemCrystal()); registerItem(registry, "necromancy_crystal", new ItemCrystal(Element.NECROMANCY));
registerItem(registry, "sorcery_crystal", new ItemCrystal()); registerItem(registry, "sorcery_crystal", new ItemCrystal(Element.SORCERY));
registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); registerItem(registry, "crystal_shard", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY)); registerItem(registry, "grand_crystal", new Item().setCreativeTab(WizardryTabs.WIZARDRY));
@@ -1,7 +1,9 @@
package electroblob.wizardry.tileentity; package electroblob.wizardry.tileentity;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.block.BlockPedestal; import electroblob.wizardry.api.IElemental;
import electroblob.wizardry.block.BlockRunestonePedestal;
import electroblob.wizardry.constants.Element;
import electroblob.wizardry.entity.living.EntityEvilWizard; import electroblob.wizardry.entity.living.EntityEvilWizard;
import electroblob.wizardry.entity.living.EntityWizard; import electroblob.wizardry.entity.living.EntityWizard;
import electroblob.wizardry.packet.PacketConquerShrine; import electroblob.wizardry.packet.PacketConquerShrine;
@@ -101,7 +103,8 @@ public class TileEntityShrineCore extends TileEntity implements ITickable {
} }
wizard.setLocationAndAngles(x1, y1 + 0.5, z1, 0, 0); wizard.setLocationAndAngles(x1, y1 + 0.5, z1, 0, 0);
wizard.setElement(world.getBlockState(pos).getValue(BlockPedestal.ELEMENT)); wizard.setElement(world.getBlockState(pos).getBlock() instanceof IElemental
? ((IElemental) world.getBlockState(pos).getBlock()).getElement() : Element.MAGIC);
wizard.onInitialSpawn(world.getDifficultyForLocation(pos), null); wizard.onInitialSpawn(world.getDifficultyForLocation(pos), null);
wizard.hasStructure = true; wizard.hasStructure = true;
@@ -144,9 +147,8 @@ public class TileEntityShrineCore extends TileEntity implements ITickable {
WizardryPacketHandler.net.sendToAllAround(new PacketConquerShrine.Message(this.pos), WizardryPacketHandler.net.sendToAllAround(new PacketConquerShrine.Message(this.pos),
new NetworkRegistry.TargetPoint(this.world.provider.getDimension(), x, y, z, 64)); new NetworkRegistry.TargetPoint(this.world.provider.getDimension(), x, y, z, 64));
if(world.getBlockState(pos).getBlock() == WizardryBlocks.runestone_pedestal){ if(world.getBlockState(pos).getBlock() instanceof BlockRunestonePedestal){
world.setBlockState(pos, WizardryBlocks.runestone_pedestal.getDefaultState() world.setBlockState(pos, world.getBlockState(pos).getBlock().getDefaultState());
.withProperty(BlockPedestal.ELEMENT, world.getBlockState(pos).getValue(BlockPedestal.ELEMENT)));
}else{ }else{
Wizardry.logger.warn("What's going on?! A shrine core is being conquered but the block at its position is not a runestone pedestal!"); Wizardry.logger.warn("What's going on?! A shrine core is being conquered but the block at its position is not a runestone pedestal!");
} }
@@ -5,6 +5,7 @@ import electroblob.wizardry.block.BlockRunestone;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.entity.living.EntityRemnant; import electroblob.wizardry.entity.living.EntityRemnant;
import electroblob.wizardry.integration.antiqueatlas.WizardryAntiqueAtlasIntegration; import electroblob.wizardry.integration.antiqueatlas.WizardryAntiqueAtlasIntegration;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.MobSpawnerBaseLogic; import net.minecraft.tileentity.MobSpawnerBaseLogic;
@@ -17,6 +18,7 @@ import net.minecraft.world.World;
import net.minecraft.world.gen.structure.template.ITemplateProcessor; import net.minecraft.world.gen.structure.template.ITemplateProcessor;
import net.minecraft.world.gen.structure.template.PlacementSettings; import net.minecraft.world.gen.structure.template.PlacementSettings;
import net.minecraft.world.gen.structure.template.Template; import net.minecraft.world.gen.structure.template.Template;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import java.util.Map; import java.util.Map;
@@ -58,9 +60,10 @@ public class WorldGenObelisk extends WorldGenSurfaceStructure {
public void spawnStructure(Random random, World world, BlockPos origin, Template template, PlacementSettings settings, ResourceLocation structureFile){ public void spawnStructure(Random random, World world, BlockPos origin, Template template, PlacementSettings settings, ResourceLocation structureFile){
final Element element = Element.values()[1 + random.nextInt(Element.values().length-1)]; final Element element = Element.values()[1 + random.nextInt(Element.values().length-1)];
Block runeStone = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(Wizardry.MODID, element.getName().toLowerCase() + "_runestone"));
ITemplateProcessor processor = (w, p, i) -> i.blockState.getBlock() instanceof BlockRunestone ? new Template.BlockInfo( ITemplateProcessor processor = (w, p, i) -> i.blockState.getBlock() instanceof BlockRunestone ? new Template.BlockInfo(
i.pos, i.blockState.withProperty(BlockRunestone.ELEMENT, element), i.tileentityData) : i; i.pos, runeStone.getDefaultState(), i.tileentityData) : i;
template.addBlocksToWorld(world, origin, processor, settings, 2 | 16); template.addBlocksToWorld(world, origin, processor, settings, 2 | 16);
@@ -1,13 +1,14 @@
package electroblob.wizardry.worldgen; package electroblob.wizardry.worldgen;
import electroblob.wizardry.Wizardry; import electroblob.wizardry.Wizardry;
import electroblob.wizardry.block.BlockPedestal; import electroblob.wizardry.block.BlockRunestonePedestal;
import electroblob.wizardry.block.BlockRunestone; import electroblob.wizardry.block.BlockRunestone;
import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.Element;
import electroblob.wizardry.integration.antiqueatlas.WizardryAntiqueAtlasIntegration; import electroblob.wizardry.integration.antiqueatlas.WizardryAntiqueAtlasIntegration;
import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryBlocks;
import electroblob.wizardry.spell.ArcaneLock; import electroblob.wizardry.spell.ArcaneLock;
import electroblob.wizardry.tileentity.TileEntityShrineCore; import electroblob.wizardry.tileentity.TileEntityShrineCore;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@@ -15,6 +16,7 @@ import net.minecraft.world.World;
import net.minecraft.world.gen.structure.template.ITemplateProcessor; import net.minecraft.world.gen.structure.template.ITemplateProcessor;
import net.minecraft.world.gen.structure.template.PlacementSettings; import net.minecraft.world.gen.structure.template.PlacementSettings;
import net.minecraft.world.gen.structure.template.Template; import net.minecraft.world.gen.structure.template.Template;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import java.util.Map; import java.util.Map;
@@ -50,9 +52,10 @@ public class WorldGenShrine extends WorldGenSurfaceStructure {
public void spawnStructure(Random random, World world, BlockPos origin, Template template, PlacementSettings settings, ResourceLocation structureFile){ public void spawnStructure(Random random, World world, BlockPos origin, Template template, PlacementSettings settings, ResourceLocation structureFile){
final Element element = Element.values()[1 + random.nextInt(Element.values().length-1)]; final Element element = Element.values()[1 + random.nextInt(Element.values().length-1)];
Block runeStone = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(Wizardry.MODID, element.getName().toLowerCase() + "_runestone"));
ITemplateProcessor processor = (w, p, i) -> i.blockState.getBlock() instanceof BlockRunestone ? new Template.BlockInfo( ITemplateProcessor processor = (w, p, i) -> i.blockState.getBlock() instanceof BlockRunestone ? new Template.BlockInfo(
i.pos, i.blockState.withProperty(BlockRunestone.ELEMENT, element), i.tileentityData) : i; i.pos, runeStone.getDefaultState(), i.tileentityData) : i;
template.addBlocksToWorld(world, origin, processor, settings, 2 | 16); template.addBlocksToWorld(world, origin, processor, settings, 2 | 16);
@@ -65,8 +68,8 @@ public class WorldGenShrine extends WorldGenSurfaceStructure {
if(entry.getValue().equals(CORE_DATA_BLOCK_TAG)){ if(entry.getValue().equals(CORE_DATA_BLOCK_TAG)){
// This bit could have been done with a template processor, but we also need to link the chest and lock it // This bit could have been done with a template processor, but we also need to link the chest and lock it
world.setBlockState(entry.getKey(), WizardryBlocks.runestone_pedestal.getDefaultState() world.setBlockState(entry.getKey(), ForgeRegistries.BLOCKS.getValue(new ResourceLocation(Wizardry.MODID, element.getName().toLowerCase()
.withProperty(BlockPedestal.ELEMENT, element).withProperty(BlockPedestal.NATURAL, true)); + "_runestone_pedestal")).getDefaultState().withProperty(BlockRunestonePedestal.NATURAL, true));
TileEntity core = world.getTileEntity(entry.getKey()); TileEntity core = world.getTileEntity(entry.getKey());
TileEntity container = world.getTileEntity(entry.getKey().up()); TileEntity container = world.getTileEntity(entry.getKey().up());
@@ -7,8 +7,7 @@
"translate": "advancement.ebwizardry:visit_shrine.desc" "translate": "advancement.ebwizardry:visit_shrine.desc"
}, },
"icon": { "icon": {
"item": "ebwizardry:runestone", "item": "ebwizardry:ice_runestone"
"data": 5
} }
}, },
"parent": "ebwizardry:defeat_evil_wizard", "parent": "ebwizardry:defeat_evil_wizard",
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=Position %s, %s, %s in der dimens
tile.ebwizardry\:transportation_stone.forget=Position %s, %s, %s in der dimension %s vergessen tile.ebwizardry\:transportation_stone.forget=Position %s, %s, %s in der dimension %s vergessen
tile.ebwizardry\:transportation_stone.invalid=Du musst zuerst einen Kreis mit 8 Teleportsteinen bilden! tile.ebwizardry\:transportation_stone.invalid=Du musst zuerst einen Kreis mit 8 Teleportsteinen bilden!
tile.ebwizardry\:spectral_block.name=Spektralblock tile.ebwizardry\:spectral_block.name=Spektralblock
tile.ebwizardry\:runestone.name=Runenstein tile.ebwizardry\:fire_runestone.name=Runenstein
tile.ebwizardry\:runestone_pedestal.name=Runenstein Sockel tile.ebwizardry\:ice_runestone.name=Runenstein
tile.ebwizardry\:lightning_runestone.name=Runenstein
tile.ebwizardry\:necromancy_runestone.name=Runenstein
tile.ebwizardry\:earth_runestone.name=Runenstein
tile.ebwizardry\:healing_runestone.name=Runenstein
tile.ebwizardry\:sorcery_runestone.name=Runenstein
tile.ebwizardry\:fire_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:ice_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:lightning_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:necromancy_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:earth_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:healing_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:sorcery_runestone_pedestal.name=Runenstein Sockel
tile.ebwizardry\:thorns.name=Dornen tile.ebwizardry\:thorns.name=Dornen
tile.ebwizardry\:obsidian_crust.name=Obsidian Kruste tile.ebwizardry\:obsidian_crust.name=Obsidian Kruste
tile.ebwizardry\:dry_frosted_ice.name=Gefrohrenes Trockeneis tile.ebwizardry\:dry_frosted_ice.name=Gefrohrenes Trockeneis
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=Remembered the location %s, %s, %
tile.ebwizardry\:transportation_stone.forget=Forgot the location %s, %s, %s in dimension %s tile.ebwizardry\:transportation_stone.forget=Forgot the location %s, %s, %s in dimension %s
tile.ebwizardry\:transportation_stone.invalid=You must make a circle with 8 stones of transportation first! tile.ebwizardry\:transportation_stone.invalid=You must make a circle with 8 stones of transportation first!
tile.ebwizardry\:spectral_block.name=Spectral Block tile.ebwizardry\:spectral_block.name=Spectral Block
tile.ebwizardry\:runestone.name=Runestone tile.ebwizardry\:fire_runestone.name=Runestone
tile.ebwizardry\:runestone_pedestal.name=Runestone Pedestal tile.ebwizardry\:ice_runestone.name=Runestone
tile.ebwizardry\:lightning_runestone.name=Runestone
tile.ebwizardry\:necromancy_runestone.name=Runestone
tile.ebwizardry\:earth_runestone.name=Runestone
tile.ebwizardry\:healing_runestone.name=Runestone
tile.ebwizardry\:sorcery_runestone.name=Runestone
tile.ebwizardry\:fire_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:ice_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:lightning_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:necromancy_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:earth_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:healing_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:sorcery_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:thorns.name=Thorns tile.ebwizardry\:thorns.name=Thorns
tile.ebwizardry\:obsidian_crust.name=Obsidian Crust tile.ebwizardry\:obsidian_crust.name=Obsidian Crust
tile.ebwizardry\:dry_frosted_ice.name=Dry Frosted Ice tile.ebwizardry\:dry_frosted_ice.name=Dry Frosted Ice
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=Remembered the location %s, %s, %
tile.ebwizardry\:transportation_stone.forget=Forgot the location %s, %s, %s in dimension %s tile.ebwizardry\:transportation_stone.forget=Forgot the location %s, %s, %s in dimension %s
tile.ebwizardry\:transportation_stone.invalid=You must make a circle with 8 stones of transportation first! tile.ebwizardry\:transportation_stone.invalid=You must make a circle with 8 stones of transportation first!
tile.ebwizardry\:spectral_block.name=Spectral Block tile.ebwizardry\:spectral_block.name=Spectral Block
tile.ebwizardry\:runestone.name=Runestone tile.ebwizardry\:fire_runestone.name=Runestone
tile.ebwizardry\:runestone_pedestal.name=Runestone Pedestal tile.ebwizardry\:ice_runestone.name=Runestone
tile.ebwizardry\:lightning_runestone.name=Runestone
tile.ebwizardry\:necromancy_runestone.name=Runestone
tile.ebwizardry\:earth_runestone.name=Runestone
tile.ebwizardry\:healing_runestone.name=Runestone
tile.ebwizardry\:sorcery_runestone.name=Runestone
tile.ebwizardry\:fire_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:ice_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:lightning_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:necromancy_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:earth_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:healing_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:sorcery_runestone_pedestal.name=Runestone Pedestal
tile.ebwizardry\:thorns.name=Thorns tile.ebwizardry\:thorns.name=Thorns
tile.ebwizardry\:obsidian_crust.name=Obsidian Crust tile.ebwizardry\:obsidian_crust.name=Obsidian Crust
tile.ebwizardry\:dry_frosted_ice.name=Dry Frosted Ice tile.ebwizardry\:dry_frosted_ice.name=Dry Frosted Ice
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=La position %s, %s, %s a été ma
tile.ebwizardry\:transportation_stone.forget=La position %s, %s, %s a été effacée dans la dimension %s tile.ebwizardry\:transportation_stone.forget=La position %s, %s, %s a été effacée dans la dimension %s
tile.ebwizardry\:transportation_stone.invalid=Vous devez d'abord créer un cercle avec 8 pierres de téléportation! tile.ebwizardry\:transportation_stone.invalid=Vous devez d'abord créer un cercle avec 8 pierres de téléportation!
tile.ebwizardry\:spectral_block.name=Bloc spectral tile.ebwizardry\:spectral_block.name=Bloc spectral
tile.ebwizardry\:runestone.name=Pierre runique tile.ebwizardry\:fire_runestone.name=Pierre runique
tile.ebwizardry\:runestone_pedestal.name=Piédestal runique tile.ebwizardry\:ice_runestone.name=Pierre runique
tile.ebwizardry\:lightning_runestone.name=Pierre runique
tile.ebwizardry\:necromancy_runestone.name=Pierre runique
tile.ebwizardry\:earth_runestone.name=Pierre runique
tile.ebwizardry\:healing_runestone.name=Pierre runique
tile.ebwizardry\:sorcery_runestone.name=Pierre runique
tile.ebwizardry\:fire_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:ice_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:lightning_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:necromancy_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:earth_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:healing_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:sorcery_runestone_pedestal.name=Piédestal runique
tile.ebwizardry\:thorns.name=Épines tile.ebwizardry\:thorns.name=Épines
tile.ebwizardry\:obsidian_crust.name=Croûte d'obsidienne tile.ebwizardry\:obsidian_crust.name=Croûte d'obsidienne
tile.ebwizardry\:dry_frosted_ice.name=Glace dépolie tile.ebwizardry\:dry_frosted_ice.name=Glace dépolie
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=egjegyezve a hely: %s, %s, %s, %s
tile.ebwizardry\:transportation_stone.forget=Elfelejtve a hely: %s, %s, %s, %s dimenzióban tile.ebwizardry\:transportation_stone.forget=Elfelejtve a hely: %s, %s, %s, %s dimenzióban
tile.ebwizardry\:transportation_stone.invalid=Előbb egy kört kell építened 8 Transzportáció Kövéből! tile.ebwizardry\:transportation_stone.invalid=Előbb egy kört kell építened 8 Transzportáció Kövéből!
tile.ebwizardry\:spectral_block.name=Spektrálblokk tile.ebwizardry\:spectral_block.name=Spektrálblokk
tile.ebwizardry\:runestone.name=Rúnakő tile.ebwizardry\:fire_runestone.name=Rúnakő
tile.ebwizardry\:runestone_pedestal.name=Rúnakő Pedesztál tile.ebwizardry\:ice_runestone.name=Rúnakő
tile.ebwizardry\:lightning_runestone.name=Rúnakő
tile.ebwizardry\:necromancy_runestone.name=Rúnakő
tile.ebwizardry\:earth_runestone.name=Rúnakő
tile.ebwizardry\:healing_runestone.name=Rúnakő
tile.ebwizardry\:sorcery_runestone.name=Rúnakő
tile.ebwizardry\:fire_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:ice_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:lightning_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:necromancy_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:earth_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:healing_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:sorcery_runestone_pedestal.name=Rúnakő Pedesztál
tile.ebwizardry\:thorns.name=Tövisek tile.ebwizardry\:thorns.name=Tövisek
tile.ebwizardry\:obsidian_crust.name=Obszidián Kéreg tile.ebwizardry\:obsidian_crust.name=Obszidián Kéreg
tile.ebwizardry\:dry_frosted_ice.name=Száraz Fagyott Jég tile.ebwizardry\:dry_frosted_ice.name=Száraz Fagyott Jég
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=%s, %s, %s의 %s의 위치를 지
tile.ebwizardry\:transportation_stone.forget=%s, %s, %s의 %s의 위치를 지웠습니다 tile.ebwizardry\:transportation_stone.forget=%s, %s, %s의 %s의 위치를 지웠습니다
tile.ebwizardry\:transportation_stone.invalid=먼저 전이의 돌 8개로 전이진을 만들어야 합니다! tile.ebwizardry\:transportation_stone.invalid=먼저 전이의 돌 8개로 전이진을 만들어야 합니다!
tile.ebwizardry\:spectral_block.name=허상 블록 tile.ebwizardry\:spectral_block.name=허상 블록
tile.ebwizardry\:runestone.name=룬스톤 tile.ebwizardry\:fire_runestone.name=룬스톤
tile.ebwizardry\:runestone_pedestal.name=룬스톤 초석 tile.ebwizardry\:ice_runestone.name=룬스톤
tile.ebwizardry\:lightning_runestone.name=룬스톤
tile.ebwizardry\:necromancy_runestone.name=룬스톤
tile.ebwizardry\:earth_runestone.name=룬스톤
tile.ebwizardry\:healing_runestone.name=룬스톤
tile.ebwizardry\:sorcery_runestone.name=룬스톤
tile.ebwizardry\:fire_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:ice_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:lightning_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:necromancy_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:earth_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:healing_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:sorcery_runestone_pedestal.name=룬스톤 초석
tile.ebwizardry\:thorns.name=가시 tile.ebwizardry\:thorns.name=가시
tile.ebwizardry\:obsidian_crust.name=흑요석 껍질 tile.ebwizardry\:obsidian_crust.name=흑요석 껍질
tile.ebwizardry\:dry_frosted_ice.name=마른 반투명 얼음 tile.ebwizardry\:dry_frosted_ice.name=마른 반투명 얼음
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=Zapamiętano lokalizację %s, %s,
tile.ebwizardry\:transportation_stone.forget=Zapomniano lokalizację %s, %s, %s w wymiarze %s tile.ebwizardry\:transportation_stone.forget=Zapomniano lokalizację %s, %s, %s w wymiarze %s
tile.ebwizardry\:transportation_stone.invalid=Najpierw musisz zrobić krąg z 8 kamieniami transportu! tile.ebwizardry\:transportation_stone.invalid=Najpierw musisz zrobić krąg z 8 kamieniami transportu!
tile.ebwizardry\:spectral_block.name=Blok Spektralny tile.ebwizardry\:spectral_block.name=Blok Spektralny
tile.ebwizardry\:runestone.name=Kamień Runiczny tile.ebwizardry\:fire_runestone.name=Kamień Runiczny
tile.ebwizardry\:runestone_pedestal.name=Pilar Runicznego Kamienia tile.ebwizardry\:ice_runestone.name=Kamień Runiczny
tile.ebwizardry\:lightning_runestone.name=Kamień Runiczny
tile.ebwizardry\:necromancy_runestone.name=Kamień Runiczny
tile.ebwizardry\:earth_runestone.name=Kamień Runiczny
tile.ebwizardry\:healing_runestone.name=Kamień Runiczny
tile.ebwizardry\:sorcery_runestone.name=Kamień Runiczny
tile.ebwizardry\:fire_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:ice_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:lightning_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:necromancy_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:earth_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:healing_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:sorcery_runestone_pedestal.name=Pilar Runicznego Kamienia
tile.ebwizardry\:thorns.name=Ciernie tile.ebwizardry\:thorns.name=Ciernie
tile.ebwizardry\:obsidian_crust.name=Obsydianowa Skorupa tile.ebwizardry\:obsidian_crust.name=Obsydianowa Skorupa
tile.ebwizardry\:dry_frosted_ice.name=Zaschły Lód tile.ebwizardry\:dry_frosted_ice.name=Zaschły Lód
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=Запомнил местопол
tile.ebwizardry\:transportation_stone.forget=Забыл местоположение %s, %s, %s в измерении %s tile.ebwizardry\:transportation_stone.forget=Забыл местоположение %s, %s, %s в измерении %s
tile.ebwizardry\:transportation_stone.invalid=Первое, что Вы должны сделать, это круг с 8-ю камнями перемещения! tile.ebwizardry\:transportation_stone.invalid=Первое, что Вы должны сделать, это круг с 8-ю камнями перемещения!
tile.ebwizardry\:spectral_block.name=Спектральный блок tile.ebwizardry\:spectral_block.name=Спектральный блок
tile.ebwizardry\:runestone.name=Рунный камень tile.ebwizardry\:fire_runestone.name=Рунный камень
tile.ebwizardry\:runestone_pedestal.name=Пьедестал из рунного камня tile.ebwizardry\:ice_runestone.name=Рунный камень
tile.ebwizardry\:lightning_runestone.name=Рунный камень
tile.ebwizardry\:necromancy_runestone.name=Рунный камень
tile.ebwizardry\:earth_runestone.name=Рунный камень
tile.ebwizardry\:healing_runestone.name=Рунный камень
tile.ebwizardry\:sorcery_runestone.name=Рунный камень
tile.ebwizardry\:fire_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:ice_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:lightning_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:necromancy_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:earth_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:healing_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:sorcery_runestone_pedestal.name=Пьедестал из рунного камня
tile.ebwizardry\:thorns.name=Шипы tile.ebwizardry\:thorns.name=Шипы
tile.ebwizardry\:obsidian_crust.name=Обсидиановая кора tile.ebwizardry\:obsidian_crust.name=Обсидиановая кора
tile.ebwizardry\:dry_frosted_ice.name=Сухой матовый лёд tile.ebwizardry\:dry_frosted_ice.name=Сухой матовый лёд
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=你记住了位于 %4$s 维度 %1
tile.ebwizardry\:transportation_stone.forget=你遗忘了位于 %4$s 维度 %1$s,%2$s,%3$s的传送坐标 tile.ebwizardry\:transportation_stone.forget=你遗忘了位于 %4$s 维度 %1$s,%2$s,%3$s的传送坐标
tile.ebwizardry\:transportation_stone.invalid=你必须用8个传送石围成一个圈! tile.ebwizardry\:transportation_stone.invalid=你必须用8个传送石围成一个圈!
tile.ebwizardry\:spectral_block.name=幽冥方块 tile.ebwizardry\:spectral_block.name=幽冥方块
tile.ebwizardry\:runestone.name=符石 tile.ebwizardry\:fire_runestone.name=符石
tile.ebwizardry\:runestone_pedestal.name=符石基座 tile.ebwizardry\:ice_runestone.name=符石
tile.ebwizardry\:lightning_runestone.name=符石
tile.ebwizardry\:necromancy_runestone.name=符石
tile.ebwizardry\:earth_runestone.name=符石
tile.ebwizardry\:healing_runestone.name=符石
tile.ebwizardry\:sorcery_runestone.name=符石
tile.ebwizardry\:fire_runestone_pedestal.name=符石基座
tile.ebwizardry\:ice_runestone_pedestal.name=符石基座
tile.ebwizardry\:lightning_runestone_pedestal.name=符石基座
tile.ebwizardry\:necromancy_runestone_pedestal.name=符石基座
tile.ebwizardry\:earth_runestone_pedestal.name=符石基座
tile.ebwizardry\:healing_runestone_pedestal.name=符石基座
tile.ebwizardry\:sorcery_runestone_pedestal.name=符石基座
tile.ebwizardry\:thorns.name=荆棘 tile.ebwizardry\:thorns.name=荆棘
tile.ebwizardry\:obsidian_crust.name=黑曜石层 tile.ebwizardry\:obsidian_crust.name=黑曜石层
tile.ebwizardry\:dry_frosted_ice.name=干燥霜冰 tile.ebwizardry\:dry_frosted_ice.name=干燥霜冰
@@ -11,8 +11,20 @@ tile.ebwizardry\:transportation_stone.remember=記憶座標位置 %s, %s, %s 於
tile.ebwizardry\:transportation_stone.forget=消除記憶座標位置 %s, %s, %s 於世界: %s tile.ebwizardry\:transportation_stone.forget=消除記憶座標位置 %s, %s, %s 於世界: %s
tile.ebwizardry\:transportation_stone.invalid=你必須先用8個傳送石圍成一圈! tile.ebwizardry\:transportation_stone.invalid=你必須先用8個傳送石圍成一圈!
tile.ebwizardry\:spectral_block.name=具現化方塊 tile.ebwizardry\:spectral_block.name=具現化方塊
tile.ebwizardry\:runestone.name=符文石 tile.ebwizardry\:fire_runestone.name=符文石
tile.ebwizardry\:runestone_pedestal.name=符文石座 tile.ebwizardry\:ice_runestone.name=符文石
tile.ebwizardry\:lightning_runestone.name=符文石
tile.ebwizardry\:necromancy_runestone.name=符文石
tile.ebwizardry\:earth_runestone.name=符文石
tile.ebwizardry\:healing_runestone.name=符文石
tile.ebwizardry\:sorcery_runestone.name=符文石
tile.ebwizardry\:fire_runestone_pedestal.name=符文石座
tile.ebwizardry\:ice_runestone_pedestal.name=符文石座
tile.ebwizardry\:lightning_runestone_pedestal.name=符文石座
tile.ebwizardry\:necromancy_runestone_pedestal.name=符文石座
tile.ebwizardry\:earth_runestone_pedestal.name=符文石座
tile.ebwizardry\:healing_runestone_pedestal.name=符文石座
tile.ebwizardry\:sorcery_runestone_pedestal.name=符文石座
tile.ebwizardry\:thorns.name=荊棘 tile.ebwizardry\:thorns.name=荊棘
tile.ebwizardry\:obsidian_crust.name=黑曜石殼 tile.ebwizardry\:obsidian_crust.name=黑曜石殼
tile.ebwizardry\:dry_frosted_ice.name=乾的結凍冰 tile.ebwizardry\:dry_frosted_ice.name=乾的結凍冰
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:earth_crystal"
"data": 2
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone", "item": "ebwizardry:earth_runestone",
"data": 2,
"count": 8 "count": 8
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:earth_crystal"
"data": 5
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone_pedestal", "item": "ebwizardry:earth_runestone_pedestal",
"data": 5,
"count": 2 "count": 2
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:fire_crystal"
"data": 5
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone", "item": "ebwizardry:fire_runestone",
"data": 5,
"count": 8 "count": 8
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:fire_crystal"
"data": 1
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone_pedestal", "item": "ebwizardry:fire_runestone_pedestal",
"data": 1,
"count": 2 "count": 2
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:healing_crystal"
"data": 1
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone", "item": "ebwizardry:healing_runestone",
"data": 1,
"count": 8 "count": 8
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:healing_crystal"
"data": 7
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone_pedestal", "item": "ebwizardry:healing_runestone_pedestal",
"data": 7,
"count": 2 "count": 2
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:ice_crystal"
"data": 7
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone", "item": "ebwizardry:ice_runestone",
"data": 7,
"count": 8 "count": 8
} }
} }
@@ -7,8 +7,7 @@
], ],
"key": { "key": {
"y": { "y": {
"item": "ebwizardry:magic_crystal", "item": "ebwizardry:ice_crystal"
"data": 2
}, },
"z": { "z": {
"type": "forge:ore_dict", "type": "forge:ore_dict",
@@ -16,8 +15,7 @@
} }
}, },
"result": { "result": {
"item": "ebwizardry:runestone_pedestal", "item": "ebwizardry:ice_runestone_pedestal",
"data": 2,
"count": 2 "count": 2
} }
} }
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:lightning_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:lightning_runestone",
"count": 8
}
}
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:lightning_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:lightning_runestone_pedestal",
"count": 2
}
}
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:necromancy_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:necromancy_runestone",
"count": 8
}
}
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:necromancy_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:necromancy_runestone_pedestal",
"count": 2
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 3
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone",
"data": 3,
"count": 8
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 4
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone",
"data": 4,
"count": 8
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 3
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone_pedestal",
"data": 3,
"count": 2
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 4
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone_pedestal",
"data": 4,
"count": 2
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 6
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone_pedestal",
"data": 6,
"count": 2
}
}
@@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:magic_crystal",
"data": 6
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:runestone",
"data": 6,
"count": 8
}
}
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"zyz",
"zzz"
],
"key": {
"y": {
"item": "ebwizardry:sorcery_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:sorcery_runestone",
"count": 8
}
}
@@ -0,0 +1,21 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"zzz",
"yyy",
"zyz"
],
"key": {
"y": {
"item": "ebwizardry:sorcery_crystal"
},
"z": {
"type": "forge:ore_dict",
"ore": "stone"
}
},
"result": {
"item": "ebwizardry:sorcery_runestone_pedestal",
"count": 2
}
}