Merge branch '1.8-Rewrite' of https://github.com/WayofTime/BloodMagic into 1.8-Rewrite

Conflicts:
	src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java
This commit is contained in:
Arcaratus 2015-11-02 21:35:23 -05:00
commit 4734f1207a
24 changed files with 549 additions and 96 deletions

2
.gitignore vendored
View file

@ -33,4 +33,6 @@ crash-reports/
Thumbs.db
usernamecache.json
options.txt
BloodMagic_Client.launch
BloodMagic_Server.launch

View file

@ -2,11 +2,8 @@ package WayofTime.bloodmagic;
import WayofTime.bloodmagic.api.util.helper.LogHelper;
import WayofTime.bloodmagic.network.AlchemicalWizardryPacketHandler;
import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.registry.ModEntities;
import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.registry.ModPotions;
import WayofTime.bloodmagic.proxy.CommonProxy;
import WayofTime.bloodmagic.registry.*;
import WayofTime.bloodmagic.util.handler.EventHandler;
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
import lombok.Getter;
@ -16,6 +13,7 @@ import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@ -67,9 +65,13 @@ public class BloodMagic {
}
@Mod.EventHandler
public void init(FMLPreInitializationEvent event) {
public void init(FMLInitializationEvent event) {
AlchemicalWizardryPacketHandler.init();
ModRituals.initRituals();
ModRituals.initImperfectRituals();
ConfigHandler.checkRituals();
proxy.init();
}

View file

@ -2,8 +2,12 @@ package WayofTime.bloodmagic;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.BlockStack;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.util.helper.RitualHelper;
import WayofTime.bloodmagic.registry.ModPotions;
import WayofTime.bloodmagic.util.Utils;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.block.Block;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.registry.GameRegistry;
@ -16,7 +20,9 @@ import java.util.List;
public class ConfigHandler {
public static Configuration config;
@Getter
@Setter
private static Configuration config;
// Teleposer
public static String[] teleposerBlacklisting;
@ -159,6 +165,9 @@ public class ConfigHandler {
vanillaPotionWaterBreathingEnabled = config.getBoolean("vanillaPotionWaterBreathingEnabled", category + ".toggle", true, "Enables the Water Breathing potion in Alchemy");
vanillaPotionWeaknessEnabled = config.getBoolean("vanillaPotionWeaknessEnabled", category + ".toggle", true, "Enables the Weakness potion in Alchemy");
category = "Rituals";
config.addCustomCategoryComment(category, "Ritual toggling");
category = "General";
config.addCustomCategoryComment(category, "General settings");
BloodMagicAPI.setLoggingEnabled(config.getBoolean("enableLogging", category, true, "Allows logging information to the console. Fatal errors will bypass this"));
@ -192,4 +201,9 @@ public class ConfigHandler {
teleposerBlacklist.add(new BlockStack(block, meta));
}
}
public static void checkRituals() {
RitualHelper.checkImperfectRituals(config, "WayofTime.bloodmagic.ritual.imperfect", "Rituals.imperfect");
config.save();
}
}

View file

@ -1,9 +1,11 @@
package WayofTime.bloodmagic.api.registry;
import WayofTime.bloodmagic.api.BlockStack;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import net.minecraft.block.Block;
import java.util.ArrayList;
@ -27,6 +29,17 @@ public class ImperfectRitualRegistry {
}
}
public static ImperfectRitual getRitualForBlock(BlockStack blockStack) {
for (ImperfectRitual imperfectRitual : getRegistry().values()) {
if (imperfectRitual.getRequiredBlock().equals(blockStack)) {
System.out.println(imperfectRitual.toString());
return imperfectRitual;
}
}
return null;
}
public static ImperfectRitual getRitualForId(String id) {
return registry.get(id);
}
@ -44,13 +57,22 @@ public class ImperfectRitualRegistry {
}
public static boolean ritualEnabled(ImperfectRitual imperfectRitual) {
return enabledRituals.get(imperfectRitual);
try {
return enabledRituals.get(imperfectRitual);
} catch (NullPointerException e) {
BloodMagicAPI.getLogger().error("Invalid Imperfect Ritual was called");
return false;
}
}
public static BiMap<String, ImperfectRitual> getRegistry() {
return HashBiMap.create(registry);
}
public static BiMap<ImperfectRitual, Boolean> getEnabledMap() {
return HashBiMap.create(enabledRituals);
}
public static ArrayList<String> getIds() {
return new ArrayList<String>(registry.keySet());
}

View file

@ -2,6 +2,7 @@ package WayofTime.bloodmagic.api.registry;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import java.util.ArrayList;
@ -43,13 +44,22 @@ public class RitualRegistry {
}
public static boolean ritualEnabled(Ritual ritual) {
return enabledRituals.get(ritual);
try {
return enabledRituals.get(ritual);
} catch (NullPointerException e) {
BloodMagicAPI.getLogger().error("Invalid Ritual was called");
return false;
}
}
public static BiMap<String, Ritual> getRegistry() {
return HashBiMap.create(registry);
}
public static BiMap<Ritual, Boolean> getEnabledMap() {
return HashBiMap.create(enabledRituals);
}
public static ArrayList<String> getIds() {
return new ArrayList<String>(registry.keySet());
}

View file

@ -1,15 +1,21 @@
package WayofTime.bloodmagic.api.ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public interface IMasterRitualStone extends IImperfectRitualStone {
public interface IMasterRitualStone {
String getOwner();
boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator);
void performRitual(World world, BlockPos pos, Ritual ritual);
void stopRitual();
void setCooldown(int cooldown);
int getCooldown();
@ -18,15 +24,11 @@ public interface IMasterRitualStone extends IImperfectRitualStone {
EnumFacing getDirection();
NBTTagCompound getCustomRitualTag();
void setCustomRitualTag(NBTTagCompound tag);
boolean areTanksEmpty();
int getRunningTime();
LocalRitualStorage getLocalStorage();
World getWorld();
void setLocalStorage(LocalRitualStorage storage);
BlockPos getPos();
}

View file

@ -1,28 +0,0 @@
package WayofTime.bloodmagic.api.ritual;
import WayofTime.bloodmagic.api.NBTHolder;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
/**
* This class is used to pass ritual-specific data into the RitualEffect from the containing Master Ritual Stone. This is basically used as auxiliary storage,
* for when simply storing to NBT becomes... difficult.
*/
@Getter
@Setter
public class LocalRitualStorage {
private BlockPos pos;
public void writeToNBT(NBTTagCompound tagCompound) {
tagCompound.setInteger(NBTHolder.NBT_COORDX, pos.getX());
tagCompound.setInteger(NBTHolder.NBT_COORDY, pos.getY());
tagCompound.setInteger(NBTHolder.NBT_COORDZ, pos.getZ());
}
public void readFromNBT(NBTTagCompound tagCompound) {
this.pos = new BlockPos(tagCompound.getInteger(NBTHolder.NBT_COORDX), tagCompound.getInteger(NBTHolder.NBT_COORDY), tagCompound.getInteger(NBTHolder.NBT_COORDZ));
}
}

View file

@ -1,5 +1,6 @@
package WayofTime.bloodmagic.api.ritual;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.minecraft.entity.player.EntityPlayer;
@ -9,6 +10,7 @@ import java.util.ArrayList;
@Getter
@RequiredArgsConstructor
@EqualsAndHashCode
public abstract class Ritual {
private final String name;
@ -32,10 +34,6 @@ public abstract class Ritual {
public abstract ArrayList<RitualComponent> getComponents();
public LocalRitualStorage getNewLocalStorage() {
return new LocalRitualStorage();
}
public void addOffsetRunes(ArrayList<RitualComponent> components, int offset1, int offset2, int y, EnumRuneType rune) {
components.add(new RitualComponent(new BlockPos(offset1, y, offset2), rune));
components.add(new RitualComponent(new BlockPos(offset2, y, offset1), rune));

View file

@ -1,11 +1,12 @@
package WayofTime.bloodmagic.api.ritual.imperfect;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public interface IImperfectRitualStone {
String getOwner();
boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player);
World getWorld();

View file

@ -1,19 +1,29 @@
package WayofTime.bloodmagic.api.ritual.imperfect;
import WayofTime.bloodmagic.api.BlockStack;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.minecraft.entity.player.EntityPlayer;
@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public abstract class ImperfectRitual {
private final String name;
private final BlockStack requiredBlock;
private final int activationCost;
private final boolean lightshow;
public ImperfectRitual(BlockStack requiredBlock, int activationCost) {
this(requiredBlock, activationCost, false);
public ImperfectRitual(String name, BlockStack requiredBlock, int activationCost) {
this(name, requiredBlock, activationCost, false);
}
public abstract boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player);
@Override
public String toString() {
return getName() + ":" + getRequiredBlock().toString() + "@" + getActivationCost();
}
}

View file

@ -1,7 +1,10 @@
package WayofTime.bloodmagic.api.util.helper;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap;
import net.minecraftforge.common.config.Configuration;
import sun.misc.Launcher;
@ -28,6 +31,14 @@ public class RitualHelper {
return RitualRegistry.getIds().get(previousIndex);
}
public static void checkImperfectRituals(Configuration config, String packageName, String category) {
checkRituals(config, packageName, category, ImperfectRitual.class, ImperfectRitualRegistry.enabledRituals);
}
public static void checkRituals(Configuration config, String packageName, String category) {
checkRituals(config, packageName, category, Ritual.class, RitualRegistry.enabledRituals);
}
/**
* Adds your Ritual to the {@link RitualRegistry#enabledRituals} Map.
* This is used to determine whether your effect is enabled or not.
@ -35,13 +46,16 @@ public class RitualHelper {
* The config option will be created as {@code B:ClassName=true} with a comment of
* {@code Enables the ClassName ritual}.
*
* Use {@link #}
*
* Should be safe to modify at any point.
*
* @param config - Your mod's Forge {@link Configuration} object.
* @param packageName - The package your Rituals are located in.
* @param category - The config category to write to.
*/
public static void checkRituals(Configuration config, String packageName, String category) {
@SuppressWarnings("unchecked")
private static void checkRituals(Configuration config, String packageName, String category, Class ritualClass, BiMap enabledMap) {
String name = packageName;
if (!name.startsWith("/"))
name = "/" + name;
@ -60,8 +74,9 @@ public class RitualHelper {
try {
Object o = Class.forName(packageName + "." + className).newInstance();
if (o instanceof Ritual)
RitualRegistry.enabledRituals.put((Ritual) o, config.get(category, className, true).getBoolean());
if (ritualClass.isInstance(o))
enabledMap.put(ritualClass.cast(o),
config.get(category, className, true).getBoolean());
} catch (ClassNotFoundException e) {
e.printStackTrace();

View file

@ -15,6 +15,26 @@ public class BlockAltar extends BlockContainer {
setCreativeTab(BloodMagic.tabBloodMagic);
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean isFullCube() {
return false;
}
@Override
public boolean isVisuallyOpaque() {
return false;
}
@Override
public int getRenderType() {
return 3;
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
// return new TileAltar();

View file

@ -1,6 +1,9 @@
package WayofTime.bloodmagic.block;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.BlockStack;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
@ -13,6 +16,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
@ -43,6 +47,21 @@ public class BlockRitualController extends BlockContainer {
list.add(new ItemStack(this, 1, i));
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
TileEntity tile = world.getTileEntity(pos);
if (getMetaFromState(state) == 1 && tile instanceof TileImperfectRitualStone) {
IBlockState determinerState = world.getBlockState(pos.up());
BlockStack determiner = new BlockStack(determinerState.getBlock(), determinerState.getBlock().getMetaFromState(determinerState));
return ((TileImperfectRitualStone) tile).performRitual(world, pos, ImperfectRitualRegistry.getRitualForBlock(determiner), player);
}
return false;
}
@Override
public int getRenderType() {
return 3;
@ -75,6 +94,6 @@ public class BlockRitualController extends BlockContainer {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return meta == 0 ? new TileMasterRitualStone() : null;
return meta == 0 ? new TileMasterRitualStone() : new TileImperfectRitualStone();
}
}

View file

@ -21,10 +21,11 @@ public class ConfigGui extends GuiConfig {
List<IConfigElement> list = new ArrayList<IConfigElement>();
// adds sections declared in ConfigHandler. toLowerCase() is used because the configuration class automatically does this, so must we.
list.add(new ConfigElement(ConfigHandler.config.getCategory("Potions".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("Teleposer Blacklist".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("Item/Block Blacklisting".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("General".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Potions".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Teleposer Blacklist".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Item/Block Blacklisting".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("General".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Rituals".toLowerCase())));
return list;
}

View file

@ -5,9 +5,9 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockRitualHome extends ItemBlock {
public class ItemBlockRitualController extends ItemBlock {
public ItemBlockRitualHome(Block block) {
public ItemBlockRitualController(Block block) {
super(block);
setHasSubtypes(true);

View file

@ -1,7 +1,12 @@
package WayofTime.bloodmagic.proxy;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.registry.ModBlocks;
import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.obj.OBJLoader;
public class ClientProxy extends CommonProxy {
@ -9,6 +14,9 @@ public class ClientProxy extends CommonProxy {
public void preInit() {
ModBlocks.initRenders();
ModItems.initRenders();
OBJLoader.instance.addDomain(BloodMagic.MODID);
ModelLoader.setCustomModelResourceLocation(InventoryRenderHelper.getItemFromBlock(ModBlocks.altar), 0, new ModelResourceLocation(BloodMagic.DOMAIN + "BlockAltar", "inventory"));
}
@Override

View file

@ -7,7 +7,9 @@ import WayofTime.bloodmagic.block.BlockBloodRune;
import WayofTime.bloodmagic.block.BlockLifeEssence;
import WayofTime.bloodmagic.block.BlockRitualController;
import WayofTime.bloodmagic.item.block.ItemBlockBloodRune;
import WayofTime.bloodmagic.item.block.ItemBlockRitualHome;
import WayofTime.bloodmagic.item.block.ItemBlockRitualController;
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
@ -32,14 +34,15 @@ public class ModBlocks
altar = registerBlock(new BlockAltar());
blood_rune = registerBlock(new BlockBloodRune(), ItemBlockBloodRune.class);
ritualStone = registerBlock(new BlockRitualController(), ItemBlockRitualHome.class);
ritualStone = registerBlock(new BlockRitualController(), ItemBlockRitualController.class);
initTiles();
}
public static void initTiles()
{
GameRegistry.registerTileEntity(TileImperfectRitualStone.class, BloodMagic.MODID + ":" + TileImperfectRitualStone.class.getSimpleName());
GameRegistry.registerTileEntity(TileMasterRitualStone.class, BloodMagic.MODID + ":" + TileMasterRitualStone.class.getSimpleName());
}
public static void initRenders()

View file

@ -0,0 +1,19 @@
package WayofTime.bloodmagic.registry;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight;
public class ModRituals {
public static ImperfectRitual imperfectNight;
public static void initRituals() {
}
public static void initImperfectRituals() {
imperfectNight = new ImperfectRitualNight();
ImperfectRitualRegistry.registerRitual(imperfectNight, imperfectNight.getName());
}
}

View file

@ -0,0 +1,29 @@
package WayofTime.bloodmagic.ritual.imperfect;
import WayofTime.bloodmagic.api.BlockStack;
import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
public class ImperfectRitualNight extends ImperfectRitual {
public ImperfectRitualNight() {
super("night", new BlockStack(Blocks.lapis_block), 5000, true);
}
@Override
public boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player) {
boolean retFlag = false;
if (!imperfectRitualStone.getWorld().isRemote) {
imperfectRitualStone.getWorld().addWeatherEffect(new EntityLightningBolt(imperfectRitualStone.getWorld(), imperfectRitualStone.getPos().getX(), imperfectRitualStone.getPos().getY() + 2, imperfectRitualStone.getPos().getZ()));
imperfectRitualStone.getWorld().setWorldTime((imperfectRitualStone.getWorld().getWorldTime() / 24000) * 24000 + 13800);
retFlag = true;
}
return retFlag;
}
}

View file

@ -0,0 +1,41 @@
package WayofTime.bloodmagic.tile;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class TileImperfectRitualStone extends TileEntity implements IImperfectRitualStone {
public TileImperfectRitualStone() {
}
// IImperfectRitualStone
@Override
public boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player) {
if (imperfectRitual != null && ImperfectRitualRegistry.ritualEnabled(imperfectRitual)) {
System.out.println(imperfectRitual.toString());
NetworkHelper.getSoulNetwork(player.getDisplayNameString(), world).syphonAndDamage(imperfectRitual.getActivationCost());
return imperfectRitual.onActivate(this, player);
}
return false;
}
@Override
public World getWorld() {
return super.getWorld();
}
@Override
public BlockPos getPos() {
return super.getPos();
}
}

View file

@ -5,9 +5,9 @@ import WayofTime.bloodmagic.api.event.RitualEvent;
import WayofTime.bloodmagic.api.network.SoulNetwork;
import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.LocalRitualStorage;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.RitualHelper;
import WayofTime.bloodmagic.item.ItemActivationCrystal;
import WayofTime.bloodmagic.util.ChatUtil;
import com.google.common.base.Strings;
@ -35,9 +35,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
private Ritual currentRitual;
private EnumFacing direction;
public LocalRitualStorage storage;
public NBTTagCompound customTag;
public TileMasterRitualStone() {
}
@ -59,23 +56,28 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
}
public void activateRitual(ItemStack activationCrystal, EntityPlayer activator) {
@Override
public boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator) {
activationCrystal = NBTHolder.checkNBT(activationCrystal);
String crystalOwner = activationCrystal.getTagCompound().getString(NBTHolder.NBT_OWNER);
Ritual ritual = null;
Ritual ritual = RitualRegistry.getRitualForId("");
if (!Strings.isNullOrEmpty(crystalOwner)) {
if (!Strings.isNullOrEmpty(crystalOwner) && ritual != null) {
if (activationCrystal.getItem() instanceof ItemActivationCrystal) {
int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal);
if (RitualHelper.canCrystalActivate(ritual, crystalLevel)) {
RitualEvent.RitualActivatedEvent event = new RitualEvent.RitualActivatedEvent(this, crystalOwner, ritual, activator, activationCrystal, crystalLevel);
RitualEvent.RitualActivatedEvent event = new RitualEvent.RitualActivatedEvent(this, crystalOwner, ritual, activator, activationCrystal, crystalLevel);
if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) {
ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent");
return;
if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) {
ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent");
return false;
}
}
}
}
return false;
}
@Override
@ -87,6 +89,11 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
}
}
@Override
public void stopRitual() {
}
@Override
public void setCooldown(int cooldown) {
this.cooldown = cooldown;
@ -107,16 +114,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
return direction;
}
@Override
public NBTTagCompound getCustomRitualTag() {
return customTag;
}
@Override
public void setCustomRitualTag(NBTTagCompound tag) {
this.customTag = tag;
}
@Override
public boolean areTanksEmpty() {
return false;
@ -127,16 +124,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
return activeTime;
}
@Override
public LocalRitualStorage getLocalStorage() {
return storage;
}
@Override
public void setLocalStorage(LocalRitualStorage storage) {
this.storage = storage;
}
@Override
public String getOwner() {
return owner;

View file

@ -0,0 +1,27 @@
{
"forge_marker": 1,
"defaults": {
"textures": { },
"model": "bloodmagic:BlockAltar.obj",
"custom": { "flip-v": true },
"transform": {
"translation": [ 0.05, -0.5, 0.05 ],
"scale": [ 0.1, 0.1, 0.1 ]
}
},
"variants": {
"normal": [{
}],
"inventory": [{
"transform": {
"translation": [ 0.05, -0.1, 0.05 ],
"scale": [ 0.07, 0.07, 0.07 ],
"gui": {
"translation": [ 0, -0.15, -0.03 ],
"scale": [ 1.04, 1.04, 1.04 ]
}
}
}]
}
}

View file

@ -0,0 +1,13 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Material__46
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd bloodmagic:models/altar

View file

@ -0,0 +1,238 @@
# Blender v2.76 (sub 0) OBJ File: ''
# www.blender.org
mtllib BlockAltar.mtl
o headusOBJexport002
v -4.500000 0.499699 7.000000
v 4.500000 0.499699 7.000000
v 4.017200 8.499999 6.248302
v -4.017200 8.499999 6.248302
v 6.937900 0.499699 4.499400
v 7.019900 0.499701 -4.499800
v 6.260000 8.500001 -4.017699
v 6.186800 8.500000 4.015902
v -4.017200 8.500001 -6.249599
v 4.017200 8.500001 -6.249599
v 4.500000 0.499701 -7.000000
v -4.500000 0.499701 -7.000000
v -6.248900 8.500000 4.016501
v -6.248900 8.500001 -4.062199
v -7.000000 0.499701 -4.549700
v -7.000000 0.499699 4.500000
v -5.643700 0.499701 -7.721900
v -7.698300 0.499701 -5.708200
v -6.996700 8.500001 -5.252799
v -5.192700 8.500001 -7.020998
v -5.200200 8.499999 7.007902
v -7.008600 8.499999 5.199602
v -7.710200 0.499699 5.651200
v -5.651300 0.499699 7.710100
v 5.651300 0.499699 7.710100
v 7.710200 0.499699 5.651200
v 7.008600 8.499999 5.199602
v 5.200200 8.499999 7.007902
v 7.710200 0.499701 -5.651300
v 5.651300 0.499701 -7.710200
v 5.200300 8.500001 -7.009199
v 7.008600 8.500001 -5.200899
v 1.791200 8.500000 3.281701
v -1.791000 8.500000 3.281701
v 3.285700 8.500000 -1.794999
v 3.285700 8.500000 1.787201
v -1.790600 8.500001 -3.289699
v 1.791200 8.500001 -3.289499
v -3.285500 8.500000 1.787201
v -3.285300 8.500000 -1.814699
v -1.284500 7.000000 2.059001
v -1.288900 7.000000 -2.066799
v -2.062600 7.000000 -1.303299
v -2.062700 7.000000 1.280801
v 1.284600 7.000000 2.059001
v 2.062900 7.000000 1.280801
v 2.062900 7.000000 -1.288499
v 1.284700 7.000000 -2.066699
vt -0.000000 0.265600
vt 0.203100 0.265600
vt 0.203100 0.500000
vt 0.000000 0.500000
vt 0.390600 0.265600
vt 0.593800 0.265600
vt 0.593800 0.500000
vt 0.390600 0.500000
vt 0.203100 0.234400
vt -0.000000 0.234400
vt -0.000000 0.000000
vt 0.203100 0.000000
vt 0.593800 0.234400
vt 0.390600 0.234400
vt 0.390600 -0.000000
vt 0.593800 0.000000
vt 0.250000 0.000000
vt 0.343800 0.000000
vt 0.343800 0.234400
vt 0.250000 0.234400
vt 0.734400 0.234400
vt 0.640600 0.234400
vt 0.640600 0.000000
vt 0.734400 -0.000000
vt 0.250000 0.265600
vt 0.343800 0.265600
vt 0.343800 0.500000
vt 0.250000 0.500000
vt 0.640600 0.265600
vt 0.734400 0.265600
vt 0.734400 0.500000
vt 0.640600 0.500000
vt 0.093800 0.578100
vt 0.031300 0.640600
vt 0.000000 0.609400
vt 0.062500 0.546900
vt 0.031300 0.906300
vt 0.093800 0.968800
vt 0.062500 1.000000
vt 0.000000 0.937500
vt 0.375000 0.968800
vt 0.437500 0.906300
vt 0.468800 0.937500
vt 0.406300 1.000000
vt 0.437500 0.640600
vt 0.375000 0.578100
vt 0.406300 0.546900
vt 0.468800 0.609400
vt 0.909700 0.627000
vt 0.852200 0.704200
vt 0.759300 0.704500
vt 0.701200 0.627800
vt 0.968900 0.893100
vt 0.891500 0.835700
vt 0.891100 0.742800
vt 0.966200 0.684700
vt 0.702500 0.952000
vt 0.760000 0.875000
vt 0.852900 0.874700
vt 0.910900 0.951200
vt 0.643600 0.685900
vt 0.720700 0.743500
vt 0.721000 0.836900
vt 0.644400 0.895500
vt 0.988400 0.923700
vt 0.941700 0.970800
vt 0.781300 0.265600
vt 0.781300 0.500000
vt 0.672100 0.972200
vt 0.625100 0.926500
vt 0.623700 0.655300
vt 0.670500 0.608200
vt 0.781300 -0.000000
vt 0.781300 0.234400
vt 0.940300 0.607200
vt 0.987400 0.653900
vt 0.772500 0.736200
vt 0.772800 0.843200
vt 0.752700 0.823500
vt 0.752400 0.756500
vt 0.839200 0.736000
vt 0.859500 0.756100
vt 0.859700 0.822700
vt 0.839600 0.843000
vn 0.000000 0.093500 0.995600
vn 0.995500 0.094000 0.009100
vn 0.000000 0.093400 -0.995600
vn -0.995600 0.093500 0.000000
vn -0.101800 -0.554900 -0.825700
vn -0.823200 -0.555100 -0.118900
vn -0.990700 0.094300 -0.098300
vn -0.076900 0.091300 -0.992800
vn -0.088200 0.093800 0.991700
vn -0.991900 0.091900 0.087200
vn -0.824800 -0.554700 0.109900
vn -0.110600 -0.555300 0.824300
vn 0.109900 -0.554700 0.824800
vn 0.827400 -0.553300 0.096000
vn 0.993300 0.092700 0.069000
vn 0.087200 0.092000 0.991900
vn 0.823800 -0.555200 -0.114500
vn 0.110600 -0.555300 -0.824300
vn 0.088200 0.093700 -0.991700
vn 0.991600 0.092100 -0.090800
vn 0.223200 -0.908300 -0.353700
vn -0.359200 -0.907600 0.217500
vn -0.356900 -0.907800 -0.220200
vn 0.220600 -0.908000 0.356100
vn -0.220100 -0.907800 0.356900
vn 0.343700 -0.910100 -0.231300
vn 0.361700 -0.906700 0.216800
vn -0.220600 -0.908000 -0.356100
vn 0.000000 1.000000 0.000000
vn -0.538100 0.043900 0.841700
vn 0.546500 0.042800 -0.836400
vn -0.841700 0.043800 -0.538100
vn -0.539700 0.046300 -0.840600
vn 0.845600 0.044700 0.531900
vn -0.845900 0.047000 0.531300
vn 0.539700 0.046400 0.840600
vn 0.187200 0.872200 -0.452000
vn 0.185600 0.872300 0.452300
vn 0.451600 0.872000 0.188800
vn 0.452000 0.872200 -0.187200
vn -0.187200 0.872200 -0.452000
vn 0.287000 0.661600 -0.692800
vn -0.287000 0.661600 -0.692800
vn -0.451900 0.872200 -0.187200
vn -0.692800 0.661600 -0.286900
vn -0.451900 0.872200 0.187200
vn -0.692800 0.661600 0.286900
vn -0.187200 0.872200 0.451900
vn -0.287000 0.661600 0.692700
vn 0.284800 0.661100 0.694100
vn 0.691400 0.662100 0.289100
vn 0.692800 0.661600 -0.286900
vn 0.820700 0.042600 -0.569800
usemtl Material__46
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 6/6/2 7/7/2 8/8/2
f 9/9/3 10/10/3 11/11/3 12/12/3
f 13/13/4 14/14/4 15/15/4 16/16/4
s 1
f 17/17/5 18/18/6 19/19/7 20/20/8
f 21/21/9 22/22/10 23/23/11 24/24/12
f 25/25/13 26/26/14 27/27/15 28/28/16
f 29/29/17 30/30/18 31/31/19 32/32/20
f 12/33/21 15/34/22 18/35/6 17/36/5
f 16/37/23 1/38/24 24/39/12 23/40/11
f 2/41/25 5/42/26 26/43/14 25/44/13
f 6/45/27 11/46/28 30/47/18 29/48/17
f 3/49/29 33/50/29 34/51/29 4/52/29
f 7/53/29 35/54/29 36/55/29 8/56/29
f 9/57/29 37/58/29 38/59/29 10/60/29
f 13/61/29 39/62/29 40/63/29 14/64/29
f 9/57/29 14/64/29 40/63/29 37/58/29
f 4/52/29 34/51/29 39/62/29 13/61/29
f 8/56/29 36/55/29 33/50/29 3/49/29
f 10/60/29 38/59/29 35/54/29 7/53/29
f 25/25/13 28/28/16 3/3/30 2/2/25
f 10/60/29 7/53/29 32/65/29 31/66/29
f 17/17/5 20/20/8 9/9/31 12/12/21
f 23/23/11 22/22/10 13/13/32 16/16/23
f 11/67/28 10/68/33 31/31/19 30/30/18
f 29/29/17 32/32/20 7/7/34 6/6/27
f 14/64/29 9/57/29 20/69/29 19/70/29
f 15/15/22 14/14/35 19/19/7 18/18/6
f 4/52/29 13/61/29 22/71/29 21/72/29
f 1/73/24 4/74/36 21/21/9 24/24/12
f 8/56/29 3/49/29 28/75/29 27/76/29
f 41/77/37 42/78/38 43/79/39 44/80/40
f 45/81/41 41/77/37 34/51/42 33/50/43
f 46/82/44 45/81/41 33/50/43 36/55/45
f 47/83/46 46/82/44 36/55/45 35/54/47
f 48/84/48 47/83/46 35/54/47 38/59/49
f 42/78/38 48/84/48 38/59/49 37/58/50
f 43/79/39 42/78/38 37/58/50 40/63/51
f 44/80/40 43/79/39 40/63/51 39/62/52
f 41/77/37 44/80/40 39/62/52 34/51/42
f 48/84/48 45/81/41 46/82/44 47/83/46
f 45/81/41 48/84/48 42/78/38 41/77/37
f 16/37/23 15/34/22 12/33/21 1/38/24
f 2/41/25 11/46/28 6/45/27 5/42/26
f 11/46/28 2/41/25 1/38/24 12/33/21
f 5/5/26 8/8/53 27/27/15 26/26/14